2011-04-21 61 views
9

我在新PC上安裝了SQL Server 2008 R2。一切工作正常,直到我開始從舊PC上存在的SQL Server 2008 R2管理工作室導出已註冊的服務器。當我將一臺已註冊的服務器導入到我的新安裝中時,我收到了錯誤「密鑰無法在指定狀態中使用」。SQL Server 2008 R2 - .NET Framework未處理的異常

現在,每次我嘗試在新安裝上打開註冊的服務器時,我都會得到一個.NET框架未處理的異常,並顯示相同的消息。註冊的服務器區域是完全空的。現在無法添加任何已註冊的服務器。我試過重新安裝SQL,但錯誤依然存在。這顯然與進口過程有關。也許有些東西被損壞了。有誰知道如何修理它?

編輯:從異常詳細信息對話框

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box. 

************** Exception Text ************** 
System.Security.Cryptography.CryptographicException: Key not valid for use in specified state. 

    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) 
    at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerTree.AddServerGroupToNodeCollection(ServerGroup group, TreeNodeCollection nodes, Boolean createRecursively) 
    at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerTree.AddServerGroupToNodeCollection(ServerGroup group, TreeNodeCollection nodes, Boolean createRecursively) 
    at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerTree.Initialize(ServerGroup localServerGroup, ServerType serverType, IServerType connDlgServerType, AddCentralManagementServerDelegate onAddCentralManagementServer, AddNewCentralManagementServerDelegate onAddNewCentralManagementServer, DeleteCentralManagementServerDelegate onDeleteCentralManagementServer, GetServiceProviderDelegate onGetService) 
    at Microsoft.SqlServer.Management.RegisteredServers.RegisteredServerControl.RegisteredServerControl_Load(Object sender, EventArgs e) 
    at System.Windows.Forms.UserControl.OnLoad(EventArgs e) 
    at System.Windows.Forms.UserControl.OnCreateControl() 
    at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 
    at System.Windows.Forms.Control.CreateControl() 
    at System.Windows.Forms.Control.WmShowWindow(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
    at System.Windows.Forms.ContainerControl.WndProc(Message& m) 
    at System.Windows.Forms.UserControl.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
+0

http://stackoverflow.com/a/6476025/2990378 - 此解決方案爲我工作 – MHS 2013-11-14 03:14:41

回答

15

聽起來就像是東西在你的Windows配置文件(例如,用戶/ [用戶名]/AppData的/漫遊在Windows 7)。你有沒有嘗試清除SQL Server的條目?

Alan

+1

謝謝艾倫。發現。有問題的文件是RegSrvr.xml。我重命名它並重新啓動SQL Server。錯誤消失了。我將繼續手動添加我的註冊服務器! – user718982 2011-04-22 09:36:55

+0

也爲我工作,但是我在'\ Users \ [用戶名] \ AppData \ Microsoft \ Microsoft SQL Server'下。另外,由於我所在域的配置方式,它不在我的本地機器上,而是在網絡驅動器上。 – Molomby 2012-02-02 04:47:57

+0

謝謝艾倫,這對清除RegSrvr.xml後,我也工作 – zahirhas 2012-12-11 21:36:01

2

我有過類似的情況。完全相同的觀察結果 - 但與導入無關。我已經完成了Windows 7和SQL(開發版)的完全重新安裝。我在重建之前恢復了我的配置文件,因此它與安裝不同步。我刪除了C:\ Users \ John \ AppData \ Roaming \ Microsoft \ Microsoft SQL Server並且問題消失了。

5

RegSrvr.xml文件也是我的問題。但不是刪除整個文件,我只是編輯它來刪除加密的密碼字符串。之後,管理工作室開放罰款與所有導入服務器目前。

+0

輝煌!這是解決方案。 – mghaoui 2013-01-02 09:32:04

+0

同樣,我做了另一個從Sql Server Management Studio註冊的導出,但第二次指定「不要在導出文件中包含用戶名和密碼」。然後,導入罰款到我的新版本,而不是給出錯誤。因此,將密碼包含在SSMS導出文件中似乎出了點問題。 – 2015-09-21 21:28:33

0

還有一件事要檢查 - 您不能將導出的定義導入早期版本的SQL Management Studio。您將得到相同的Key not valid for use錯誤,例如,從MSSMS2012導出並嘗試在MSSMS2008R2中導入。

0

還有一件事要檢查 - 對我來說這是因爲SQL Server驅動器中沒有足夠的磁盤空間。清除空間解決了一切。