使用 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),这样就可以从我的计算机上查看远程数据库,就好像它是本地的一样。除此以外,同事不知道更多细节。