目前,我正在使用:
SELECT * FROM sys.service_message_types
要列出Service Broker消息类型,请执行以下操作。但是,我该如何删除所有消息类型呢?
fdbelqdn1#
下面的示例使用model数据库作为排除系统消息类型的引用,删除当前数据库中的所有用户消息类型。
model
注意:如果合同使用该类型,则DROP将失败。绑定到该类型并间接引用SB对象(即服务)的合同需要首先删除。
DROP
DECLARE @SQL nvarchar(MAX);SELECT @SQL = STRING_AGG(N'DROP MESSAGE TYPE ' + QUOTENAME(current_db.name), ';')FROM sys.service_message_types AS current_dbLEFT JOIN model.sys.service_message_types AS model_db ON model_db.message_type_id = current_db.message_type_idWHERE model_db.message_type_id IS NULL;EXECUTE sp_executesql @SQL;
DECLARE @SQL nvarchar(MAX);
SELECT @SQL = STRING_AGG(N'DROP MESSAGE TYPE ' + QUOTENAME(current_db.name), ';')
FROM sys.service_message_types AS current_db
LEFT JOIN model.sys.service_message_types AS model_db ON
model_db.message_type_id = current_db.message_type_id
WHERE model_db.message_type_id IS NULL;
EXECUTE sp_executesql @SQL;
1条答案
按热度按时间fdbelqdn1#
下面的示例使用
model
数据库作为排除系统消息类型的引用,删除当前数据库中的所有用户消息类型。注意:如果合同使用该类型,则
DROP
将失败。绑定到该类型并间接引用SB对象(即服务)的合同需要首先删除。