Sql server 2008 UNC共享上的SQL Server数据库

Sql server 2008 UNC共享上的SQL Server数据库,sql-server-2008,unc,Sql Server 2008,Unc,我有两台机器分别运行一个C.net windows窗体应用程序。我希望它们都连接到其中一台计算机中的单个SQL Server数据库。我喜欢这两个应用程序都使用同一个数据库。但不幸的是,我遇到了UNC共享的问题。有办法解决这个问题吗?或者我必须尝试不同的方法。请帮帮我。非常感谢。AttachDbFileName是一个可怕的误导性功能。所发生的情况是,每个连接到此数据库的应用程序都会生成数据文件的副本。因此,如果Machine1连接并进行更改,这些更改对Machine2是不可见的。即使在单机场景中,

我有两台机器分别运行一个C.net windows窗体应用程序。我希望它们都连接到其中一台计算机中的单个SQL Server数据库。我喜欢这两个应用程序都使用同一个数据库。但不幸的是,我遇到了UNC共享的问题。有办法解决这个问题吗?或者我必须尝试不同的方法。请帮帮我。非常感谢。

AttachDbFileName是一个可怕的误导性功能。所发生的情况是,每个连接到此数据库的应用程序都会生成数据文件的副本。因此,如果Machine1连接并进行更改,这些更改对Machine2是不可见的。即使在单机场景中,这也会导致很多混乱,因为人们将通过VisualStudio进行连接,进行一些更新,然后从ManagementStudio中看不到它。反之亦然。出于某种原因;请停止使用这两个

由于您希望多台计算机/应用程序连接到数据库的同一副本,因此您希望的解决方案是将数据库的单个副本连接到SQL Server的单个实例,并且两台应用程序/计算机都只连接到该单个副本

在MACHINE1-PC上执行以下操作:

将ShopDatabase.mdf及其关联的.ldf文件移出您的用户文件夹,并移动到实例的数据文件夹中。这将类似于:

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

使用。\SQLEXPRESS连接到本地Express实例。使用以下代码:

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;
确定MACHINE1-PC的外部IP地址您可以通过从另一台机器ping执行此操作-在本地它将告诉您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上,您的连接字符串可以使用数据源=。\SQLEXPRESS,但保持一致比保存几次击键要好。这样,如果您对配置文件等进行了其他更改,则可以将这些更改分发到其他计算机,而无需更改计算机名称。

直接使用SQL Server。在UNC上使用SQL Server是一个非常糟糕的主意。1.我遇到了UNC的共享问题。我们无法读懂你的心思。既然这似乎是你的主要问题,为什么不描述一下呢?2.可怕的问题标题。它基本上是一个标记列表,但根本没有描述您的问题。我如何实现它?停止使用ATTACHDBFILENAME。如果希望两个应用程序都连接到同一个数据库,请将该数据库连接到SQL Server的单个实例,然后使用数据库的逻辑名称进行连接,此文件路径中没有任何内容。在MACHINE1-PC上,我移动了这些文件。我使用visual studio 2010->New sql express 2008数据库项目附加了数据库。我使用了您的连接字符串。在MACHINE1-PC上运行我的应用程序后,我收到以下错误:System.Data.SqlClient.SqlException 0x80131904:在建立与SQL Server的连接时发生网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。提供程序:SQL网络接口,错误:26-定位服务器/实例时出错Specified@CoOlDud3您是否尝试过。\SQLEXPRESS或\SQLEXPRESS?您能从同一台计算机上的Management Studio连接到您的数据库吗?我使用的是Ray PC\SQLEXPRESS sir,因为我没有使用静态IP。我目前在两台机器上都没有Sql Server Management Studio。我使用VisualStudio2010创建了数据库。我使用VisualStudio2010测试了连接,结果显示连接成功。但当我运行我的应用程序时,它会给我与上面相同的错误