Asp.net 数据库架构更改时对SqlCacheDependency和代理服务的影响

Asp.net 数据库架构更改时对SqlCacheDependency和代理服务的影响,asp.net,sql-server,service-broker,sqlcachedependency,Asp.net,Sql Server,Service Broker,Sqlcachedependency,我正在创建一个具有Sql缓存依赖项的应用程序 为此,我通过 Alter database test ENABLE_BROKER 在我向数据库添加两个新表之后 但是我发现我无法为我添加的新表获得任何通知服务 连我都用 Alter datatbase test New_Broker 此命令继续运行,因此我取消它而未成功 你能具体说明我遗漏了什么吗 任何帮助都将被告知您似乎在问两个问题: 如何防止SET ENABLE_BROKER挂起 ALTER DATABASE[YourDBName]设置启用即

我正在创建一个具有Sql缓存依赖项的应用程序

为此,我通过

Alter database test ENABLE_BROKER
在我向数据库添加两个新表之后

但是我发现我无法为我添加的新表获得任何通知服务

连我都用

Alter datatbase test New_Broker
此命令继续运行,因此我取消它而未成功

你能具体说明我遗漏了什么吗


任何帮助都将被告知

您似乎在问两个问题:

  • 如何防止SET ENABLE_BROKER挂起

    ALTER DATABASE[YourDBName]设置启用即时回滚的\u代理

  • 当模式更改时,ServiceBroker能否通知您

  • 通知仅适用于现有表。这可能会导致您尝试尝试对SysSt表登记依赖项,但在查询通知中不允许使用系统视图和表。

    您应该能够通过设置一个DDL触发器来解决这个问题,该触发器插入到一个特殊的表中,然后对该表发出查询。例如:

    CREATE TRIGGER [MyTrigger] ON DATABASE AFTER CREATE_TABLE AS ...
    

    这些ALTER DATABASE命令需要数据库锁。在运行数据库之前,请使用“活动监视器”检查数据库中是否没有其他打开的连接,否则他们将等待其他连接关闭。@webturner这是我真的不知道的事情。您还可以指定如何锁定数据库吗?命令本身进行锁定,您不需要这样做。但是,如果数据库上正在运行其他任何东西,它将无法获得锁(将等待),因此请使用活动监视器(msdn.microsoft.com/en us/library/ms175518.aspx)进行检查。