Introducción a SQL-DMO
Microsoft SQL Server es actualmente un sistema de administración de bases de datos popular. Con la mejora continua y el desarrollo de SQL Server y la combinación perfecta con los sistemas operativos de la serie Windows de Microsoft, proporciona un mejor rendimiento y facilidad de uso en la plataforma Windows, por lo que se valora cada vez más. El nombre completo de SQL-DMO son los objetos de administración distribuidos SQL. Es una colección que contiene un conjunto de COM con interfaces duales. A través de SQL-DMO podemos controlar el motor de la base de datos y la gestión de replicación que opera SQL Server. Dado que SQL-DMO es un conjunto de COM, puede ser utilizado por cualquier herramienta de desarrollo que pueda usar COM, incluidas VB, Delphi, VC, BCB, ASP, etc., casi todas las herramientas de desarrollo en la plataforma Windows.
SQL-DMO usa
¿Por qué necesitamos usar SQL-DMO para administrar bases de datos? ¿No es suficiente para nosotros administrar la base de datos utilizando Enterprise Manager y los scripts T-SQL? SQL-DMO puede llevar a cabo actividades de gestión de bases de datos flexibles, personalizables y eficientes. Dado que SQL-DMO proporciona una interfaz de administración para SQL Server, a través de la programación, puede personalizar las actividades de administración de acuerdo con sus necesidades. Por ejemplo, si estamos administrando una organización grande con muchas instancias de SQL Server. Ahora debe agregar un usuario a todas las instancias de SQL Server en su organización. Utiliza la programación SQL-DMO para implementar las llamadas, se puede completar de manera fácil y eficiente con un ciclo. En opinión del autor, lo más importante es que MSDE se puede gestionar utilizando SQL-DMO. MS SQL Server es costoso, mientras que MSDE es gratuito. En algunas aplicaciones pequeñas y medianas, MSDE es suficiente. Sin embargo, dado que MSDE solo proporciona un motor de base de datos pero no proporciona una interfaz de gestión visual, es imposible administrar las bases de datos en MSDE regularmente, lo que limita el alcance de la aplicación de MSDE. En este momento, si usamos SQL-DMO, podemos proporcionar nuestra propia interfaz de administración de bases de datos, para que podamos realizar cierta administración regular de la base de datos en MSDE. Si no se consideran el tiempo y el costo, puede crear una interfaz de administración similar a la de Enterprise Manager. De hecho, la mayoría de las funciones de Enterprise Manager también se implementan utilizando SQL-DMO. (SQL-NS se utiliza (SQL-Namespace, que también es una colección de objetos COM, que proporciona acceso al espacio de nombre del objeto en SQL Server), pero SQL-NS también está construido en SQL-DMO)
Host y composición de SQL-DMO
El host de SQL-DMO es sqldmo.dll, ubicado en X:/archivos de programa/Microsoft SQL Server/80/Tools/Binn. Además, también requiere los siguientes archivos: l
sqldmo.dll ( biblioteca de tipo principal) L
sqldmo.rll ( archivo de recursos de idioma) L
sqlsvc.dll ( tipo biblioteca para la administración de bases de datos) l
sqlsvc.rll ( archivo de recursos de idioma) L
sqlunirlirlirly .Dll ( capa de redirección unicode) l
sqlrsld.dll ( para la carga de recursos) l
ODBC ( incluyendo ODBC32.Dll, Sqlsrv32.dll, odbcbcp.dll , etc.) Aquí hay una explicación de la estructura de llamadas (Figura 1):
| Nuestra aplicación crea objetos usando SQL-DMO aquí |
Figura 1 Estructura de llamadas SQL-DMO
Árbol de objetos sql-dmo
Primero veamos el árbol de objetos enorme y complejo de SQL-DMO (ver Figura 3): el objeto SQLServer es la columna vertebral de este árbol de objetos, y hay tres ramas principales en esta rama de la base de datos L y una serie de implementaciones de objetos En TI tareas de arquitectura y mantenimiento de la base de datos en SQLServer. l Jobserver Branch, una serie de objetos en él implementa el servicio de agente SQL Server (agente). L Rama de replicación, una serie de objetos en él implementa el servicio de replicación del servidor SQL. También hay cosas que debe tenerse en cuenta: l El árbol de objetos no enumera el objeto de aplicación, pero este es en realidad un objeto relativamente importante. Cualquier objeto SQL-DMO tiene una propiedad que apunte al objeto de aplicación. El objeto de aplicación representa una aplicación global, que contiene dos objetos de recolección: servidores y grupos de servidor. Como se muestra en la Figura 2: Figura 2, el objeto del objeto L del árbol de objeto solo representa la estructura de SQL-DMO y no enumera todos los objetos, como el objeto Namelist, el objeto ServerGroup, etc. El árbol de objetos SQL-DMO tiene una estructura compleja y muchos objetos. Figura 3 Árbol de objetos SQL-DMO
Implementación de SQL-DMO encapsulado de Delphi
La siguiente es una descripción del componente TDBCTRL para la encapsulación SQL-DMO implementada por el autor utilizando Delphi. Debido a que necesitaba un motor de base de datos gratuito en un proyecto determinado, finalmente elegí MSDE, pero MSDE no tiene interfaz de administración, es solo un motor. Por lo tanto, existe la necesidad de proporcionar una interfaz de administración simple y clara para MSDE. No necesitamos proporcionar tantas funciones de gestión como administrador de empresas, solo necesitamos proporcionar las funciones más utilizadas. Teniendo en cuenta la facilidad de uso y escalabilidad, se decide proporcionarlo en forma de componentes. Los componentes implementados proporcionan una capa de embalaje para SQL-DMO, encapsulando algunas funciones de uso común y simplificando el uso. Tenga en cuenta que compilar este componente requiere la introducción de la biblioteca de tipo SQL-DMO y la generación del código de descripción correspondiente. El código contiene muchos usos regulares de Delphi y notación idiomática de los objetos COM. No discutiré cómo Delphi usa com aquí, los lectores pueden referirse a libros relacionados. Este componente contiene las siguientes propiedades: Propiedad Host: String Read Fhost Escribir fhost;/Nombre de host, es decir, el nombre de instancia de SQL Server para conectar Contraseña: Cadena Leer FPWD Escribir fpwd; Ogin: String Read Flogin Write Flogin; Un miembro de datos privados: SQLServer para guardar. Su tipo es _SQLServr. El constructor es conectarse para crear un objeto SQLServer. El destructor también es solo para completar la destrucción del objeto SQLServer. constructor tdbctrl.create (Awner: tComponent); Después de eso, Delphi completará la destrucción de objetos COM detrás de escena. Heredado; Fin; si queremos administrar y operar una determinada instancia de SQL Server, primero debemos conectarnos a esta instancia. La siguiente función ConnectToServer implementa la función de cómo conectarse a una instancia de SQL Server. function tdbctrl.connectToServer: boolean; Resultado: verdadero; dependiendo del permiso de usuario registrado). Algunos de los métodos enumerados a continuación muestran algunas características. El método GetTableList obtiene todos los nombres de la tabla de una base de datos y los devuelve en una Lista TString. function tdbctrl.gettableList (dbname: string; var tableList: tStringList): boolean; var nowdb: _database; .Databases.item (dbname, sqlserver); // Obtener objeto de base de datos basado en el nombre de la base de datos para i: = 1 a Nowdb.tables.count Do NowTable: = Nowdb.tables.Item (i, 0); D (Now .Name); Todas las vistas en la base de datos (vistas), todos los campos de una tabla o vista (columnas), todos los grupos de archivos de datos de una base de datos y archivos de datos (grupos de archivos, DBFiles), etc. Estos pueden referirse específicamente al árbol de estructura de objetos de SQL-DMO. El uso de objetos SQL-DMO puede seguir los siguientes pasos básicos: obtener un objeto o objeto de recolección a través del objeto de capa superior y luego usar el objeto u obtener un objeto en el objeto de recolección antes de usar. En términos generales, si se trata de un objeto de colección, hay un método de elemento, y el objeto miembro de la colección puede devolverse en función del índice o el nombre. Cabe señalar que el índice comienza en 1 en lugar de 0. Los métodos anteriores se demuestran cómo obtener información de la base de datos. Este método muestra cómo mantener la base de datos. función tdbctrl.backupdb (dbname, backupfile: string): boolean; // Los parámetros pasados son el nombre de la base de datos que se realizará y el nombre del archivo de copia de seguridad var dmoback: _backup; Objetivo de dispositivo // Establecer el dispositivo de respaldo. = DBName+'BAK'; Aquí no devolverá el valor, no hay forma, solo puede pensar que se agrega la excepción porque el final de la copia de seguridad ya existe; = DBName+'Bak'; nil; e nd; final; además, quiero dar un ejemplo, explique cómo usar el objeto de aplicación mencionado al principio. Este método es obtener los nombres de todas las instancias de SQL Server disponibles (es decir, accesibles y conectables). función tdbctrl.getServerList (VAR ServerList: TStringList): Boolean; Var App: _Application; ; Fin de objeto; final; por supuesto, hay muchos métodos para el componente TDBCTRL, pero la implementación del código es similar, como el método de recuperación correspondiente a la copia de seguridad y el método de desconexión correspondiente a la conexión. . Los lectores pueden consultar el código de muestra y el libro en línea de SQL Server para aprender de un ejemplo e implementar las funciones que desean. Si necesita todo el código para este componente, puede solicitarme.
Otras instrucciones
La versión 2000 de SQL-DMO es totalmente compatible con SQL Server7.0 y SQL Server 2000. Sin embargo, se proporcionan más de 80 nuevas interfaces para admitir las nuevas características de SQL Server 2000. Todas estas nuevas interfaces terminan con "2", que son supersets de esas interfaces en el SQL Server 7.0 original. Es decir, si desea utilizar las nuevas funciones de SQL Server 2000, debe usar la interfaz con "2" al final.
bibliografía
l Microsoft MSDNL Microsoft SQL Server Online Bookl "Delphi com en profundidad" (EE. UU.) Eric Harmon Machinery Industry Press