Red de conocimiento informático - Conocimiento informático - Cómo obtener todos los servicios de SQLServer en la LAN

Cómo obtener todos los servicios de SQLServer en la LAN

Cómo obtener todos los servicios de SQL Server en LAN Autor: Anónimo Siempre quise obtener información más detallada sobre SQL Server en mi aplicación, hasta hace poco lo logré a través de SQLDMO (Objetos de administración distribuida de SQL, Objetos de administración distribuida de SQL) Esta idea. Hasta hace poco, me di cuenta de esta idea a través de SQLDMO (SQL Distributed Management Objects, SQL Distributed Management Objects), que proporciona funciones muy poderosas. Podemos usar este programa para lograr casi cualquier cosa

Cómo hacerlo en Obtener todo. Servicios de SQL Server en LAN Por Anónimo Siempre he querido obtener información más detallada sobre SQL Server en mi aplicación. Quería obtener información más detallada sobre SQL Server en mi aplicación. Hasta hace poco, podía lograr esto usando SQLDMO (Objetos de administración distribuida de SQL), que proporciona características muy poderosas que nos permiten implementar casi todas las funciones de SQL Server mediante programación. En este artículo, le mostraré cómo obtener todos los servidores SQL en su LAN, cómo conectarse a ellos y cómo obtener todas las bases de datos en ellos.

El objeto SQLDMO proviene de la biblioteca de vínculos dinámicos SQLDMO.dll proporcionada por SQL Server 2000. El dll en sí es un objeto COM; primero debe hacer referencia a la biblioteca de objetos Microsoft SQLDMO (versión 8.0) desde la biblioteca de tipos. Delphi generará automáticamente el archivo SQLDMO_TLB.PAS, que contiene todas las interfaces de objetos COM.

Lo que hay que tener en cuenta aquí es que debido a que varios nombres de clases predeterminados, como ?TDatabase? y ?TApplication?, introducidos por SQLDMO, entran en conflicto con los nombres de clases que vienen con Delphi, se pueden modificar al formato _TypeName. . U otro nombre, lo cambié aquí a T_Application, T_Database, etc.

El siguiente paso es introducir el archivo unitario SQLDMO_TLB.PAS en el programa. El nombre de la unidad de aplicación es SqlServers

La lista de servidores son todos los servidores SQL SERVER en la LAN. Seleccione el servidor e ingrese el nombre de usuario y la contraseña, despliegue la lista de bases de datos y el programa enumerará todas las bases de datos. el servidor.

El código fuente del programa es el siguiente:

Unidad SqlServers;

Interfaz

Propósito

Windows, mensajes, SysUtils, clases, gráficos, controles, formularios.

SQL_DMO : _SQLServer;

lConectado : booleano;

fin;

tipo

TdmoObject = registro

SQL_DMO : _SQLServer;

lConectado : booleano;

fin;

tipo

TFormServersList = clase(TForm )

Etiqueta1: TLabel;

Etiqueta2: TLabel;

CB_ServerNames: TComboBox;

CB_DataNames: TComboBox;

Etiqueta3: TLabel;

Etiqueta4: TLabel;

Ed_Login: TEdit;

Ed_Pwd: TEdit;

BitBtn1: TBitBtn ;

BitBtn2:

procedimiento FormCreate(Remitente: TObject);

procedimiento FormCloseQuery(Remitente: TObject; var CanClose: Boolean);

procedimiento FormClose(Remitente: TObject; var Acción: TCloseAction);

procedimiento FormShow(Remitente. TObject; var Acción: TCloseAction);

server_Names: TStringList;

//Colección de objetos

PdmoObject: matriz TdmoObjects;

//Obtener todos los servidores remotos

Función GetAllServers( ServerList : TStringList): booleano;

{declaración privada}

pública

{declaración pública}

fin;

var

FormServersList: TFormServersList;

implementación

{$R *.DFM}

{ TForm1 }

Función TFormServersList.GetAllServers (ServerList: TStringList): booleano;

var

sApp: _Application;;

sName: NameList;

iPos : entero;

comenzar

Resultado := Verdadero

probar

sApp := CoApplication_.> excepto<; /p>

Resultado := Falso;

Salir;

fin;

si sName.Count > 0 entonces // iPos comienza en 1 porque 0 es nulo, es decir, ''

para iPos := 1 a

sName.Create;

si no es GetAllServers(server_Names) entonces

comienza

Application.MessageBox('No se puede obtener la lista de servidores, puede que falte función de biblioteca DLL del lado del cliente', 'Mensaje de error').MessageBox('No se puede obtener la lista de servidores, puede que falte la función de biblioteca DLL del cliente', 'Mensaje de error',MB_OK);

salir;

end;

para lcv := 0 a server_Names.Count - 1 do

comenzar

SetLength(PdmoObject,lcv + 1 );

con PdmoObject[lcv] hacer

comenzar

SQL_DMO := CoSQLServer.Create;

SQL_DMO.Name := Recortar (server_Names[lcv]);

//Atributos de seguridad de inicio de sesión. Items.Count > 0 y luego //lista todos los nombres de servidores

CB_ServerNames.Text := CB_ServerNames.Items.Strings[0];

end;

procedimiento TFormServersList.BitBtn2Click(Remitente: TObject);

Inicio

Cerrar;

Fin;

procedimiento TFormServersList.BitBtn2Click(Remitente: TObject

Inicio

Cerrar;

Fin;

procedimiento TFormServersList.BitBtn2Click(Remitente: TObject

<); p>Inicio

Cerrar;

Fin.

CB_DataNamesDropDown(Remitente: TObject);

var

icount, Server_B: entero;

comenzar

CB_DataNames.Clear;

Screen.Cursor := CrHourGlass;

Server_B := CB_ServerNames.Items.IndexOf(CB_ServerNames.Items.IndexOf)MessageBox('Compruebe si el nombre de usuario o la contraseña son correctos','Error de conexión ',MB_OK);

Salir

finalizar;

si no VerifyConnection(SQLDMOConn_ ReconnectIfDead) entonces

comenzar

ShowMessage('Error al intentar conectarse a SQL SERVER 2000' + #10#13 +

'Asegúrese de agregar la biblioteca de conexión dinámica SQLDMO.DLL');

salir;

fin

fin más

fin más

PdmoObject[Server_B].lConectado := Verdadero ;

Databases.Refresh(true);

para icount := 1 para Bases de datos.

CB_DataNames.Items.Add(Databases.Item(icount,null).name );

fin;

Screen.Cursor := CrDefault ;

fin

fin.