有利的是,当我订阅一个事件(通过sp_CreateEvent
)时,该事件的创建级别是什么?每个连接?每个客户?数据库范围?
该应用程序是我有一个长期运行的应用程序偶尔会因错误重置广告连接。在创建新连接时,除了重新订阅(sp_CreateEvent
)之外,还需要重新创建(sp_WaitForEvent
)吗?
此外,有没有办法检查我的给定连接/应用程序/存在的任何级别事件是否已存在某个事件?
答案 0 :(得分:2)
事件是在每个数据库级别创建的,但是任何希望等待事件的连接都必须使用sp_CreateEvent
创建事件。可以认为它更像是sp_CreateEvent
注册一个事件的连接,而不是创建它。
如果所有连接都希望等待,则必须创建/注册该事件,因此如果连接因错误而死亡并重新创建,则必须再次调用sp_CreateEvent
和sp_WaitForEvent
。
无法简单地检查是否存在事件。检查的最佳方法可能是调用sp_WaitForEvent
并检查错误。如果要立即返回,请为超时指定0。您也可以致电sp_CreateEvent
或sp_DropEvent
并检查错误,但如果事件存在与否,您可能会产生意想不到的后果。
在我们的在线文档中阅读有关events的更多信息。