c# - 通过 |DataDirectory| 在另一台计算机中的 SQL 数据库连接失败

标签 c# sql connection localdb

我有一个数据库和一个服务器应用程序,在我的计算机上运行时一切正常。

string ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename='|DataDirectory|\Fabrica.mdf';Integrated Security=True;Connect Timeout=30";

问题是:我必须在另一台计算机上运行这个应用程序,并且数据库也必须在那里,当服务器应用程序试图访问数据库时,它什么都不返回。是不是认证有问题?文件路径?

@Edit:这是我访问表格的方式:

SqlConnection con = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = String.Format("SELECT * FROM {0}", Table);
string name;
SqlDataReader reader;
try
{
    con.Open();
    reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        name = reader["Name"].ToString();
    }
    con.Close();
}
catch (Exception e)
{
    MessageBox.Show(e.ToString());
}

@Edit:我不知道这是否有帮助,但我在另一台计算机上安装了 SQL Server LocalDB 和 SQL Server Express。

最佳答案

授权和文件路径都很重要。

LocalDB 安装在计算机 A 和 LocalDB 中,SQL Sever Express 安装在计算机 B(服务器)中?

LocalDB 就是名称“Local”的含义。这意味着如果您想移动到另一台计算机,则必须将 LocalDB 重新本地化到计算机 B。

手动方式比较复杂,需要先将LocalDB从计算机A的LocalDB服务器上分离出来(ALTER DATABASE IMMEDIATE ROLLBACK必须提前完成),然后将LocalDB文件复制到计算机B,并将LocalDB文件附加到计算机 B 中的 LocalDB 服务器。并且 attachDBfilepath 应指示正确的路径。 |数据目录|是服务器应用程序的数据目录,它不是服务器应用程序的执行目录。 重要的是,由于 LocalDB 的所有权,需要分离和附加过程。

与上述复杂的手动方式相比,我建议使用自动方式将 LocalDB .mdf 文件添加到服务器应用程序的项目中,并确保属性为“内容”和“如果更新则复制”或“始终复制”。使用自动提供的连接字符串,但只需将部分更改为 |DataDirectory|。如果此时部署 Server 应用程序,LocalDB 也会被部署到 Server 应用程序的数据目录中,LocalDB 的所有权将自动更改为计算机 B。

我不确定您是如何使应用程序在具有 |DataDirectory| 的计算机 A 中正常运行的并希望建议了解 LocalDB 的性质和 |DataDirectory| 的含义和连接字符串。

根据我的艰难经历,这是我个人的看法,如果您使用|DataDirectory|,您只能读取(选择)而不能插入(修改)数据。这意味着我们需要在将 LocalDB 添加到项目以用作 |DataDirectory| 之前设置(插入)所有数据。

作为引用,我的案例是我已经将大数据设置(插入)到 LocalDB 中,并在部署之前将其添加到项目中,我对我的应用程序进行编码以在部署后创建一个新的另一个 LocalDB 以实现插入(修改)功能。

另请引用我给别人的回答。
Not inserting data into database and not getting any error

关于c# - 通过 |DataDirectory| 在另一台计算机中的 SQL 数据库连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37501157/

相关文章:

通过 ASP.NET 连接 MySQL

使用并行计算时 R 卡住,警告 'closing unused connection'

c# - Entity Framework 4.1 中的性能监控选项

SQL代理作业: Determine how long it has been running

c# - 这两种单例类结构有什么区别?

php - 从多对多表中排序 mysqli

php - 查询以获取关于其发票编号具有相同日期的所有行?

redis - Jedis连接到redis : JedisConnectionException

c# - 在 C# 中使用热键

c# - 无参数 Controller 构造函数 Autofac