Мой компьютер недавно вышел из строя, и мне нужно что-то переустановить.
Я хочу импортировать список зарегистрированных серверов, которые были у меня на предыдущем ПК. Имею как файл RegSrvr.xml
от G:\Users\<user>\AppData\Roaming\Microsoft\Microsoft SQL Server\140\Tools\Shell
а также резервные копии (с именем пользователя / паролями) файлов * .regsrvr, которые я могу перенести со своего ноутбука.
Я вижу, что перемещение файла RegSrvr.xml
в то же место на новом ПК вообще ничего не дает.
И когда я пытаюсь импортировать файлы * .regsrvr - я получаю ошибку 'Key not valid for use in specified state. (System.Security)'
и фактически импортирую только около половины списка.
Это можно обойти?
У меня возникла эта проблема после импорта моего файла регистрации сервера SSMS С ПАРОЛЯМИ с другого компьютера. Чтобы исправить это, я повторно экспортировал регистрацию сервера «без паролей» с другого моего компьютера и повторно импортировал этот файл без паролей. Однако это сработало, вы можете редактировать регистрации по ходу.
Проблема в том, что пароли хранятся в зашифрованной строке в файле, а используемый ключ шифрования зависит от того компьютера, на котором установлен SSMS. Поэтому, когда вы экспортируете их, а затем импортируете на новый компьютер, вы получаете эту ошибку, потому что он не может расшифровать / использовать пароли.
Большинство людей просто реэкспортируют со старой машины без паролей, а затем после импорта в новую SSMS на новой машине вручную исправляют все пароли.
Я хотел добавить, что, поскольку это «просто текстовый файл», вы можете сэкономить МНОГО работы, вручную отредактировав C: \ Users {user} \ AppData \ Roaming \ Microsoft \ SQL Server Management Studio \ RegSrvr.xml.
Я импортировал файл и проигнорировал все эти ошибки.
===================================
Key not valid for use in specified state. (System.Security)
------------------------------ Program Location:
at System.Security.Cryptography.ProtectedData.Unprotect(Byte[] encryptedData, Byte[] optionalEntropy, DataProtectionScope scope)
at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.ProtectData(String input, Boolean encrypt) at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.get_SecureConnectionString() at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.get_ConnectionString() at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServer.get_ServerName() at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerTree.AddRegisteredServerNode(RegisteredServer regSrv, TreeNodeCollection nodes)
Затем я прошел через этот процесс: