我制作了预部署脚本,该脚本自动获取databasX service_broker_guid并将其放入变量中。之后,我在ROUTE DDL脚本中使用此变量:
CREATE ROUTE [ServiceBroker_Route]
WITH SERVICE_NAME = '//TargetDB/SourceDB/UpdatedJobAssignments_TargetService',
BROKER_INSTANCE = '$(TargetDBGUID)',
ADDRESS = 'tcp://$(TargetDB_SERVER):4022';
然而,当我发布时,我收到以下警告:
对象[ServiceBroker_Route]已存在于具有不同定义的数据库中,不会被更改。
为什么?
答案 0 :(得分:0)
您可以在预部署脚本中执行存在检查,并根据结果执行CREATE ROUTE或ALTER 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';