我正在编写一个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并处理事件?对不起,如果你已经调查过了。