domingo, 24 de febrero de 2008

SMO (SQL MANAGEMENT OBJECTS)

SMO es un conjunto de objetos de programación que cuenta con toda la funcionalidad de administración de la base de datos de SQL Server. De hecho, Management Studio se creó con SQL Management Objects. SMO se implementa como un ensamblado de Microsoft .NET Framework. Podemos utilizar SMO para automatizar las tareas administrativas habituales de SQL Server, como la recuperación mediante programación de los valores de configuración, la creación de nuevas bases de datos, la aplicación de secuencias de comandos de T-SQL, la creación de trabajos de SQL Server Agent y la programación de copias de seguridad. El modelo de objetos SMO es una sustitución más segura, confiable y escalable de los Objetos de administración distribuida (DMO), que se incluyó en las versiones anteriores de SQL Server.Para implementar en nuestra aplicación la funcionalidad de SMO debemos añadir una referencia al espacio de nombres Microsoft.SqlServer.SMO, esta dll la encontraremos en C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies

Ejemplo de cómo crear un Backup con SMO desde VB:

Imports Microsoft.SqlServer.Management.Smo
Public Class frmInicio

Private Sub cmdBackup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBackup.Click
Try
Dim bck As New Backup
Debug.Print(DateTime.UtcNow)
bck.Database = "PRUEBA"
bck.Devices.Add(New BackupDeviceItem("C:\BACKUP\PRUEBA.bak", DeviceType.File))
bck.Action = BackupActionType.Database
bck.SqlBackup(New Server("PCFRAN"))
Debug.Print(DateTime.UtcNow)
MsgBox("Backup realizado con éxito")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class

En los BOL de SQL Server 2005 podemos encontrar numerosos ejemplos de cómo programar jobs, etc. todo con SMO. Como muestra un botón:

ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/smo9/html/a15949ef-88d9-4205-892e-0b66588b4fcc.htm

2 comentarios:

ESTEBAN ALVINO Q. dijo...

Hola amigo,
gracias por publica tan buena introduccion.
Soy nuevo y la necesidad me esta haeindo investigar esta maravillosa tecnologia SMO.
Espero puedas ayudarme o sugerirme con lo siguyiente:

Existe algun sdk de smo.
Ejemplos de como programarlos(c# o vb.net).

Exactamente lo que tengo que hacer aqui, es lo sgte:

Mediante codigo(c# o .net) ir a la base de datos y verificar si un JOB se esta ejecuntado o no.
es decir un metodo que me devuelva un true o un false, algo asi...
public boolean elJobSeEstaEjecutando(string NameJob,...){
//code here
}

Gracias.
Mi correo es esteban.alvino@osmos.com

Byes

Francisco Ruiz dijo...

Hola Esteban, las dll que necesitas para usar SMO en tus
proyectos con VB o con C# las puedes encontrar en la ruta:
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\

Ejemplos puedes encontrar en los libros en pantalla de SQL Server 2005 (BOL)
Aquí te dejo varios enlaces que espero te sirvan de ayuda:
http://msdn2.microsoft.com/en-us/library/ms187069.aspx
Cómo crear un job mediante código
http://msdn2.microsoft.com/en-us/library/ms162180.aspx

Los miembros de la clase Job los tienes en (fíjate en CurrentRunStatus):
http://msdn2.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.agent.job_members.aspx