Способ первый:
1. Если при подключении базы данных не указано логическое имя, в SQL2005 оно будет отображаться как «полный путь в верхнем регистре». Например, если файлы базы данных D:MyTest.mdf и D:MyTest.ldf подключены к серверу SQL, если логическое имя не указано, они будут отображаться как «D:MYTEST.MDF» в SQL2005. В настоящее время строка подключения C# имеет вид «DataSource=dsName;AttatchDBFilename="D:MyTest.mdf";User ID=id;Password=pw»;
2. Если при подключении базы данных указано логическое имя, оно будет отображаться как «логическое имя» в SQL2005. В настоящее время строка подключения C# имеет вид «DataSource=dsName;AttatchDBFilename="D:MyTest.mdf". ;Исходный каталог =aa_LogicName;Идентификатор пользователя=id;Пароль=pw”;
3. Имя прикрепленной базы данных нельзя изменить произвольно, иначе могут легко возникнуть ошибки;
Способ второй:
строка DbPath=System.Environment.CurrentDirectory +@"Demo_Data.MDF ";
строка LogPath=System.Environment.CurrentDirectory +@"Demo_Log.LDF ";
string StrSql="exec sp_attach_db @dbname='supmark',@filename1='"+DbPath+"',@filename2='"+LogPath+"'";
string strcon="Сервер=(локальный);Встроенная безопасность=SSPI;База данных=мастер";
SqlConnection cn = новый SqlConnection (strcon);
SqlCommand cmd = новая SqlCommand (StrSql, cn);
сп.Открыть();
cmd.ExecuteNonQuery();
сп.Закрыть();
Подробный код третьего метода:
использование системы;
использование System.Collections.Generic;
использование System.Windows.Forms;
использование System.Data.SqlClient;
использование System.Data;
использование System.ServiceProcess;
пространство имен AdminZJC.DataBaseControl
{
/// <сводка>
/// Класс управления работой базы данных
/// </сводка>
общедоступный класс DataBaseControl
{
/// <сводка>
/// Строка подключения к базе данных
/// </сводка>
общедоступная строка ConnectionString;
/// <сводка>
///оператор операции SQL/хранимая процедура
/// </сводка>
общедоступная строка StrSQL;
/// <сводка>
/// Создаем экземпляр объекта подключения к базе данных
/// </сводка>
частный SqlConnection Conn;
/// <сводка>
/// Создать экземпляр нового объекта операции с базой данных Comm
/// </сводка>
частный SqlCommand Comm;
/// <сводка>
/// Имя базы данных, с которой будем работать
/// </сводка>
общедоступная строка DataBaseName;
/// <сводка>
/// Полный адрес файла базы данных
/// </сводка>
общедоступная строка DataBase_MDF;
/// <сводка>
/// Полный адрес файла журнала базы данных
/// </сводка>
общедоступная строка DataBase_LDF;
/// <сводка>
/// Имя файла резервной копии
/// </сводка>
общедоступная строка DataBaseOfBackupName;
/// <сводка>
/// Путь к файлу резервной копии
/// </сводка>
общедоступная строка DataBaseOfBackupPath;
/// <сводка>
/// Выполняем операции по созданию/изменению баз данных и таблиц
/// </сводка>
общественная пустота DataBaseAndTableControl()
{
пытаться
{
Conn = новый SqlConnection (ConnectionString);
Конн.Открыть();
Comm = новый SqlCommand();
Комм.Соединение = Соединение;
Comm.CommandText = StrSQL;
ТипКоманды.ТипКоманды = ТипКоманды.Текст;
Comm.ExecuteNonQuery();
MessageBox.Show("Работа с базой данных выполнена успешно!", "Информационная подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
поймать (Исключение ex)
{
MessageBox.Show(ex.Message, «Приглашение к сообщению», MessageBoxButtons.OK, MessageBoxIcon.Information);
}
окончательно
{
Соединение.Закрыть();
}
}
/// <сводка>
/// Прикрепленная база данных
/// </сводка>
публичная недействительность AddDataBase()
{
пытаться
{
Conn = новый SqlConnection (ConnectionString);
Конн.Открыть();
Comm = новый SqlCommand();
Комм.Соединение = Соединение;
Comm.CommandText = "sp_attach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Значение = ИмяБазыДанных;
Comm.Parameters.Add(new SqlParameter(@"filename1", SqlDbType.NVarChar));
Comm.Parameters[@"filename1"].Значение = DataBase_MDF;
Comm.Parameters.Add(new SqlParameter(@"filename2", SqlDbType.NVarChar));
Comm.Parameters[@"filename2"].Значение = DataBase_LDF;
ТипКоманды.ТипКоманды = ТипКоманды.СохраненнаяПроцедура;
Comm.ExecuteNonQuery();
MessageBox.Show("База данных успешно присоединена", "Информационная подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
поймать (Исключение ex)
{
MessageBox.Show(ex.Message, «Приглашение к сообщению», MessageBoxButtons.OK, MessageBoxIcon.Information);
}
окончательно
{
Соединение.Закрыть();
}
}
/// <сводка>
/// Отдельная база данных
/// </сводка>
публичная недействительность DeleteDataBase()
{
пытаться
{
Conn = новый SqlConnection (ConnectionString);
Конн.Открыть();
Comm = новый SqlCommand();
Комм.Соединение = Соединение;
Comm.CommandText = @"sp_detach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Значение = ИмяБазыДанных;
ТипКоманды = ТипКоманды.СохраненнаяПроцедура;
Comm.ExecuteNonQuery();
MessageBox.Show("Разделение базы данных выполнено успешно", "Информационная подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
поймать (Исключение ex)
{
MessageBox.Show(ex.Message, «Приглашение к сообщению», MessageBoxButtons.OK, MessageBoxIcon.Information);
}
окончательно
{
Соединение.Закрыть();
}
}
/// <сводка>
/// Резервное копирование базы данных
/// </сводка>
общественная недействительность BackupDataBase()
{
пытаться
{
Conn = новый SqlConnection (ConnectionString);
Конн.Открыть();
Comm = новый SqlCommand();
Комм.Соединение = Соединение;
Comm.CommandText = "использовать master;резервное копирование базы данных @dbname на диск = @backupname;";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Значение = ИмяБазыДанных;
Comm.Parameters.Add(new SqlParameter(@"backupname", SqlDbType.NVarChar));
Comm.Parameters[@"backupname"].Значение = @DataBaseOfBackupPath + @DataBaseOfBackupName;
ТипКоманды.ТипКоманды = ТипКоманды.Текст;
Comm.ExecuteNonQuery();
MessageBox.Show("Резервное копирование базы данных выполнено успешно", "Информационная подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
поймать (Исключение ex)
{
MessageBox.Show(ex.Message, «Приглашение к сообщению», MessageBoxButtons.OK, MessageBoxIcon.Information);
}
окончательно
{
Соединение.Закрыть();
}
}
/// <сводка>
///Восстановить базу данных
/// </сводка>
публичная недействительность replaceDataBase()
{
пытаться
{
строка BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Conn = новый SqlConnection (ConnectionString);
Конн.Открыть();
Comm = новый SqlCommand();
Комм.Соединение = Соединение;
Comm.CommandText = "использовать master;восстановить базу данных @DataBaseName с диска = @BackupFile с заменой;";
Comm.Parameters.Add(new SqlParameter(@"DataBaseName", SqlDbType.NVarChar));
Comm.Parameters[@"DataBaseName"].Значение = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"BackupFile", SqlDbType.NVarChar));
Comm.Parameters[@"BackupFile"].Value = BackupFile;
ТипКоманды.ТипКоманды = ТипКоманды.Текст;
Comm.ExecuteNonQuery();
MessageBox.Show("База данных успешно восстановлена", "Информационная подсказка", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
поймать (Исключение ex)
{
MessageBox.Show(ex.Message, «Приглашение к сообщению», MessageBoxButtons.OK, MessageBoxIcon.Information);
}
окончательно
{
Соединение.Закрыть();
}
}
}
}
/*
///Пример вызова:
#------------------------------------------------ - --Восстановить базу данных---------------------------------------------- -- ------------#
частная пустота button0_Click (отправитель объекта, EventArgs e)
{
DataBaseControl DBC = новый DataBaseControl();
DBC.ConnectionString = "Источник данных=(локальный);Идентификатор пользователя=sa;Пароль=123456; Исходный каталог=мастер";
DBC.DataBaseName = "МояБаза Данных";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
ДБК.ЗаменитьБазуДанных();
}
#------------------------------------------------ - Дополнительная база данных------------------------------------------------ - ----------#
частная пустота button1_Click_1 (отправитель объекта, EventArgs e)
{
DataBaseControl DBC = новый DataBaseControl();
DBC.ConnectionString = "Источник данных=(локальный);Идентификатор пользователя=sa;Пароль=123456; Исходный каталог=мастер";
DBC.DataBaseName = "МояБаза Данных";
DBC.DataBase_MDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:Program FilesMicrosoft SQL ServerMSSQLDataMyDatabase_Log.LDF";
ДБК.ДобавитьБазуДанных();
}
#----------------------------------------Резервное копирование базы данных------- -- ------------------------------------------------ -- ---------#
частная пустота button2_Click (отправитель объекта, EventArgs e)
{
DataBaseControl DBC = новый DataBaseControl();
DBC.ConnectionString = "Источник данных=(локальный);Идентификатор пользователя=sa;Пароль=123456; Исходный каталог=мастер";
DBC.DataBaseName = "МояБаза Данных";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Program FilesMicrosoft SQL ServerMSSQLData";
ДБК.БазаРезервных Данных();
}
#---------------------------------------------Отдельная база данных-- ---- ---------------------------------------------- ---- --------#
частная пустота button3_Click (отправитель объекта, EventArgs e)
{
DataBaseControl DBC = новый DataBaseControl();
DBC.ConnectionString = "Источник данных=(локальный);Идентификатор пользователя=sa;Пароль=123456; Исходный каталог=мастер";
DBC.DataBaseName = "МояБаза Данных";
ДБК.УдалитьБазуДанных();