如何订阅数据库 attach/detach 事件?

How to subscribe to Database attach/detach events?

我正在编写一个 C# 应用程序,它使用数据库并每月创建一个新数据库。

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

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

当发生 attach 操作时,我的应用程序必须检查数据库并将 table 架构更新到最新版本。

我也在学习 SQL SMO,并认为这个库会向我提供事件侦听器,但我找不到它们。

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

但是有没有更简单的方法来实现这一点?也许某处有类似 OnDatabaseAttach 的事件?

编辑

谢谢 elsausmc 指引我正确的方向。 我在 ServerEventSet 上做了一些搜索,发现了 this page.

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

谷歌搜索了 10 多个不同的短语,但从未想出像 smo server events 这样简单的词组。傻我。

也许 SMO 中没有 Attach/Detach,它包含在 CREATE 和 DROP 中? ServerEventSet.CreateDatabase 和 ServerEventSet.DropDatabase 并处理事件?对不起,如果你已经看过这个。