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

时间:2015-04-15 11:40:46

标签: sql-server sql-server-2008 sql-server-2012 sql-server-data-tools service-broker

我制作了预部署脚本,该脚本自动获取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]已存在于具有不同定义的数据库中,不会被更改。

为什么?

1 个答案:

答案 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';