Проблема в открытой или использовать базу данных master.mdf в C # - PullRequest
0 голосов
/ 08 августа 2011

я определяю 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 и затем использовать запрос на выборку для этой базы данных, и какова строка соединения для master.mdf?

Могу ли я написать каталог mater.mdf, например C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\master.mdf, или этого достаточно, чтобы я написал AttachDbFilename=master.mdf?

Ответы [ 3 ]

2 голосов
/ 08 августа 2011

Вы пытаетесь открыть «главную» базу данных? Системная база данных с именем «master» используется внутри SQL Server и не должна / не должна открываться или присоединяться таким образом. Если нет, вам придется называть вашу базу данных чем-то иным, чем «master» - это зарезервированное имя базы данных.

1 голос
/ 08 августа 2011

master database - это системная база данных, которая содержит системную информацию об экземпляре SQL Server, информацию о базах данных, содержащихся в этом экземпляре, и так далее. Эта база данных открывается автоматически при запуске SQL Server. Таким образом, когда вы хотите подключиться к SQL Server, основная база данных уже существует и не может быть присоединена. Информацию об этой базе данных вы можете увидеть здесь Я не могу понять, почему вам нужно прикрепить эту базу данных. Может быть, вам не нужно прикреплять эту базу данных, а только подключаться к ней? Если это так, вам нужно изменить код:

string strConnection2 = "Data Source=.\\sqlexpress;initial catalog=master;Integrated Security=True;Connect Timeout=30;"
1 голос
/ 08 августа 2011

Проверьте ваши параметры еще раз. Правильный синтаксис для добавления .mdf-файла заключается в следующем. Присоедините файл базы данных при подключении к локальному экземпляру SQL Server Express:

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

Зачем нужен параметр базы данных? Если указанная база данных уже подключена, SQL Server не присоединяет ее повторно. Он использует подключенную базу данных по умолчанию для подключения.

См .: connectionstrings.com

...