EXEC master.dbo.sp_attach_db @dbname = “MI_BASE_DE_DATOS”,
@filename1 = “c:\bases_de_datos\mi_base_de_datos.mdf”,
@filename2 = “c:\bases_de_datos\mi_base_de_datos.ldf”,
El código para separar es el siguiente:
EXEC master.dbo.sp_detach_db @dbname = “MI_BASE_DE_DATOS”,,
@keepfulltextindexfile = N'true'
Pero esto queda un poquito solo, unos scripts y nada más, vamos a crear unos Stored Procedures para realizar estas tareas. De esta manera podremos ejecutar este código desde SQL Server o desde una aplicación llamando a los stored procedures.
A la Stored Procedure para adjuntar bases de datos le pasaremos por parámetros el nombre de la base de datos y la ruta física de disco:
CREATE Procedure [dbo].[AttachDatabase]
@database varchar(250),
@ruta varchar(1000)
As
declare @ruta_log varchar(1000)
Set @ruta_log = (@ruta + @database + '_log.ldf')
Set @ruta = @ruta + @database + '.mdf'
EXEC master.dbo.sp_attach_db @dbname = @database,
;@filename1 = @ruta,
@filename2 = @ruta_log
Y al Stored Procedure para separar bases de datos le pasaremos por parámetros el nombre de la base de datos:
ALTER Procedure [dbo].[DetachDatabase]
@database varchar(250)
As
EXEC master.dbo.sp_detach_db @dbname = @database,
@keepfulltextindexfile = N'true'
Estos SP los podríamos llamar desde una aplicación hecha en C# con el siguiente código:
Using (SqlConnection connection =
new SqlConnection("Server=SQL08;Database=PUBS;Uid=sa;Pwd=")) {
connection.Open();
SqlCommand cmd = new SqlCommand("AttachDatabase", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@database", SqlDbType.VarChar);
cmd.Parameters["@database"].Value = "NORTHWND";
cmd.Parameters.Add("@ruta", SqlDbType.VarChar);
cmd.Parameters["@ruta"].Value = "E:\\SQL Server\\SQL08\\";
cmd.ExecuteNonQuery();
cmd.Dispose();
}
Y para separarla:
using (SqlConnection connection =
new SqlConnection("Server=SQL08;Database=PUBS;Uid=sa;Pwd=")) {
connection.Open();
SqlCommand cmd = new SqlCommand("DetachDatabase", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@database", SqlDbType.VarChar);
cmd.Parameters["@database"].Value = "Northwind";
cmd.ExecuteNonQuery();
cmd.Dispose();
}
Renombrar los ficheros a .csAttachDetach.aspx
AttachDetach.aspx.cs
Y esto es todo, feliz programming!!
Saludos
Alex.