我正在编写一个 C# 应用程序,它与数据库一起使用并每月创建一个新数据库。
用户可以通过 SQL Management Studio 或其他方式分离和附加旧数据库。
我试图弄清楚如何监听 sql server 事件(如果它们存在)并捕捉数据库何时被附加或分离。
当attach
操作发生时,我的应用程序必须检查数据库并将表模式更新到最新版本。
我也在学习 SQL SMO,并认为这个库会向我展示事件侦听器,但我找不到它们。
当然,我可以运行一个线程或计时器,每隔几秒钟检查一次新数据库。我已经尝试过并运行SQLServer.Databases.Refresh()
更新数据库列表,然后我可以迭代和使用。
但是有没有更简单的方法来实现这一点?也许有像OnDatabaseAttach
某处这样的事件?
编辑
感谢elsausmc将我引向正确的方向。我做了一点搜索ServerEventSet
,发现了这个页面。
我做了一个快速测试,结果证明,它ServerEvent.CreateDatabase
在创建或附加数据库时会启动,但ServerEvent.DropDatabase
在分离时不会启动。可能是其他一些事件。那是我接下来要了解的。谢谢 :)
一直在谷歌上搜索 10 多个不同的短语,但从未想出简单的smo server events
. 傻我。