使用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服务器实例。考虑到我正在使用LINQ to SQL,我需要做哪些重构才能实现这一点?其他想法仍然受欢迎 - 特别是“按下这个按钮,一切都会正常”解决方案。
另一条线索:一位同事表示以前通过控制面板工作的方式 - >管理工具 - >数据源(ODBC),以便可以从我的计算机上查看远程数据库,就好像它是本地的一样。除此之外,同事不知道更多细节。
答案 0 :(得分:4)
您正在尝试通过网络连接连接到另一台计算机上的数据库文件,SQL Express不支持该文件。您需要制作本地副本并附加到该副本,或连接到与MDF文件在同一台计算机上运行的SQL实例。