日期:2014-05-18  浏览次数:20605 次

[DBA]启动账号和审核级别可以用脚本修改吗?
如题,SQL Server 2000 和 2005 的启动账号可以用脚本来修改么?实例-属性-安全性-审核级别(或叫登陆审核)该选项可以用脚本修改么?如何实现?

------解决方案--------------------
http://support.microsoft.com/kb/911839/en-us
------解决方案--------------------
SQL code

--无
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 0
GO
--仅限成功登陆
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 1
GO
--失败和成功的登录
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 3
GO
--仅限失败登陆
EXEC master.dbo.xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'AuditLevel', REG_DWORD, 2
GO

------解决方案--------------------
其实SQL Server Login auditing是通过写注册表的方式来存储的。存储的注册表位置如下:
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer\AuditLevel

修改方式如以下:
SQL code


USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE'
, N'Software\Microsoft\MSSQLServer\MSSQLServer'
, N'AuditLevel'
, REG_DWORD
, 0/*--住需要修改这个地方的值为0、1、2或者3即可。
    0:None
    2:Failed Logins Only
    1:Successful logins only
    3:Both failed and successful logins only
    */
GO

------解决方案--------------------
1. 通过本地用户管理,建立一个本地用户sqlserver,密码:123456; 
2. 如果现在就我们打开SERVICES配置通过该用户启动,系统会报错误: 
Source:Service Control Manager 
Event ID:7000 
Description: 
The %service% service failed to start due to the following error: 
The service did not start due to a logon failure. 
No Data will be available. 
这是因为作为一个普通用户是无法启动服务的,我们需要给sqlserver用户分配必要的权限。 
SQL Server服务启动账号必须有3个基本权限: 
l 数据库本地目录的读写权限; 
l 启动本地服务的权限; 
l 读取注册表的权限; 
  
3. 赋予sqlserver用户mssql(WINDOWS平台上强大的数据库平台)目录的读写权限; 
因为我的SQL SERVER是安装在D盘,所以我在权限管理中,将D:\PROGRMAM FILE\Microsoft SQL Server\mssql(WINDOWS平台上强大的数据库平台)读写权限赋予sqlserver用户。 
4. 分配sqlserver用户启动本地服务的权限; 
这个比较复杂,我只举例作为成员服务器的情况。 
l 启动“Local Security Setting” MMC 管理单元。
l 展开Local Policy,然后单击User Rights Assignment。
l 在右侧窗格中,右键单击Log on as Service,将用户添加到该策略,然后单击OK。
l 在右侧窗格中,右键单击Log on as a batch job,将用户添加到该策略,然后单击OK 
l 在右侧窗格中,右键单击Locks pages in memory,将用户添加到该策略,然后单击OK 
l 在右侧窗格中,右键单击Act as part of the operating systme,将用户添加到该策略,然后单击OK 
l 在右侧窗格中,右键单击Bypass traverse checking,将用户添加到该策略,然后单击OK 
l 在右侧窗格中,右键单击Replace a process level token,将用户添加到该策略,然后单击OK 
l 关闭“Local Security Setting” MMC 管理单元。
如图: 
5. 重新启动系统,用sqlserver用户登陆系统; 
6. 再重新启动系统,已administrator用户登陆,打开SERVICES管理工具,配置用该用户启动mssql(WINDOWS平台上强大的数据库平台)SERVER服务; 

  
 这样我们就可以通过限制SQLSERVER用户的权限来控制SQLSERVER扩展存储过程的权限。