我正在编写一个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
那样简单的内容。傻我。
答案 0 :(得分:1)
也许在SMO中没有附加/分离,它包含在CREATE和DROP中? ServerEventSet.CreateDatabase和ServerEventSet.DropDatabase并处理事件?对不起,如果您已经对此进行了调查。