2013-03-24 100 views
-3

我有兩臺機器分別運行C#.net Windows窗體應用程序。我希望它們都連接到位於其中一臺機器上的單個SQL Server數據庫。我喜歡這兩個應用程序使用該單一數據庫。但不幸的是,我得到了這個UNC共享問題。有沒有辦法解決這個問題?或者我必須嘗試不同的方法。請幫幫我。我會很感激它。UNC共享上的SQL Server數據庫

+2

直接使用SQL Server。在UNC上使用SQL Server是一個非常糟糕的主意。 – SLaks 2013-03-24 13:48:51

+0

-1。 ** 1。** _「我得到這個UNC分享問題。」_我們無法讀懂你的想法。由於這似乎是你的主要問題,你爲什麼不描述它呢? ** 2。**可怕的問題標題。它基本上是一個標籤列表,但根本沒有描述你的問題。 – stakx 2013-03-24 13:49:19

+0

我該如何實現? – CoOlDud3 2013-03-24 13:49:56

回答

2

AttachDbFileName是一個可怕的和誤導性的功能。會發生什麼情況是,連接到此「數據庫」的每個應用程序都會複製數據文件。因此,如果Machine1連接並進行更改,則Machine2將不可見這些更改。即使在單機場景中,這也會導致很多混淆,因爲人們將通過Visual Studio進行連接,進行一些更新,然後不會從Management Studio中看到它。或相反亦然。 The User Instance feature has been deprecated是有原因的;請停止使用這兩個。

既然你想多臺機器/應用程序連接到數據庫的相同副本,你想要的解決方案是連接到SQL Server的單個實例數據庫的一個副本,這兩個應用程序/機只需連接到該單一副本。

MACHINE1-PC做到這一點:

  1. 移動ShopDatabase.mdf及其相關.ldf文件從你的用戶文件夾,併爲您的實例的數據文件夾。這將是東西這樣的:

    C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Data\

  2. 連接到使用.\SQLEXPRESS當地Express實例。使用Attach the database下面的代碼:

    CREATE DATABASE ShopDatabase 
        ON (FILENAME = 'C:\...\ShopDatabase.mdf'), 
        -------------------^^^ fill this in 
        (FILENAME = 'C:\...\ShopDatabase_Log.ldf') 
        -------------------^^^ fill this in 
    FOR ATTACH; 
    
    -- if there is no log file, you may need to do: 
    
    CREATE DATABASE ShopDatabase 
        ON (FILENAME = 'C:\...\ShopDatabase.mdf') 
        -------------------^^^ fill this in 
    FOR ATTACH_REBUILD_LOG; 
    
  3. 確定MACHINE1-PC的外部IP地址(你可以從另一臺機器做到這一點通過平 - 在本地,它會告訴你127.0.0.1這是無用的)。假設你有一個固定的IP並且不使用DHCP,這很可能是一種更可靠的連接方式,或者至少缺少一個額外的步驟(解析名稱)。如果您使用DHCP,但您不想依賴此,因爲您的IP地址可能隨時間而改變。連接字符串現在應該是:

    Data Source=MACHINE1-PC\SQLEXPRESS; 
        Network=DBMSSOCN; 
        Integrated Security=True; 
        Initial Catalog=ShopDatabase; 
    
    -- or: 
    
    Data Source=<<IP Address>>\SQLEXPRESS; 
        Network=DBMSSOCN; 
        Integrated Security=True; 
        Initial Catalog=ShopDatabase; 
    
    -- (replace <<IP Address>> of course) 
    

Machine1連接字符串可能使用Data Source=.\SQLEXPRESS,但更好的是一致的,而不是保存了幾個按鍵。這樣,如果您對配置文件進行其他更改等,則可以將其分發到其他機器,而無需更改機器名稱。

+0

在MACHINE1-PC上。我移動了這些文件。我使用Visual Studio 2010-> New sql express 2008數據庫項目附加了數據庫。我使用了連接字符串。在MACHINE1-PC上運行我的應用程序後,出現此錯誤:「System.Data.SqlClient.SqlException(0x80131904):建立與SQL Server的連接時發生網絡相關或實例特定的錯誤。未找到服務器或(提供者:SQL網絡接口,錯誤:26 - 錯誤定位服務器/實例指定)「 – CoOlDud3 2013-03-24 15:22:29

+0

@ CoOlDud3您是否嘗試過'。\ SQLEXPRESS '或' \ SQLEXPRESS'?您可以在同一臺機器上從Management Studio連接到您的數據庫嗎? – 2013-03-24 18:18:24

+0

我使用Ray-PC \ SQLEXPRESS先生,因爲我沒有使用靜態IP。我目前在我的任一臺機器上都沒有** Sql Server Management Studio **。我使用** Visual Studio 2010 **創建了數據庫。我使用Visual Studio 2010測試了連接,它表示Connection Succeeded。但是當我運行我的應用程序時,它給了我與上面相同的錯誤 – CoOlDud3 2013-03-24 20:41:11