如何订阅数据库附加/分离事件?

时间:2016-04-18 15:16:58

标签: c# sql-server sql-server-2008-r2 sql-smo

我正在编写一个C#应用程序,它与数据库一起工作,并按月创建一个新的数据库。

用户可以通过SQL Management Studio或其他方式分离和附加旧数据库。

我正在试图弄清楚如何监听sql server事件(如果它们存在)并在数据库被附加或分离时捕获。

attach操作发生时,我的应用程序必须检查数据库并将表模式更新为最新版本。

我也在学习SQL SMO,并且认为这个库会向我展示事件监听器,但我找不到它们。

当然,我可以运行一个线程或一个计时器,它会每隔几秒检查一次新的数据库。我已经尝试过并运行SQLServer.Databases.Refresh()更新数据库列表,然后我可以迭代并使用它。

但有没有更简单的方法来实现这一目标?也许在某个地方有OnDatabaseAttach这样的事件?

修改

感谢 elsausmc 指导我走向正确的方向。 我在ServerEventSet上进行了一些搜索,遇到this page

我做了一个快速测试,事实证明,ServerEvent.CreateDatabase在创建或附加数据库时会启动,但ServerEvent.DropDatabase在分离时不会触发。也许可能是其他一些事件。那是我接下来要找的。谢谢:)

使用10多个不同的短语进行Google搜索,并且从未想出过像smo server events那样简单的内容。傻我。

1 个答案:

答案 0 :(得分:1)

也许在SMO中没有附加/分离,它包含在CREATE和DROP中? ServerEventSet.CreateDatabase和ServerEventSet.DropDatabase并处理事件?对不起,如果您已经对此进行了调查。