sábado, 20 de octubre de 2007

Enumeración de Instancias de SQL Server

.Net Framework nos provee de una clase que nos permite enumerar todos los servidores de SQL Server en una red local. La clase en cuestión es SqlDataSourceEnumerator. La manera de usarla sería

Dim servidores As System.Data.Sql.SqlDataSourceEnumerator = System.Data.Sql.SqlDataSourceEnumerator.Instance

Combobox1.DataSource = servidores.GetDataSources

El método GetDataSources devuelve un DataTable que podremos usar para devolver los valores en un ComboBox o en un DataGridView. La tabla que devuelve la llamada al método contiene las siguientes columnas, cada una de las cuales incluye valores string:


Columna Descripción
======= =========
ServerName Nombre del servidor.
InstanceName Nombre de la instancia del servidor. Si el servidor se
ejecuta como instancia predeterminada,
esta columna se muestra en blanco.
IsClustered Indica si el servidor forma parte de un clúster.
Version Versión del servidor (8.00.x para SQL Server 2000
y 9.00.x para SQL Server 2005).

Limitaciones de la enumeración
Es posible que en la lista no aparezcan todos los servidores disponibles. La lista puede variar dependiendo de algunos factores, como los tiempos de espera o el tráfico de la red. Como consecuencia, la lista puede ser diferente en dos llamadas consecutivas. Sólo aparecerán en la lista los servidores de la misma red. Normalmente, los paquetes de difusión no recorren los enrutadores; este es el motivo de que a lo mejor no pueda ver uno de los servidores que aparecen en la lista, aunque se mantenga estable entre llamadas.
Los servidores de la lista pueden tener o no información adicional como IsClustered y la versión. Todo depende de cómo se haya obtenido la lista. Los servidores que aparecen en la lista a través del servicio de explorador de SQL Server tendrán más detalles que los que se encuentran a través de la infraestructura de Windows, que sólo muestra el nombre.

La enumeración de servidores sólo se encuentra disponible cuando se ejecuta con plena confianza. Los ensamblados que se ejecutan en un entorno de confianza parcial no podrán utilizarla, aunque dispongan del permiso de seguridad de acceso a código (CAS) SqlClientPermission.
SQL Server 2000 proporciona información del SqlDataSourceEnumerator a nivel interno. SQL Server 2005, sin embargo, lo hace mediante el uso de un servicio externo llamado Explorador de SQL. Este servicio está habilitado de forma predeterminada, pero los administradores pueden desactivarlo o deshabilitarlo, para que la instancia del servidor sea invisible para esta clase. Este servicio sólo se aplica a SQL Server 2005 y no tiene efecto alguno en el comportamiento de SQL Server 2000.
El hardware o el software puede limitar la capacidad para buscar instancias de SQL Server.

Si queréis más información la podéis conseguir en la msdn en el siguiente enlace:
http://msdn2.microsoft.com/es-es/library/a6t1z9x2(VS.80).aspx

Gracias a la MSDN por alumbrarme en ciertas tareas del trabajo.

No hay comentarios: