日期:2014-05-18 浏览次数:20742 次
--无 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
修改方式如以下:
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扩展存储过程的权限。