Método uno:
1. Si no se especifica ningún nombre lógico al adjuntar la base de datos, se mostrará como "ruta completa en mayúsculas" en SQL2005. Por ejemplo, cuando los archivos de base de datos D:MyTest.mdf y D:MyTest.ldf se adjuntan al servidor SQL, si no se especifica ningún nombre lógico, se mostrarán como "D:MYTEST.MDF" en SQL2005. En este momento, la cadena de conexión de C# es "DataSource=dsName;AttatchDBFilename="D:MyTest.mdf";User ID=id;Password=pw";
2. Si se especifica un nombre lógico al adjuntar la base de datos, se mostrará como "nombre lógico" en SQL2005. En este momento, la cadena de conexión de C# es "DataSource=dsName;AttatchDBFilename="D:MyTest.mdf". ;Catálogo inicial =aa_NombreLógico;ID de usuario=id;Contraseña=pw”;
3. El nombre de la base de datos adjunta no se puede cambiar a voluntad; de lo contrario, es fácil que se produzcan errores.
Método dos:
cadena DbPath=System.Environment.CurrentDirectory +@"Demo_Data.MDF ";
cadena LogPath=System.Environment.CurrentDirectory +@"Demo_Log.LDF ";
string StrSql="exec sp_attach_db @dbname='supmark',@filename1='"+DbPath+"',@filename2='"+LogPath+"'";
string strcon="Servidor=(local);Seguridad integrada=SSPI;Base de datos=maestro";
SqlConnection cn=nueva SqlConnection(strcon);
SqlCommand cmd = nuevo SqlCommand (StrSql,cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Cerrar();
Código detallado del método tres:
usando Sistema;
usando System.Collections.Generic;
usando System.Windows.Forms;
usando System.Data.SqlClient;
usando System.Data;
usando System.ServiceProcess;
espacio de nombres AdminZJC.DataBaseControl
{
/// <resumen>
/// Clase de control de operación de base de datos
/// </summary>
clase pública DataBaseControl
{
/// <resumen>
/// Cadena de conexión a la base de datos
/// </summary>
cadena pública ConnectionString;
/// <resumen>
/// declaración de operación SQL/procedimiento almacenado
/// </summary>
cadena pública StrSQL;
/// <resumen>
/// Crear una instancia de un objeto de conexión de base de datos
/// </summary>
Conexión SqlConnection privada;
/// <resumen>
/// Crear una instancia de un nuevo objeto de operación de base de datos Comm
/// </summary>
comunicación privada SqlCommand;
/// <resumen>
/// El nombre de la base de datos a operar.
/// </summary>
cadena pública NombreBaseDatos;
/// <resumen>
/// Dirección completa del archivo de base de datos
/// </summary>
cadena pública DataBase_MDF;
/// <resumen>
/// Dirección completa del archivo de registro de la base de datos
/// </summary>
cadena pública DataBase_LDF;
/// <resumen>
/// nombre del archivo de copia de seguridad
/// </summary>
cadena pública DataBaseOfBackupName;
/// <resumen>
/// Ruta del archivo de respaldo
/// </summary>
cadena pública DataBaseOfBackupPath;
/// <resumen>
/// Realizar operaciones para crear/modificar bases de datos y tablas.
/// </summary>
público vacío DataBaseAndTableControl()
{
intentar
{
Conexión = nueva SqlConnection(ConnectionString);
Conexión.Abierto();
Comunicaciones = nuevo SqlCommand();
Conexión de comunicación = Conexión;
Comm.CommandText = StrSQL;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show ("¡Operación de base de datos exitosa!", "Mensaje de información", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
captura (Excepción ex)
{
MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexión.Cerrar();
}
}
/// <resumen>
/// Base de datos adjunta
/// </summary>
AddDataBase pública vacía()
{
intentar
{
Conexión = nueva SqlConnection(ConnectionString);
Conexión.Abierto();
Comunicaciones = nuevo SqlCommand();
Conexión de comunicación = Conexión;
Comm.CommandText = "sp_attach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"filename1", SqlDbType.NVarChar));
Comm.Parameters[@"filename1"].Valor = DataBase_MDF;
Comm.Parameters.Add(new SqlParameter(@"filename2", SqlDbType.NVarChar));
Comm.Parameters[@"filename2"].Valor = DataBase_LDF;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("Base de datos adjunta correctamente", "Mensaje de información", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
captura (Excepción ex)
{
MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexión.Cerrar();
}
}
/// <resumen>
/// Base de datos separada
/// </summary>
vacío público EliminarDataBase()
{
intentar
{
Conexión = nueva SqlConnection(ConnectionString);
Conexión.Abierto();
Comunicaciones = nuevo SqlCommand();
Conexión de comunicación = Conexión;
Comm.CommandText = @"sp_detach_db";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.CommandType = CommandType.StoredProcedure;
Comm.ExecuteNonQuery();
MessageBox.Show("Separación de la base de datos exitosa", "Solicitud de información", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
captura (Excepción ex)
{
MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexión.Cerrar();
}
}
/// <resumen>
/// Copia de seguridad de la base de datos
/// </summary>
BackupDataBase pública vacía()
{
intentar
{
Conexión = nueva SqlConnection(ConnectionString);
Conexión.Abierto();
Comunicaciones = nuevo SqlCommand();
Conexión de comunicación = Conexión;
Comm.CommandText = "usar master; hacer una copia de seguridad de la base de datos @dbname en el disco = @backupname;";
Comm.Parameters.Add(new SqlParameter(@"dbname", SqlDbType.NVarChar));
Comm.Parameters[@"dbname"].Value = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"backupname", SqlDbType.NVarChar));
Comm.Parameters[@"backupname"].Value = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("Copia de seguridad de la base de datos exitosa", "Mensaje de información", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
captura (Excepción ex)
{
MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexión.Cerrar();
}
}
/// <resumen>
///Restaurar base de datos
/// </summary>
vacío público ReemplazarDataBase()
{
intentar
{
cadena BackupFile = @DataBaseOfBackupPath + @DataBaseOfBackupName;
Conexión = nueva SqlConnection(ConnectionString);
Conexión.Abierto();
Comunicaciones = nuevo SqlCommand();
Conexión de comunicación = Conexión;
Comm.CommandText = "usar maestro; restaurar la base de datos @DataBaseName Desde el disco = @BackupFile con reemplazar;";
Comm.Parameters.Add(new SqlParameter(@"DataBaseName", SqlDbType.NVarChar));
Comm.Parameters[@"DataBaseName"].Valor = DataBaseName;
Comm.Parameters.Add(new SqlParameter(@"BackupFile", SqlDbType.NVarChar));
Comm.Parameters[@"BackupFile"].Value = BackupFile;
Comm.CommandType = CommandType.Text;
Comm.ExecuteNonQuery();
MessageBox.Show("Base de datos restaurada exitosamente", "Mensaje de información", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
captura (Excepción ex)
{
MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finalmente
{
Conexión.Cerrar();
}
}
}
}
/*
///Ejemplo de llamada:
#------------------------------------------------- --Restaurar base de datos---------------------------------------------- -------------#
botón de anulación privado0_Click (remitente del objeto, EventArgs e)
{
DataBaseControl DBC = nuevo DataBaseControl();
DBC.ConnectionString = "Fuente de datos = (local); ID de usuario = sa; Contraseña = 123456; Catálogo inicial = maestro";
DBC.DataBaseName = "Mi base de datos";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Archivos de programaMicrosoft SQL ServerMSSQLData";
DBC.ReplaceDataBase();
}
#------------------------------------------------- Base de datos adicional------------------------------------------------ -----------#
botón de anulación privado1_Click_1 (remitente del objeto, EventArgs e)
{
DataBaseControl DBC = nuevo DataBaseControl();
DBC.ConnectionString = "Fuente de datos = (local); ID de usuario = sa; Contraseña = 123456; Catálogo inicial = maestro";
DBC.DataBaseName = "Mi base de datos";
DBC.DataBase_MDF = @"D:Archivos de programaMicrosoft SQL ServerMSSQLDataMyDatabase_Data.MDF";
DBC.DataBase_LDF = @"D:Archivos de programaMicrosoft SQL ServerMSSQLDataMyDatabase_Log.LDF";
DBC.AddDataBase();
}
#----------------------------------------Base de datos de respaldo------- -------------------------------------------------- ----------#
botón de anulación privado2_Click (remitente del objeto, EventArgs e)
{
DataBaseControl DBC = nuevo DataBaseControl();
DBC.ConnectionString = "Fuente de datos = (local); ID de usuario = sa; Contraseña = 123456; Catálogo inicial = maestro";
DBC.DataBaseName = "Mi base de datos";
DBC.DataBaseOfBackupName = @"back.bak";
DBC.DataBaseOfBackupPath = @"D:Archivos de programaMicrosoft SQL ServerMSSQLData";
DBC.BackupDataBase();
}
#-----------------------------------------------------Base de datos separada-- ---- ---------------------------------------------- ---- --------#
botón de anulación privado3_Click (remitente del objeto, EventArgs e)
{
DataBaseControl DBC = nuevo DataBaseControl();
DBC.ConnectionString = "Fuente de datos = (local); ID de usuario = sa; Contraseña = 123456; Catálogo inicial = maestro";
DBC.DataBaseName = "Mi base de datos";
DBC.DeleteDataBase();