阿牛 - 专注.NET开发

如果梦想与实现之间有一道不可逾越的鸿沟,那么“执行力”就是跨越这道鸿沟的桥梁。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server 2005的安全的确提高了不少,普通用户运行一个BULK INSERT和OpenRowSet都要授权。

要执行BULK INSERT,只需要授予用户bulkadmin权限,但如果要执行OpenRowSet,默认情况下只有sysadmin权限才行的。

“不行,我们不会让系统以sa权限运行,这样很不安全,”,我们的银行客户说。

在网上找了半天,无解!天无绝人之路,查了下MSDN终于找到方法了:

1. 检查你的系统注册表,是否有以下Key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\<instanceName, 默认是 MSSQLServer>\Providers\<provider name, 这里我们假设是Microsoft.Jet.OLEDB.4.0>
如果没有,加上它。再在这个key下面加一个DWORD值,名称:DisallowAdhocAccess,值:默认,0


2. 再检查你的系统注册表,是否有以下Key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers\<provider name, 这里我们假设是Microsoft.Jet.OLEDB.4.0>
如果没有,加上它。再在这个key下面加一个DWORD值,名称:DisallowAdhocAccess,值:默认,0

3. 再检查你的系统注册表,是否有以下Key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.2\Providers\<provider name, 这里我们假设是Microsoft.Jet.OLEDB.4.0>
如果没有,加上它。再在这个key下面加一个DWORD值,名称:DisallowAdhocAccess,值:默认,0

4. 再检查你的系统注册表,是否有以下Key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.3\Providers\<provider name, 这里我们假设是Microsoft.Jet.OLEDB.4.0>
如果没有,加上它。再在这个key下面加一个DWORD值,名称:DisallowAdhocAccess,值:默认,0

为了保险期间,搜索一下HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下面的其他的DisallowAdhocAccess值,如果是1,把它改为0.

好,重启你的数据库服务,不用重启机子。搞定!

posted on 2007-12-03 11:24  阿牛-专注金融行业开发  阅读(901)  评论(2编辑  收藏  举报