我制作了预部署脚本,该脚本会自动获取databasX service_broker_guid并将其放入变量中。之后,我在路由DDL脚本中使用此变量:
CREATE ROUTE [ServiceBroker_Route]
WITH SERVICE_NAME = '//TargetDB/SourceDB/UpdatedJobAssignments_TargetService',
BROKER_INSTANCE = '$(TargetDBGUID)',
ADDRESS = 'tcp://$(TargetDB_SERVER):4022';
但是,当我发布时,我收到以下警告:
对象 [ServiceBroker_Route] 已存在于具有不同定义的数据库中,并且不会被更改。
为什么?
您可以在预部署脚本中执行存在性检查,并根据结果执行创建路由或更改路由语句。
if (not Exists(select * from sys.routes where name = 'ServiceBroker_Route'))
CREATE ROUTE [ServiceBroker_Route]
WITH SERVICE_NAME = '//TargetDB/SourceDB/UpdatedJobAssignments_TargetService',
BROKER_INSTANCE = '$(TargetDBGUID)',
ADDRESS = 'tcp://$(TargetDB_SERVER):4022';
else
ALTER ROUTE [ServiceBroker_Route]
WITH SERVICE_NAME = '//TargetDB/SourceDB/UpdatedJobAssignments_TargetService',
BROKER_INSTANCE = '$(TargetDBGUID)',
ADDRESS = 'tcp://$(TargetDB_SERVER):4022';