2012-09-25 149 views
0

我在Windows XP Professional SP3框上運行Visual Studio 2008。VB.NET連接到Win2008 SQL服務器DB

的服務器是在Windows 2008 R2 SP1企業

服務器是我們的網絡上,我能夠通過我的連接字符串中使用的DNS名稱根據IP地址進行ping到它,以及。

在ObjDa.Fill(dsReturn)語句中發生此錯誤。

沒有可用的錯誤消息,結果代碼: DB_E_ERRORSOCCURRED(0x80040E21)。

Dim strQuery As String = "select * from sys.Tables" 
    Dim strConn As String = "Server=dev.xxxxxxx.vmc;" & _ 
       "Uid=xxxx;PWD=xxxxx;Database=report1;Integrated Security=False;" 

    Dim ObjDa As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(strQuery, strConn) 

    Try 
     Dim dsReturn As DataSet = New DataSet 
     ObjDa.Fill(dsReturn) 
     ObjDa.Dispose() 
     Return dsReturn 
    Catch ex As Exception 
     Dim strError as string = ex.Message() 
    End Try 

編輯


我已經改變了我的代碼中使用以下命令行,每添的意見建議

Dim ObjDa As SqlDataAdapter = New SqlDataAdapter(pStrQuery, strConnection) 

現在,我得到這個消息

用戶'vmc \ adam'登錄失敗。

當我通過遠程桌面連接到該服務器的連接,登錄與我的Windows憑據,並帶來了SQL Management Studio中......身份驗證類型爲「Windows身份驗證」的「VMC \亞當」和我沒有輸入密碼。

但是,當我在連接字符串中使用相同的憑據時,它出錯了。想法?


編輯


我發現在連接字符串中使用以下設置和刪除用戶名和密碼,啓用Windows身份驗證提出了一個網站。

這現在正在工作。

integrated security=SSPI;persist security info=False; Trusted_Connection=Yes; 
+1

爲什麼使用'OleDbDataAdapter'而不是'SqlDataAdapter'?你也應該使用'SqlConnection'。即使在發生異常的情況下,也可以使用'using-Statement'作爲連接和數據適配器,以確保它們被處置(並關閉)。 –

回答

0

當您指定一個UID /密碼組合,並設置集成安全爲false,它試圖尋找一個SQL Server登錄,而不是Windows登錄。如果您想使用Windows身份驗證,則需要將連接字符串更改爲此。

Server=dev.xxxxxxx.vmc;Database=report1;Integrated Security=True;