根据政策,我们的开发团队不允许成为我们的 SQL Server 实例的管理员。此实例用于开发和测试。我想访问此实例的 SQL Server 日志,但您必须是管理员才能打开这些日志。是否有管理员可以授予访问权限而无需授予我管理员权限的存储过程或表?
我在想如果有一个 sp_XXXX,管理员是否可以创建一个存储过程,使用他们自己的权限调用该函数,然后授予我们访问该函数的权限。有人知道是否有可以访问日志的 sp、表或系统表吗?
答案1
您是指数据日志还是错误日志?
可以使用以下方式读取数据日志select .. from
fn_dblog
可以使用以下方式读取错误日志exec
xp_readerrorlog
(允许访问 SQL 和代理错误日志)
它们都是未记录但众所周知的函数/过程。您的管理员应该创建一个包装程序,授予您执行该程序的权限,然后使用代码签名授予该程序所需的权限。请参阅签署激活程序有关如何签署程序的示例。
答案2
只有当这些文件存储在默认位置(例如 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG)时,您才需要管理员身份才能打开它们。这是一个非常愚蠢的存储位置,不仅因为您必须以管理员身份才能访问它们,而且您也不应该在 C: 上存放不断增长的文件。当那里的空间用完时,就会发生糟糕的事情。
安装 SQL Server 后,我做的第一件事就是移动日志,通常将其移动到与数据库文件和事务日志相同的位置(文件夹中)。那里有更多空间,希望它位于 SAN 或类似的东西上,这样速度更快,希望它位于 RAID 10 上,这样它们更安全,而且您无需成为管理员即可查看它们。
您可以通过为 SQL Server 指定 -e 启动参数来执行此操作,指定日志的存储位置。
-eF:\mssql\mylog\ERRORLOG (or use whatever location you want)
在 SQL Server 配置管理器中执行此操作。右键单击 SQL Server (MSSQLSERVER) -> 属性 -> 高级 -> 启动参数
另请参阅此处http://support.microsoft.com/kb/224071
干杯