打开中的问题或在C#中使用master.mdf数据库

时间:2011-08-08 10:09:47

标签: c# sql database visual-studio connection-string

我定义之前需要的Sql_Cmd和其他sql变量 现在写下这段代码:

string strConnection2 = "Data Source=.\\sqlexpress;AttachDbFilename=master.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection sqlcon2 = new SqlConnection(strConnection2);
string sql = "select * ";
Sql_Cmd.CommandType = CommandType.Text;
Sql_Cmd.CommandText = sql;
Sql_Cmd.Connection = sqlcon2;
try
{
    sqlcon2.Open();
    Sql_Cmd.ExecuteNonQuery();
}
catch (SqlException Error_Exception)
{
    //FormError1 = new FormErrorInDataBase();
    //FormError1.Show();
}

当我想要打开sqlcon2时,我看到了这个错误:

  
    

尝试为文件master.mdf附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上。

  

请帮助我 - 如何打开master database然后对此数据库使用select查询,以及master.mdf的连接字符串是什么?

我可以写mater.mdf目录,例如C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\master.mdf,还是写AttachDbFilename=master.mdf就够了?

3 个答案:

答案 0 :(得分:2)

您是否正在尝试打开“主数据库”?名为“master”的系统数据库由SQL Server在内部使用,不应/不需要以这种方式打开或连接。如果没有,你将不得不将数据库称为“master”以外的东西 - 这是一个保留的数据库名称。

答案 1 :(得分:1)

再次检查您的参数。添加.mdf文件的正确语法如下。在连接到本地SQL Server Express实例时附加数据库文件:

Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes;

为什么需要数据库参数?如果已附加指定的数据库,则SQL Server不会重新附加它。它使用附加的数据库作为连接的默认值。

请参阅:connectionstrings.com

答案 2 :(得分:1)

master数据库是系统数据库,包含有关SQL Server实例的系统信息,有关此实例中包含的数据库的信息等。 SQL Server启动时会自动打开此数据库。 因此,当您想要连接到SQL Server时,master数据库已经存在且无法附加。您可以看到有关此数据库的信息here 我无法理解为什么需要附加此数据库。也许您不需要附加此数据库,但只能连接到它?如果是这样,您需要更改代码:

string strConnection2 = "Data Source=.\\sqlexpress;initial catalog=master;Integrated Security=True;Connect Timeout=30;"