1

在C#可执行文件连接到数据库文件中使用VC#我已经创建了一个,在其第一次运行,预计将询问用户的路径到(密度纤维板)数据库,该数据库将在工作人员的管理应用程序驻留在远程计算机上。所产生的路径可能类似于时遇到远程计算机

string dbPath = @"P:\remoteComputer\public\StaffTool\ExamplePersonnelDatabase.mdf"; 

然后我把这个字符串转换成一个连接字符串模板这样:

string dbConnectTemplate = @"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30;User Instance=True"; 
string dbConnectionString = String.Format(dbConnectionTemplate,dbPath); 

然后我试图连接到数据库的LINQ to SQL风格

ManagementDBDataContext db = new ManagementDBDataContext(
       dbConnectionString); 

此时,一个错误弹出的了,说明

文件“P:\ remoteComputer \ public \ StaffTool \ ExamplePersonnelDatabase.mdf”位于数据库文件不支持的网络路径中。

尝试附加文件P上的自动命名的数据库:\ remoteComputer \ PUBLIC \ StaffTool \ ExamplePersonnelDatabase.mdf失败。具有相同名称的数据库存在,或指定的文件无法打开,或位于UNC共享上。

由于我对数据库相对比较陌生,我完全不理解这个消息。显然,该文件不在UNC份额上。

任何想法?


吉姆·兰姆建议我远程连接到运行SQL Server的实例。考虑到我正在使用LINQ to SQL,我必须做什么重构才能做到这一点?其他想法仍然值得欢迎 - 尤其是“推动这个按钮,一切都将运行”解决方案。


另一条线索:一个同事说,曾经有一些方式,通过控制面板 - >管理工具 - >数据源(ODBC)工作,使远程数据库可以从我的电脑被看作是如果它是当地的。除此之外,同事不知道更多的细节。

+0

“该文件不在UNC共享上”:它是否“将驻留在远程计算机上” – 2010-07-06 17:56:52

+1

但是P:映射到网络共享(即UNC路径)是否正确?如果是这样的话,SQL只是认识到P:\是一个网络共享,不允许,请参阅:http://support.microsoft.com/kb/304261 – CodingGorilla 2010-07-06 17:58:00

回答

4

您正在试图通过网络连接,这是不通过SQL Express不支持连接到数据库文件的另一台机器上。您需要创建本地副本并附加到该副本,或者连接到与MDF文件在同一台计算机上运行的SQL实例。

+0

第二个选项似乎更具吸引力,但重构多少为了连接到SQL的远程实例,我必须做我的代码吗?考虑我正在使用LINQ to SQL。 – JnBrymn 2010-07-06 18:05:12

+0

你根本不需要修改你的代码 - 只是你的连接字符串。然后,当然,您需要在远程计算机上安装SQL Express,附加MDF文件等。 – 2010-07-06 19:53:09