4

SQL Express 2005在本地運行。我有一個項目由另一個人在同一臺機器上運行。我想要做的就是連接到它,不能那麼難吧?SQL Express連接字符串hell ASP.Net

這是一個我在我的舊傳統的ASP代碼用來打在同一個實例中運行的另一個數據庫:

提供程序= SQLOLEDB;數據源= MYLAPTOP \ MSSMLBIZ;堅持安全信息= TRUE;用戶ID = TestUser; Password = letmein; Initial Catalog = TestDB

但嘗試使用.net代碼的一個版本,因爲他使用SQLServer驅動程序編寫它,所以它不喜歡提供程序的東西。

下面是從他的代碼的原單連接字符串:

服務器=(當地);初始目錄= TheDatabase;用戶ID = TheUser;密碼= ThePassword;

我去過http://www.connectionstrings.com/sql-server-2005和試了幾個選項從那裏,這些都得到「SQL Server不存在或拒絕訪問」(多麼可愛的混合錯誤消息!):

  • 數據源=本地主機;集成安全性= TRUE;初始目錄= TheDatabase
  • 數據源=本地主機\ SQLEXPRESS;集成安全性= TRUE;初始目錄= TheDatabase
  • 數據源= MyLaptop \ SQLEXPRESS;集成安全性= TRUE;初始目錄=數據庫
  • Se rver = MyLaptop \ SQLEXPRESS; Initial Catalog = TheDatabase; User Id = TheUser; Password = ThePassword;

我已經創建了MyLaptop/IUSR_MyLaptop,MyLaptop/ASPNET,MyLaptop/IWAM_MyLaptop登錄在SQL Express和給了他們所有的讀/寫權限,我的數據庫並設置其默認DB是TheDatabase。

我做錯了什麼,我該如何調試這個問題呢?

更新:特別感謝克里斯的所有指針,最後到了那裏,如果你有類似的問題,請閱讀所有評論有很多鏈接和提示如何跟蹤他們。

+0

可能是一個愚蠢的問題,但你試圖連接到的sql express服務器的實際名稱是什麼?是localhost \ sqlexpress還是別的? 將應用程序排除在等式之外,只需嘗試通過在命令提示符中執行'sqlcmd -S servername \ instancename -E'通過sqlcmd連接到sql,並查看它是否連接。 – 2009-07-23 10:31:00

+0

該實例實際上稱爲MSSMLBIZ,但爲了清晰起見將其保留爲SQLExpress。 試過以上,並得到這個: SQL網絡接口:錯誤定位服務器/實例指定[xFFFFFFFF]。 Sqlcmd:錯誤:Microsoft SQL Native Client:建立到服務器的連接時發生錯誤。連接到SQL Server 2005時,此故障可能是由於默認設置下SQL Server不允許遠程連接導致的。 Sqlcmd:錯誤:Microsoft SQL Native Client:登錄超時已過期。 檢入服務器配置並打開了所有設置? – 2009-07-23 10:43:21

+0

要嘗試重新安裝嘗試重置所有內容並重新開始... – 2009-07-23 11:23:34

回答

1

隨着您的評論是錯誤消息,您應該通過項目在http://blogs.msdn.com/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx

跑我相信的實例正在運行,並允許在TCPIP連接?

+0

現在閱讀該文章,下載PortQry。是的實例正在運行,並從我讀過的,看到它「應該」允許tcpip。禁用動態端口並將其設置爲始終使用1434.但是,如果運行本地服務器,我需要嗎? – 2009-07-23 10:54:37

+1

否 - 如果本地連接,但您遇到了一些奇怪的事情應該沒有關係 - 您目前如何管理服務器。 SSMS?你是用windows或sql登錄連接的嗎? – 2009-07-23 11:02:57

+0

在配置管理器中 - 檢查客戶端配置以查看啓用了哪些協議以進行連接以及它們的應用順序。 – 2009-07-23 11:04:56

0

不應該讀取您的數據源:Data Source = localhost \ sqlexpress?

+0

試過那個,加在上面。 – 2009-07-23 10:27:33

0

您沒有提及授予'TheUser'訪問服務器數據庫的權限 - 如果您從另一臺服務器上恢復,則可能是sid不匹配。

嘗試運行

sp_update_users_login 'report'

對有問題的數據庫。

如果返回的用戶帳戶在報告中嘗試:

sp_update_users_login 'update_one', 'theuser', 'theuser'

重新映射的東西。

+0

我似乎沒有該存儲過程可用? 消息2812,級別16,狀態62,行1 找不到存儲過程'sp_update_users_login'。 – 2009-07-23 10:45:43

+0

對不起 - 應該是sp_change_users_login ...但如果你連一個基本的服務器連接都沒有關係。 – 2009-07-23 10:53:20

+0

好吧,讓它運行,只有一個條目,一個從開發人員運行數據庫我猜。不是我的。我確實恢復了數據庫,但之後又添加了我的用戶。這份報告告訴我什麼克里斯? – 2009-07-23 11:06:17

1

你能建議到底什麼是配置?

是否使用塊 - 在這種情況下,一個有效的連接字符串將是:

<add name="connection" providerName="System.Data.SqlClient" connectionString="Data Source=localhost\MSSMLBIZ;Initial Catalog=TheDatabase;Integrated Security=True" /> 

<add name="connection" providerName="System.Data.SqlClient" connectionString="Data Source=localhost\MSSMLBIZ;Initial Catalog=TheDatabase;Integrated Security=False;User Id=TheUser;Password=ThePassword;Application Name=AppName;" /> 

還是下車從應用程序設置連接字符串 - 在這種情況下,我猜你的提供者是在應用程序本身的代碼中設置的?

+0

應用程序設置,其.Net版本1(由於它將被託管在哪裏的限制)。重新安裝也不順利...這些日子之一... – 2009-07-23 12:54:08

+0

也感謝您的幫助克里斯,非常感謝,DB設置不是真的我的包... – 2009-07-23 12:54:50