创建链接服务器出现“解密过程中出错”问题
来源:互联网 发布:ubuntu 终端 中文 编辑:程序博客网 时间:2024/06/05 19:06
今天用连接服务器实现分布式查询时注册了连接服务器后,在创建服务器间的远程登录映射时报错,错误消息如下:消息15466,级别16,状态2,过程 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 选项。
通过 MACHINE KEY 选项,可以使用计算机密钥添加或删除加密。
权限
需要对服务器具有 CONTROL SERVER 权限。
示例
下面的示例重新生成服务主密钥。
ALTER SERVICE MASTER KEY REGENERATE;GO
- 创建链接服务器出现“解密过程中出错”问题
- 创建链接服务器远程登录映射报错:消息15466 解密过程中出错解决办法
- 创建链接服务器储存过程
- linux中创建符号链接出错
- sqlserver中创建链接服务器
- 创建链接服务器、调用远程存储过程
- RecyclerView在滑动过程中出现出错
- mysql创建索引以及进程过程中出现的问题
- VC2010编译过程中出现链接失败
- sqlserver中创建链接服务器图解教程
- [图解]sqlserver中创建链接服务器
- [图解]sqlserver中创建链接服务器
- [图解]sqlserver中创建链接服务器
- sqlserver中创建链接服务器图解教程
- sqlserver中创建链接服务器图解教程
- sqlserver中创建链接服务器图解教程
- GCC编译过程中出错问题总结
- 关于动态链接库中创建非模态对话框出现的问题
- PHP中判断数组是否为空的方法
- Linux设备驱动开发学习(1)--字符设备驱动
- 12 Bash For Loop Examples for Your Linux Shell Scripting
- 男人与女人之间灰常有趣的35条定律
- 一个关于数组中满足条件的元素选择、及再次排序得c语言函数。
- 创建链接服务器出现“解密过程中出错”问题
- PMD规则之Basic Rules
- shell 数组建立及使用技巧
- HDU 3826 Squarefree number
- PMD规则之Braces Rules
- 发送邮件的几个函数
- PMD规则之Clone Implementation Rules
- 浏览器对Script下载的非并行处理再说明
- jacob 生成pdf问题