Publicidad

Adjuntar y separar bases de datos de SQL Sever desde código.


Por Alex el 07/03/2010 , Comentar el artículo

Comparte este artículo:        




Con unas sencillas líneas de código en T-SQL podemos adjuntar (attach) o separar (detach) bases de datos desde SQL Server, c#, ASP.NET o desde la aplicación que estemos desarrollando.


El código para adjuntar es el siguiente:

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 .cs
AttachDetach.aspx
AttachDetach.aspx.cs

Y esto es todo, feliz programming!!
Saludos
Alex.


Si te ha gustado el artículo compartelo en:        


Publicidad


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.