0

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

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

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

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

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

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

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

编辑

感谢elsausmc将我引向正确的方向。我做了一点搜索ServerEventSet,发现了这个页面

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

一直在谷歌上搜索 10 多个不同的短语,但从未想出简单的smo server events. 傻我。

4

1 回答 1

1

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

于 2016-04-18T16:53:03.017 回答