8

私のコンピューターは最近クラッシュし、再インストールしています。以前の PC にあった登録済みサーバーのリストをインポートしたいと考えています。RegSrvr.xmlラップトップから移動できる* .regsrvrファイルのファイルG:\Users\<user>\AppData\Roaming\Microsoft\Microsoft SQL Server\140\Tools\Shell とバックアップ(ユーザー名/パスワード付き)の両方があります。

RegSrvr.xmlファイルを新しい PC の同じ場所に移動しても、まったく何も起こらないことがわかります。

*.regsrvr ファイルをインポートしようとすると、エラーが発生'Key not valid for use in specified state. (System.Security)'し、実際にインポートされるのはリストの約半分だけです。

これを回避する方法はありますか?

4

2 に答える 2

4

問題は、パスワードがファイル内の暗号化された文字列に格納され、使用される暗号化キーが SSMS がインストールされているマシンに固有のものであることです。したがって、それらをエクスポートしてから新しいマシンにインポートすると、パスワードを復号化/使用できないため、そのエラーが発生します。

ほとんどの人は、古いマシンからパスワードなしで再エクスポートし、新しいマシンの新しい SSMS にインポートした後、手動ですべてのパスワードを修正します。

追加したかったのは、「単なるテキスト ファイル」であるため、C:\Users{user}\AppData\Roaming\Microsoft\SQL Server Management Studio\RegSrvr.xml を手動で編集することで、多くの作業を節約できるということです。

私がしたことは、ファイルをインポートし、それらのエラーをすべて無視することでした

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

指定された状態でのキーの使用は無効です。(システム.セキュリティ)

------------------------------ プログラムの場所:

System.Security.Cryptography.ProtectedData.Unprotect (Byte[] encryptedData、Byte[] optionalEntropy、DataProtectionScope スコープ)
で Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.ProtectData(String input, Boolean encrypt) で Microsoft.SqlServer.Management. Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.get_ConnectionString() の RegisteredServers.RegisteredServer.get_SecureConnectionString() Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerTree.AddRegisteredServerNode(RegisteredServer regSrv 、TreeNodeCollection ノード)

それから私はこのプロセスを経ました:

  1. SSMS で、「サーバー」を修正します。
  2. ファイル内で、その「適切な」暗号化パスワード文字列をコピーして、同じパスワードを使用して接続している他のすべての「サーバー」に貼り付けます。
  3. SSMS を再起動します。
  4. 必要に応じて繰り返します。
于 2020-08-12T18:19:02.723 に答える