我的电脑最近死机了,我正在重新安装。我想导入上一台PC上的已注册服务器列表。我既有来自G:\Users\<user>\AppData\Roaming\Microsoft\Microsoft SQL Server\140\Tools\Shell的RegSrvr.xml文件,也有*.regsrvr文件的备份(带有用户名/密码),我可以从我的笔记本电脑上移动这些文件。
我发现,将RegSrvr.xml文件移动到新PC中的相同位置根本不起任何作用。
当我尝试导入*.regsrvr文件时,我得到一个错误'Key not valid for use in specified state. (System.Security)',实际上只导入了大约一半的列表。
有什么办法可以解决这个问题吗?
发布于 2019-03-18 22:21:32
在从另一台计算机导入带有密码的SSMS服务器注册文件后,我遇到了此问题。为了解决这个问题,我从我的另一台计算机上重新导出了“没有密码”的服务器注册,并重新导入了没有密码的文件。这是有效的,但是,您可以编辑注册,因为你走。
发布于 2020-08-13 02:19:03
问题是密码存储在文件中的加密字符串中,并且所使用的加密密钥特定于安装了SSMS的计算机。因此,当您导出它们,然后在新机器上导入时,您会收到该错误,因为它无法解密/使用密码。
大多数人只是在没有密码的情况下从旧机器上重新导出,然后在导入到新机器上的新SSMS后,他们手动修复所有密码。
我想补充的是,由于它“只是一个文本文件”,您可以通过手动编辑C:\Users{user}\AppData\Roaming\Microsoft Management Studio\RegSrvr.xml来节省大量工作。
我所做的是导入文件并忽略所有这些错误
===================================
密钥无效,无法在指定状态下使用。(System.Security)
at System.Security.Cryptography.ProtectedData.Unprotect(Byte[] encryptedData,Byte[] optionalEntropy,DataProtectionScope scope)
在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节点处)
然后我经历了这个过程:
https://stackoverflow.com/questions/53833346
复制相似问题