如何跟踪登录、连接、用户帐户、查询等?

Mar*_*ice 5 sql-server

我是一名 BI 人员,被要求介入并假装我是一名 DBA。我不是数据库方面的新手,而是管理类型方面的新手。

我们有一个即将退役的 SQL Server 数据库。我被要求确定谁在使用服务器、正在使用的数据库以及正在运行的查询。

到目前为止,我已经创建了一个表来跟踪服务器登录以及检查连接数,如@ http://www.mssqltips.com/sqlservertip/3171/identify-sql-server-databases-that-are-no -使用时间更长/

但是,一旦我获得了这些信息,我就被要求跟踪:

  • 用于连接到服务器的用户帐户或凭据
  • 被查询的数据库
  • 建立连接的 IP 地址或 DNS 名称
  • 正在使用的 SQL

他们想具体了解谁在使用服务器上的任何数据库,以便他们可以确定需要迁移哪些数据库以及在迁移数据库时需要联系谁。

任何帮助是极大的赞赏!

Kin*_*hah 6

我建议您server side trace为您的整个业务生命周期运行一个- 。可能存在某些报告在月末或季度末运行的情况。

因此,您将需要在服务器端跟踪中11,13,16,19,33,37,61,162使用这些列进行以下事件1,6,8,10,11,12,14,27,35,40

您可以过滤掉不需要使用的东西sp_trace_setevent(请注意,它已宣布已弃用)。

或者,您可以使用扩展事件 - 跟踪 SQL Server 数据库使用情况

注意:目前在我的环境中,我使用的是服务器端跟踪,它的影响非常小。另外,我有一份工作将探查器信息转储到表中进行分析。

您可以使用下表结构来加载跟踪数据:

CREATE TABLE [dbo].[login_trace](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [ServerName] [varchar](300) NULL,
    [HostName] [varchar](300) NULL,
    [ApplicationName] [varchar](300) NULL,
    [DatabaseName] [varchar](200) NULL,
    [LoginName] [varchar](100) NULL,
    [StartTime] [datetime] NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

您可以根据自己的要求进行调整。

  • @Mark-DBAApprentice 我建议从一开始就遵循最佳实践。探查器跟踪具有更高的影响 - [性能影响:探查器跟踪与服务器端 SQL 跟踪](http://sqlblog.com/blogs/linchi_shea/archive/2007/08/01/trace-profiler-test.aspx) . 您可以做的是让服务器端跟踪运行,一旦达到某个阈值(例如 200MB),就将其包装起来并开始一个新的跟踪。此外,您还可以使用 [使用 WMI 警报导入 SQL Server 默认跟踪事件](http://www.mssqltips.com/sqlservertip/3183/using-wmi-alerts-to-import-sql-server-default-trace-事件/)。 (2认同)