连接到网络驱动器中的数据库

时间:2014-08-25 16:54:46

标签: c# sql networking

我是SQL Server和.net的新手。如果在投票前我的问题不明确,请告诉我。

我正在使用C#开发Windows应用程序。我应该选择用户连接到网络驱动器上的.mdf文件。在我的机器上,我有Windows和SQL Server身份验证。用户有SQL身份验证,因此我应该使用userid和pwd。我自己和用户在该网络驱动器上工作,读/写/修改。我们几乎共享文档,添加和删除网络驱动器中的文档。

这是设计师

UI design

我将选择位于网络驱动器中的SQL Server数据库.mdf文件,然后进行测试连接。对于测试连接,这是代码

 string sTemp = System.Configuration.ConfigurationManager.AppSettings["connectionStringShare"];

 string connectionString = sTemp.Replace("{AppDir}", txtDB.Text.Trim());

 using (SqlConnection objSqlConnection = new SqlConnection(connectionString))
 {
          try
          {
              objSqlConnection.Open();
              objSqlConnection.Close();
              MessageBox.Show("Connection is successfull");
          }
          catch (Exception ex)
          {
              MessageBox.Show("Error : " + ex.Message.ToString());

          }
}

这是连接字符串

<add key="connectionStringShare" 
     value="Data Source=.\SQLEXPRESS;Initial Catalog=TableSQLExpress;AttachDBFilename={AppDir};Integrated Security=SSPI;user id=sa;password=pwd;" />

以下是我收到的错误消息

  

文件“S:\ zrep \ TableSQLExpress.mdf”的目录查找失败,出现操作系统错误3(系统找不到指定的路径。)。
  无法将文件'S:\ zrep \ TableSQLExpress.mdf'作为数据库'TableSQLExpress'附加。

我更改了连接字符串并尝试使用Windows身份验证。没运气。如果我需要提供任何其他详细信息,请与我们联系。由于我是这个领域的新手,请给我详细解答。我很高兴找到这个小组。感谢所有关注此事的人。

1 个答案:

答案 0 :(得分:1)

当您使用基于服务器的SQL Server(即 Microsoft SQL Server Express )时,您无法通过网络驱动器共享数据库文件,这是设计使然。即使您使用交换机覆盖默认的SQL Server行为并为数据库启用UNC路径,您的数据也会被尝试使用单个数据库MDF文件的多个服务器实例损坏。如果需要在无服务器环境中托管数据库(仅使用网络驱动器),则可以选择 Microsoft SQL Server Compact SQL Server CE )版本。但请注意,在这种情况下,只有一个用户可以同时访问数据库文件(独占锁定 - >低性能)。加上 SQL Server CE 没有存储过程。