【发布时间】:2016-02-29 12:51:57
【问题描述】:
我的项目中有一个登录表单,我编写以下代码以在此登录表单加载时附加我的数据库(在 d:\ 中):
try
{
SqlConnection con = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True");
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select name from sys.databases", con);
DataTable dt = new DataTable();
da.Fill(dt);
string[] array = dt
.AsEnumerable()
.Select(row => row.Field<string>("Name"))
.ToArray();
if (!array.Contains("cstmrDB", StringComparer.OrdinalIgnoreCase))
{
SqlCommand cmd = new SqlCommand("sp_attach_db");
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@dbname", "Apdb");
cmd.Parameters.AddWithValue("@filename1", @"d:\Apdb.mdf");
cmd.ExecuteNonQuery();
}
}
catch (exception ex)
{
messagebox.show(ex.message);
}
它在我的笔记本电脑上运行良好。我发布我的项目(使用 c# 发布)并安装 SQL Server 和我的项目,并将我的数据库复制到另一台 PC 的 d:\ 中。但是当我运行我的项目时,数据库不会附加!我不知道为什么会出现这个问题......但我想可能是因为我没有编写任何代码来定义 *.ldf 文件(但我将 mdf 和 ldf 文件都放在 d:\ 中)
错误:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。
服务器未找到或无法访问。验证实例名称是否正确,并且 SQL Server 已配置为允许远程连接。
(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
【问题讨论】:
-
你在 catch 中遇到任何错误吗?
-
嗯,是的,基本的调试技能真的很难掌握。首先捕获异常并查看 SQL Server 日志以了解发生了什么。我很确定这个电话不会神奇地什么都不做。
-
@DynamicVariable 问题已更新
-
@TomTom 是的,“。”将您连接到本地实例,您通常使用 SQL Server express 以以下形式看到它:
.\MYINSTANCE。 -
请不要将标签直接放在标题中。有关详细信息,请参阅Should questions include tags in the title
标签: c# sql-server winforms