SQL Server:跟踪所有连接/断开连接

car*_*reo 3 sql-server-2008 sql-server sql-server-2008-r2

我有一个 Microsoft SQL Server 2008r2 SP1。

我需要知道哪些用户连接到数据库和断开连接。

理想情况下,我想要一个(日期时间、用户名、连接/断开连接)列表。

这可以使用扩展事件来完成吗?或者,还有更好的方法?

Cra*_*ein 6

以下是我用于审核登录和注销的一些选项的概要。我还没有机会将扩展事件用于审计目的。下面,我将使用 SQL Server 跟踪和 SQL Server 审计快速描述跟踪登录和注销事件。您可能最终会设置后台服务器跟踪,下面将对其进行简要介绍。如果您需要我进一步详细说明,请随时询问。

默认跟踪

默认跟踪是一种无需进行任何更改即可审核服务器上的活动的方法。此处提供了有关您可以从默认跟踪中获得什么的帖子。

服务器跟踪

如果您只是在寻找登录/注销信息,您还可以创建自己的服务器跟踪,以使用 SQL Server 探查器审核登录和注销。只需创建一个新的跟踪,然后将其导出为 SQL Server 跟踪定义文件。

  1. 打开 SQL Server Profiler
  2. 使用空白模板创建新跟踪
  3. 转到事件选择选项卡
  4. 在安全审计下,选中审计登录和审计注销

运行您的跟踪,停止它,然后在文件下,您可以将您的跟踪导出为 SQL Server 跟踪定义文件。然后,您可以在后台运行该跟踪并将其保存到一个文件中,该文件稍后可以导入到 SQL Server 表中。

分析器创建的示例服务器 Trace 的一部分:

-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5 

exec @rc = sp_trace_create @TraceID output, 0, N'InsertFileNameHere', @maxfilesize, NULL 
if (@rc != 0) goto error

-- Client side File and Table cannot be scripted

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 14, 1, @on
exec sp_trace_setevent @TraceID, 14, 9, @on
exec sp_trace_setevent @TraceID, 14, 2, @on
exec sp_trace_setevent @TraceID, 14, 66, @on
exec sp_trace_setevent @TraceID, 14, 10, @on
.....
-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish
Run Code Online (Sandbox Code Playgroud)

这是我从捕获这些项目中得到的输出:

在此处输入图片说明

可以将服务器跟踪转换为扩展的事件会话,这在此处进行了详细描述。

服务器审计

还有服务器审计,它允许您跟踪和监视数据库/服务器级别的事件。审核可能仅在企业版和数据中心版中可用。我似乎无法从 Books Online 中找到与此相反的特定文章。

USE MASTER
GO

CREATE SERVER AUDIT audit_test                                           
TO FILE (FILEPATH = 'D:\Audit')
GO


CREATE SERVER AUDIT SPECIFICATION audit_test_spec       
FOR SERVER AUDIT [audit_test]
ADD (FAILED_LOGIN_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP)
WITH (STATE=ON)
GO
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过转到“安全”->“审核”来查看 SSMS 中的服务器审核事件。然后使用上下文菜单,您可以选择查看审核日志以查看活动。

在此处输入图片说明

在此处输入图片说明

有关审核的更多信息,您可以在此处找到更多信息:

创建服务器审计 (Transact-SQL)

创建服务器审计规范 (Transact-SQL)

创建数据库审计规范 (Transact-SQL)