对象 [ServiceBroker_Route] 已存在于具有不同定义的数据库中,并且不会被更改



我制作了预部署脚本,该脚本会自动获取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';

最新更新