创建链接服务器出现“解密过程中出错”问题
2012-08-30 18:01
471 查看
今天用连接服务器实现分布式查询时注册了连接服务器后,在创建服务器间的远程登录映射时报错,错误消息如下:消息15466,级别16,状态2,过程
sp_addlinkedsrvlogin,第 91
行解密过程中出错。
消息15185,级别16,状态1,过程
sp_addlinkedsrvlogin,第 98
行没有从远程服务器 'XXXXXX'
映射到本地用户 '(null)'
的远程用户 'XXXXXXX'。
开始还以为是语句写错了,看了下联机帮助,语句写得没问题,折腾了一番终于找到解决办法:
在本地服务器上执行:tempdb库中ALTER
SERVICE MASTER KEY
FORCE REGENERATE.
这个语句的功能是重新生成本地服务器的主密钥。
据已知的问题现象:凡是和加密相关的东西 都会涉及到 Sqlserver服务器主密钥。因此 在涉及到“解密过程中出错 15466”的问题。均可以通过重置服务器主密钥解决。
注意:这是个运算密集型的操作!!!!可能会丢失加密数据!
FORCE
指示即使存在数据丢失的风险,也应当重新生成服务主密钥。有关详细信息,请参阅本主题下文中的更改 SQL Server 服务帐户。
REGENERATE
指示应当重新生成服务主密钥。
OLD_ACCOUNT = 'account_name'
指定旧的 Windows 服务帐户的名称。
OLD_PASSWORD = 'password'
指定旧的 Windows 服务帐户的密码。
NEW_ACCOUNT = 'account_name'
指定新的 Windows 服务帐户的名称。
NEW_PASSWORD = 'password'
指定新的 Windows 服务帐户的密码。
使用本地计算机密钥和 Windows 数据保护 API 对服务主密钥进行加密。该 API 使用从 SQL Server 服务帐户的 Windows 凭据中派生出来的密钥。
当第一次需要使用服务主密钥对链接服务器密码、凭据或数据库主密钥进行加密时,便会自动生成服务主密钥。
服务主密钥只能由创建它时所用的服务帐户进行解密,或者由可以访问该服务帐户的 Windows 凭据的主体进行解密。因此,如果您更改了运行 SQL Server 服务所用的 Windows 帐户,则还必须使新帐户能够对服务主密钥进行解密。
REGENERATE 短语可以重新生成服务主密钥。当重新生成服务主密钥时,SQL Server 会对所有使用该主密钥加密的密钥进行解密,然后使用新的服务主密钥对这些密钥进行加密。这是一种消耗大量资源的操作。在不危及密钥安全性的前提下,应当将该操作安排在资源需求较低的时段执行。如果有任意一种解密操作失败,则整个语句将会失败。
即使密钥重新生成过程无法检索当前的主密钥,或者无法对所有使用该主密钥加密的私钥进行解密,使用 FORCE 选项也可以使得密钥重新生成过程继续进行。只有在重新生成过程失败,并且您无法使用 RESTORE SERVICE MASTER KEY 语句还原服务主密钥时,才使用 FORCE 选项。
通过 MACHINE KEY 选项,可以使用计算机密钥添加或删除加密。
需要对服务器具有 CONTROL SERVER 权限。
下面的示例重新生成服务主密钥。
sp_addlinkedsrvlogin,第 91
行解密过程中出错。
消息15185,级别16,状态1,过程
sp_addlinkedsrvlogin,第 98
行没有从远程服务器 'XXXXXX'
映射到本地用户 '(null)'
的远程用户 'XXXXXXX'。
开始还以为是语句写错了,看了下联机帮助,语句写得没问题,折腾了一番终于找到解决办法:
在本地服务器上执行:tempdb库中ALTER
SERVICE MASTER KEY
FORCE REGENERATE.
这个语句的功能是重新生成本地服务器的主密钥。
据已知的问题现象:凡是和加密相关的东西 都会涉及到 Sqlserver服务器主密钥。因此 在涉及到“解密过程中出错 15466”的问题。均可以通过重置服务器主密钥解决。
注意:这是个运算密集型的操作!!!!可能会丢失加密数据!
语法
ALTER SERVICE MASTER KEY [ { <regenerate_option> | <recover_option> } ] [;] <regenerate_option> ::= [ FORCE ] REGENERATE <recover_option> ::= { WITH OLD_ACCOUNT = 'account_name' , OLD_PASSWORD = 'password' } | { WITH NEW_ACCOUNT = 'account_name' , NEW_PASSWORD = 'password' } |
参数
FORCE指示即使存在数据丢失的风险,也应当重新生成服务主密钥。有关详细信息,请参阅本主题下文中的更改 SQL Server 服务帐户。
REGENERATE
指示应当重新生成服务主密钥。
OLD_ACCOUNT = 'account_name'
指定旧的 Windows 服务帐户的名称。
OLD_PASSWORD = 'password'
指定旧的 Windows 服务帐户的密码。
NEW_ACCOUNT = 'account_name'
指定新的 Windows 服务帐户的名称。
NEW_PASSWORD = 'password'
指定新的 Windows 服务帐户的密码。
注释
使用本地计算机密钥和 Windows 数据保护 API 对服务主密钥进行加密。该 API 使用从 SQL Server 服务帐户的 Windows 凭据中派生出来的密钥。当第一次需要使用服务主密钥对链接服务器密码、凭据或数据库主密钥进行加密时,便会自动生成服务主密钥。
服务主密钥只能由创建它时所用的服务帐户进行解密,或者由可以访问该服务帐户的 Windows 凭据的主体进行解密。因此,如果您更改了运行 SQL Server 服务所用的 Windows 帐户,则还必须使新帐户能够对服务主密钥进行解密。
更改 SQL Server 服务帐户
若要更改 SQL Server 服务帐户,请使用 SQL Server 配置管理器。为了对服务帐户的变更进行管理,SQL Server 将存储服务主密钥的冗余副本,该密钥由具有授予 SQL Server 服务组的必要权限的计算机帐户对其加以保护。在重建计算机时,将可以为该服务帐户以前使用的同一域用户恢复服务主密钥。这不适用于本地帐户、Local System、Local Service 或 Network Service 帐户。如果要将 SQL Server 迁移至另一台计算机,请使用备份和还原功能迁移服务主密钥。REGENERATE 短语可以重新生成服务主密钥。当重新生成服务主密钥时,SQL Server 会对所有使用该主密钥加密的密钥进行解密,然后使用新的服务主密钥对这些密钥进行加密。这是一种消耗大量资源的操作。在不危及密钥安全性的前提下,应当将该操作安排在资源需求较低的时段执行。如果有任意一种解密操作失败,则整个语句将会失败。
即使密钥重新生成过程无法检索当前的主密钥,或者无法对所有使用该主密钥加密的私钥进行解密,使用 FORCE 选项也可以使得密钥重新生成过程继续进行。只有在重新生成过程失败,并且您无法使用 RESTORE SERVICE MASTER KEY 语句还原服务主密钥时,才使用 FORCE 选项。
注意: |
---|
服务主密钥为 SQL Server 加密层次结构的根。服务主密钥直接或间接地保护树中的所有其他密钥和机密内容。如果在强制的重新生成过程中不能对某个相关密钥进行解密,则由该密钥所保护的数据便会丢失。 |
权限
需要对服务器具有 CONTROL SERVER 权限。
示例
下面的示例重新生成服务主密钥。复制代码 | |
---|---|
ALTER SERVICE MASTER KEY REGENERATE; GO |
相关文章推荐
- 创建链接服务器远程登录映射报错:消息15466 解密过程中出错解决办法
- 服务器IIS程序池出现莫名被DOWN,问题,及解决的过程
- 关于登录sql server 2005 出现“已成功与服务器建立连接,但是在登录过程中发生错取。(provider:共享内存提供程序,error:0-管道的另一端上无任何进程”的问题
- WEB工程的创建、运行过程及可能出现的问题
- 解决方法:SQL2008 链接服务器 访问接口 "SQLNCLI10" 的架构行集 出错的问题!
- vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误
- 关于sql server 在存储过程中创建临时表,并往临时表中插入数据时出现乱码的问题
- SQLServer2012通过链接服务器执行SQLServer2000的存储过程的问题
- 创建dblink 时候出现us.oracle.com 而是数据库链接 连接不上的问题
- 解决方法:SQL2008 链接服务器 访问接口 "SQLNCLI10" 的架构行集 出错的问题!
- 创建链接服务器储存过程
- Sql server2012连接Sql server 2008时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误。(provider:SSL Provider,error:0-接收到的消息异
- Linux下安装MyEclipse和Tomcat服务器详解,以及我安装过程中所出现的问题以及解决办法,并实现一个web小程序
- mysql和VS2010 C++链接过程中出现的问题
- 关于动态链接库中创建非模态对话框出现的问题
- SQL Server创建链接服务器的一些存储过程和例子
- C#中动态创建控件 出现创建窗口句柄出错问题解决。
- wordpress 在Nginx服务器设置固定链接后出现404问题
- SQL Server创建链接服务器的存储过程示例分享
- (转载)MSSQL:Sql server2012连接Sql server 2008时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误。(provider:SSL Provider,error:0-接收到的消息异常,或格式不正确。) - Empty.