簡體   English   中英

在C#Windows應用程序中使用MS SQL SERVER 2008 R2 EXPRESS?

[英]Use of MS SQL SERVER 2008 R2 EXPRESS with C# Windows Application?

我已經創建了使用MS SQL數據庫的ac#Windows應用程序(2.0框架)。
在開發過程中,我使用了MS VISUAL STUDIO 2010和SQL 2008 MANAGEMENT STUDIO。
我在開發過程中的連接字符串是:

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=SL;Integrated Security=True");

一切正常...

現在,我想在客戶端系統上運行此應用程序。
因此,已在客戶端系統上成功安裝了MS SQL SERVER 2008 EXPRESS。
停止了系統的sql服務,並從我的計算機中復制了.mdf和.ldf文件,並粘貼到客戶端的“ c:\\ Database \\”中。 但是在運行時會出現問題。

建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。 驗證實例名稱正確,並且已將SQL Server配置為允許遠程連接。 (提供者:SQL網絡接口,錯誤:26-指定服務器/實例時出錯)

我嘗試過很多次的連接字符串是:

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True");

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass");

SqlConnection con = new SqlConnection("Data Source=.\\MSSQLEXPRESS; AttachDbFilename =C:\\Database\\SL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

當我在連接字符串中使用User ID=sa;Password=pass ,我得到:

驗證“ sa”失敗

我錯過了一些步驟還是做錯了? 從系統中復制數據庫后,請告訴我該怎么辦。 我在C#中的連接字符串應該是什么?

謝謝 !

您只復制了將數據庫附加到SQLExpress所需的文件,看看使用OSQL的情況,或者將客戶端工具安裝到擁有SQLExpress並附加數據庫的PC上。

首先,請務必查看Sres的答案
如果您沒有在連接字符串中告訴SQL Server附加數據庫(使用AttachDbFilename ,如您的第三個示例所示),則必須像他所說的那樣AttachDbFilename附加。

關於您的三個連接字符串示例:它們都僅在某些情況下有效。 您可能想查看connectionstrings.com

這是您的三個連接字符串,以及有關其問題的簡短說明:

Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Integrated Security=True

->這將使用您正在運行應用程序的當前Windows用戶。 因此,當前的Windows用戶必須對客戶端計算機上的數據庫具有權限。

Data Source=.\\MSSQLEXPRESS;Initial Catalog=SL;Persist Security Info=True;User ID=sa;Password=pass

->這將使用特殊的“ sa”用戶帳戶。 為了使它起作用,您必須確保滿足以下先決條件:

  • 必須設置混合模式身份驗證 (如果不執行此操作,則只有Windows身份驗證,而“ sa”是SQL Server身份驗證用戶名)
  • 必須指定“ sa”的密碼,當然它必須與開發計算機上的密碼相同。

但這畢竟不是最好的解決方案。 “ sa”是具有完全權限的管理員帳戶,您不應使用管理員帳戶來通過您的應用訪問SQL Server。
如果您確實要使用SQL Server身份驗證(而不是Windows身份驗證),最好使用您的應用程序需要的最小必需權限創建一個新帳戶。

Data Source=.\\MSSQLEXPRESS; AttachDbFilename =C:\\Database\\SL.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

->與第一個連接字符串相同的問題(當前Windows用戶必須具有權限)。 另外,需要在SQL Server中啟用User Instance=True
引用connectionstrings.com

要使用用戶實例功能,您需要在SQL Server上啟用它。 這是通過執行以下命令完成的:sp_configure'用戶實例已啟用','1'。 若要禁用此功能,請執行sp_configure'user instance enabled','0'。

您確定新的實例名稱是“ MSSQLEXPRESS”嗎?

我的R2 Express實例稱為“ SQLEXPRESS”(這實際上是由於安裝程序中的一個已知錯誤)。

您可能需要檢查實例是否實際被稱為您所認為的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM