2012-07-09 144 views
2

我有一個本機C++應用程序,我試圖使用ADO連接到一個localdb實例。手動啓動我的實例後,我可以運行sqllocaldb info v11.0並查看數據庫實例正在運行。無法連接到SQL LocalDB

我的代碼如下。

ADO::_ConnectionPtr spConnection (__uuidof (ADO::Connection)); 
spConnection->Open (L"Provider=SQLNCLI11;Server=(localdb)\\v11.0;Integrated Security=true", L"", L"", 0); 

錯誤代碼DB_E_ERRORSOCCURRED(0x80040e21)和錯誤消息是產生多步OLE DB操作錯誤。檢查每個OLE DB狀態值(如果可用)。沒有工作完成。

我能夠使用SQL Server Management Studio成功連接到數據庫,並且我已經在連接字符串中使用和不使用提供程序的情況下嘗試了它,並指定了初始目錄。

+0

您是否在本地計算機上安裝了.NET 4.02或更高版本?這是使用localdb的先決條件 – Steve 2012-07-09 21:45:24

+0

我沒有運氣安裝.NET 4.02(來自http://support.microsoft.com/kb/2544514),雖然我認爲這只是它需要它與VS2010 – 2012-07-10 12:36:36

回答

1

我發現我的問題。安全性必須設置爲,如下所示。

ADO::_ConnectionPtr spConnection (__uuidof (ADO::Connection)); 
spConnection->Open (L"Provider=SQLNCLI11;Server=(localdb)\\v11.0;Integrated Security=SSPI", L"", L"", 0); 
0

ADO連接對象具有一個Error集合,該集合保存到目前爲止發生的t錯誤列表。你可以看看這些錯誤,看看有什麼不對。 通常,連接到SQL Server時可能會出錯兩件事。 1.登錄失敗。 2.SQL Server未配置,因此您可以遠程連接到它。 由於您嘗試連接到本地服務器,因此很難成爲第二個原因。 正如您現在所說的那樣,當涉及到SQL Server時,有兩種不同類型的身份驗證:Windows和SQL Server.如果混合模式是混合模式,您可以在SQL Server選項中設置它們中的每一個,或者同時使用它們中的一個選擇。 根據您的連接字符串,您正在使用Windows模式身份驗證,因此您應該使用可以登錄到SQL Server的Windows用戶登錄。如果SQL Server不是這種情況,那麼您應該在連接字符串中提供SQL用戶憑據。 無論如何檢查連接對象的錯誤集合,看看你的本地數據庫是否有其他錯誤。

+0

唯一的要求錯誤集合中的錯誤是'多步OLE DB操作產生的錯誤。檢查每個OLE DB狀態值(如果可用)。沒有工作完成。' – 2012-07-10 12:53:13