2014-04-21 36 views
1

我想审核我们的SQL服务器的安全性。我试图在数据库上运行跟踪以获取登录和访问数据库的用户。但是,如果查询是从其他数据库运行的,则不会生成任何登录事件。SQL Server:跟踪数据库活动或登录完全合格的表查询

例子:我试图跟踪登录为[Database2]

Use [Database1]; 
Go 

SELECT * FROM [Database2].[dbo].[Table] 

但没有Database2下登录的跟踪事件。

我们的环境是SQL Server 2008 R2标准版。任何建议,将不胜感激。

回答

0

这是因为数据库用户不能登录到SQL Server。 SQL Server具有称为“登录名”的安全实体,用于登录到SQL Server实例。这些登录名是来自Active Directory的Windows登录名或SQL Server登录名,您可以定义并指定用户名和密码。数据库“用户”是在数据库级别定义的。用户不会登录到任何地方,他们甚至没有密码。这个想法是,当连接到特定数据库时,SQL Server“登录”映射到特定的数据库“用户”。 对不同数据库的查询不会生成登录,因为登录是服务器范围内的事件,而不是数据库范围内的事件。

例如见here

+0

我明白了。那么在完全限定的表名称期间,没有办法找出谁正在访问哪个数据库?目前,权限并不像应该那样严格,我们希望将数据库访问锁定为更加专注的安全组。我认为最简单的方法是审计一周的数据库访问,然后找到这些用户所属的最常见的安全组。 – Travis

+0

看起来像是可能的,但并不容易。 [这是我发现](http://stackoverflow.com/questions/296906/log-table-access-using-sql-server-profiler/326980#326980) – Slava

相关问题