审计链接服务器

上个月,我在#sqlhelp上注意到来自@SQLPrincess的此推文,询问是否有办法找出链接服务器发生了什么:

审计链接服务器

简短的答案是,SQL Server默认情况下不跟踪此信息。
您需要先审核链接服务器的修改,然后再进行修改。

我尽力回答,建议使用SQL审核:

审计链接服务器

我建议针对该系统进行审核。
服务器表。
但这是错误的方法。
正确的方法是检查用于创建,更改或删除链接服务器的系统存储过程。

这是可能影响sys的系统存储过程的列表。
服务器表:

  • sp_addlinkedserver

  • sp_addserver

  • sp_dropserver

  • sp_addlinkedsrvlogin

  • sp_droplinkedsrvlogin

  • sp_serveroption

  • sp_setnetname

我们的目标是跟踪谁以任何方式添加,删除或修改了链接服务器,以及何时进行操作。
SQL审核非常适合跟踪这些事件,但是您需要手动配置此审核。

启动并运行审核非常简单。
首先,我们将创建服务器审核对象。
该对象将告诉SQL Server在何处以及如何存储捕获的审核日志事件。
这是一个入门的快速版本,我们将创建一个名为“ LinkedServer”的服务器审核:

服务器审核存在并且正在运行。
接下来,我们创建一个名为LinkedServerMaster的数据库规范审核。
我们将跟踪前面列出的系统存储过程的EXECUTE语句:

好的,审计对象就位,因此我们接下来创建一个链接服务器。
注意,我正在使用SQL 2012实例进行审核并连接到SQL2016实例:

审计链接服务器

现在,让我们检查审核日志,看看是否有任何结果(单击放大):

syncnavigator

审计链接服务器

成功!
我们已经捕获了有关创建链接服务器的详细信息,以及设置的选项和创建的登录名。

SQL Audit是捕获有关谁在何时更改您的实例以及何时进行更改的详细信息的好方法。
但是,如上所述,在发生任何链接服务器问题之前,必须先配置审核。
如果您对此审核感兴趣,建议您在安装SQL Server之后立即配置审核。