'密钥在指定状态下无效。 (System.Security)在注册服务器导入(SSMS)上

时间:2018-12-18 12:46:51

标签: ssms ssms-2017

我的计算机最近崩溃了,正在重新安装东西。 我想导入以前在PC上拥有的注册服务器列表。我都有RegSrvr.xml的{​​{1}}文件 以及* .regsrvr文件的备份(带有用户名/密码),这些文件可以从笔记本电脑上移走。

我看到将G:\Users\<user>\AppData\Roaming\Microsoft\Microsoft SQL Server\140\Tools\Shell文件移到新PC的相同位置完全没有任何作用。

当我尝试导入* .regsrvr文件时-出现错误RegSrvr.xml,实际上只有大约一半的列表导入。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

从另一台计算机导入带有密码的SSMS服务器注册文件后,出现了此问题。为了解决这个问题,我从另一台计算机上重新导出了服务器注册“无密码”,并重新导入了没有密码的文件。但是,此方法有效,您可以随时编辑注册。

答案 1 :(得分:0)

问题是密码存储在文件中的加密字符串中,并且所使用的加密密钥特定于安装SSMS的计算机。因此,当您导出它们然后导入到新计算机上时,会收到该错误,因为它无法解密/使用密码。

大多数人只是从旧计算机上重新导出,没有密码,然后将其导入到新计算机上的新SSMS之后,他们便手动修复了所有密码。

我要补充的是,由于它只是一个文本文件,因此可以通过手动编辑C:\ Users {user} \ AppData \ Roaming \ Microsoft \ SQL Server Management Studio \ RegSrvr来节省大量工作。 xml。

我所做的是导入文件并忽略所有这些错误

==================================

密钥在指定状态下无效。 (系统安全)

------------------------------程序位置:

在System.Security.Cryptography.ProtectedData.Unprotect(Byte [] encryptionData,Byte []可选熵,DataProtectionScope范围)
在 Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.ProtectData(String 输入,布尔加密) Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.get_SecureConnectionString() 在 Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.get_ConnectionString() 在 Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.get_ServerName() 在 Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerTree.AddRegisteredServerNode(RegisteredServer regSrv,TreeNodeCollection节点)

然后我经历了这个过程:

  1. 在SSMS中,修复一个“服务器”。
  2. 在文件中,将“良好”的加密密码字符串复制/粘贴到使用相同密码进行连接的所有其他“服务器”上。
  3. 重新启动SSMS。
  4. 根据需要重复。