1

使用 VC#,我创建了一个员工管理应用程序,它在第一次运行时会向用户查询将驻留在远程计算机上的 (.mdf) 数据库的路径。结果路径可能类似于

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 共享上。

有任何想法吗?


Jim Lamb 建议我连接到远程运行的 SQL Server 实例。考虑到我正在使用 LINQ to SQL,我必须进行哪些重构才能实现这一点?其他想法仍然受欢迎 - 特别是“按下这个按钮,一切都会工作”的解决方案。


另一个线索:一位同事说,曾经有一些方法可以通过控制面板->管理工具->数据源(ODBC),这样就可以从我的计算机上查看远程数据库,就好像它是本地的一样。除此以外,同事不知道更多细节。

4

1 回答 1

4

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

于 2010-07-06T17:55:17.083 回答