我有一台 SQL 机器想要停用。在停用之前,我想了解所有可能依赖该机器的应用程序,而不是直接关闭它然后听别人尖叫。
做这个的最好方式是什么?
我知道我可以运行 SQL 跟踪一段时间来获取登录信息等 - 还有其他方法吗?
我想了解尽可能多的有关调用者的信息,包括发出请求的 IP 地址或机器名称、应用程序名称、凭据。我最想知道的是,是否有多个应用程序可能在单个机器上运行,并使用类似的凭据进行调用。我还希望能够知道是否有 2 个以上的应用程序(例如),而不是它们看起来像一个。
如果 SQL Server 本身不能提供此功能,那么还有其他服务器级别的工具可供我使用吗?
答案1
您可能想看看 WireShark。您可以将其安装在 SQL 框上,并监视传入 SQL 服务器的所有请求。我会将 wireshark 中的过滤器缩小到仅在您的 SQL 端口上发出请求的内容。我不确定您希望它运行多长时间 - 但一旦完成,您就可以获取该跟踪并通过过滤器对其进行查询以返回诸如不同的 IP 等信息...
答案2
我认为您运行跟踪一段时间的想法是目前最好的主意。没有其他方法可以明确找到此信息 - 您无法知道哪些客户端“可能”连接,您只能看到哪些客户端“确实”连接。
有些事情也许能帮助你猜测:
- 列出所有数据库。尝试找出可能使用它们的应用程序。
- 列出所有 SQL 登录名。这可能有助于您理解上述观点。如果每个人都以 SA 身份连接,那么这就是这不是一个好主意的原因之一。
- 检查您的所有文档 - 良好的文档将防止这种情况再次发生,这一点再怎么强调也不为过。
此外,当您停止使用时:只需在关闭它之前拔掉 LAN 电缆一周即可。然后,如果有人确实需要它,只需 1 秒钟就可以修复它,您不会冒任何风险,例如旧磁盘拒绝再次旋转。当然,在拔掉它之前,请备份整个该死的东西。
答案3
什么 SQL 版本?
在 SQL 2005 之后,您可以创建一个登录触发器并将所有登录事件记录到表中。事件数据() 和sys.dm_exec_connections将包含您正在寻找的部分(如果不是全部)详细信息。