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



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

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

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

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

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

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

但是,有没有一种更简单的方法可以实现这一点?也许某个地方有OnDatabaseAttach这样的活动?

编辑

感谢elsausmc指导我朝着正确的方向前进。我在ServerEventSet上搜索了一下,发现了这个页面。

我做了一个快速测试,结果发现,当数据库创建或附加时,ServerEvent.CreateDatabase确实会启动,但ServerEvent.DropDatabase不会在分离时启动。也许是其他事件。这是我下一步要知道的。谢谢:)

我在谷歌上搜索了10多个不同的短语,从来没有想出过smo server events这样简单的东西。愚蠢的我。

也许SMO中没有Attach/Detach,它包含在CREATE和DROP中?服务器事件集。CreateDatabase和ServerEventSet。DropDatabase并处理事件?对不起,如果你已经调查过了。

最新更新