Publicidad

Crear, copiar y borrar bases de datos SQL Server desde c#.


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

Comparte este artículo:        




Utilizando el modelo de objetos de SQL Server, SMO, es muy sencillo manipular bases de datos desde código. Desde Visual Studio en c# o desde una página web.


Hay que añadir los siguientes espacios de nombre de SQL Server smo.

Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Management.Sdk.Sfc
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SmoExtended
Microsoft.SqlServer.SqlEnum
Si tenéis varias versiones de SQL Server instaladas tendréis varios componentes, es decir, si tenéis instalado el SQL Server 2005 y 2008 hay un Microsoft.SqlServer.ConnectionInfo versión 9 (2005) y uno versión 10 (2008) elegir siempre los de la misma versión.

Crear bases de datos.

Utilizaremos el siguiente código para crear bases de datos desde c#

ServerConnection conn = new ServerConnection(“localhost”);
Server server = new Server(conn);

Database newdb = new Database(server, “NUEVADB”);
newdb.Create();

conn.Disconnect();
Borrar bases de datos.

En el caso del borrado de bases de datos antes de nada deberemos eliminar los procesos asociados a la base de datos que queremos borrar con la instrucción:

server.KillAllProcesses(“NUEVADB”);
Utilizaremos el siguiente código para borrar bases de datos desde c#

ServerConnection conn = new ServerConnection(“localhost”);
Server server = new Server(conn);
// Para que libere la base de datos que queremos borrar.
server.KillAllProcesses(“NUEVADB”);
Database db = new Database(server, “NUEVADB”);
db.Refresh();
db.Drop();

conn.Disconnect();
Copiar bases de datos.

Utilizaremos el siguiente código para copiar bases de datos desde c#

ServerConnection conn = new ServerConnection(SqlServer);
Server server = new Server(conn);

Database newdb = new Database(server, NewDataBase);
newdb.Create();

Transfer transfer = new Transfer(server.Databases[SourceDataBase]);
transfer.CopyAllObjects = true;
transfer.CopyAllUsers = true;
transfer.Options.WithDependencies = true;
transfer.DestinationDatabase = newdb.Name;
transfer.DestinationServer = server.Name;
transfer.DestinationLoginSecure = true;
transfer.CopySchema = true;
transfer.CopyData = true;
transfer.Options.ContinueScriptingOnError = true;
transfer.Options.IncludeIfNotExists = true;
transfer.TransferData();

conn.Disconnect();
Con esta instrucción transfer.CopyData = true le decimos que copie también los datos, si la ponemos a false solo copiara la estructura de la tabla.

Si esta clase la vais a utilizar desde ASP.NET deberéis poner esta línea en el web.config:

<system.web>
...
<identity impersonate="true" userName="domain\user" password="password" />
...
</system.web/>
Dejo el código de la clase en c#. Acordaros de eliminar la extensión .txt para utilizarla.

SQLSMO.cs
Código completo

Y esto es todo.
Saludos
Alex.


Si te ha gustado el artículo compartelo en:        


Publicidad

También puede interesarte:

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008

Crear un DataSet vacío

Crear un DataSet vacío

Por Alex, el 26/12/2008

Filtrar un DataSet desde código C#

Filtrar un DataSet desde código C#

Por Alex, el 11/11/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.