Verificar servidores disponibles - SQL Server 2000

Generalmente realizo consultas en varios servidores vinculados [5 servidores para ser exacto] y el resultado se usa para generar un solo reporte, ahora bien, si uno de los 5 servidores no está disponible [por ejemplo esposible que se haya caído la conexión de red, apagaron el servidor, etc.], la consulta falla y el reporte no se muestra.
La cuestión es: ¿Existe alguna instrucción SQL [o de cualquier otro tipo] que me permita verificar si el servidor está disponible?, de esta manera haría una simple comprobación antes de ejecutar la sentencia SQL que me regresará los datos que necesito.
Más explícito [Ejemplo con dibujitos]:
* Consulta general
   Consultar servidor1 [disponible]
   union
   Consultar servidor2 [disponible]
   union
   Consultar servidor3 *[no está disponible, muestra error y el reporte no se muestra]
   Union
   Consultar servidor4
   Union
   Consultar servidor5

1 Respuesta

Respuesta
1
Clara que si existe farias formas.
Te paso estos links donde te explican como hacerlo.
http://www.sqldev.net/misc/EnumSQLSvr.htm
http://groups.google.com/group/microsoft.public.sqlserver.programming/msg/caaae2403daf3d05
Yo te recomiendo la segunda Sql-dmo ya que es muy sencilla para programar y puedes tener acceso prácticamente a todas las funcionalidades que puedes hacer desde el sql management studio.
Para más información te dejo estos links
http://support.microsoft.com/kb/326613/es
http://www.netveloper.com/contenido2.aspx?IDC=75_0
http://www.sqldev.net/sqldmo.htm
Hola, muchas gracias por contestar, he verificado cada uno de los enlaces y me parecen bien, desafortunadamente necesito hacerlo desde el nivel del Analizador de consultas, es decir, no me sirve instalar un programa [ya que son cerca de 100 PCs], tampoco me sirve hacerlo desde Visual Basic, aún así agradezco tu interés.
¿Podría haber una forma como la que necesito?
Por ejemplo:
1.- Verificar disponibilidad del servidor
[por medio de sentencias SQL, es decir, desde el Analizador de consultas]
2.- Si está disponible el servidor, ejecutar sentencia SQL se selección, en caso contrario saltar al siguiente servidor y realizar la misma verificación de disponibilidad, y así sucesivamente con todos los servidores, dándome SIEMPRE un resultado [excluyendo los datos de los servidores no disponibles].
Lo sé, es mucho lo que pido, pero te aseguro que ya he buscado información y definitivamente no he encontrado algo, tal vez porque no sé lo que busco :s.
Saludos desde México.
Que tal disculpa la tardanza
Podrías utilizar una sentencia try catch en sql para ejecutar tu consulta a un servidor y así verificar cuales están en linea antes de ejecutar la consulta general que puedes construir según los resultados de tus consultas para verificar la conexión al servidor, así la consulta que ejecutes no te arrojara un error.
documentacion para sentencia try..
http://technet.microsoft.com/es-es/library/ms175976.aspx
Saludos.
Seguiré buscando alguna forma para encontrar los servidores disponibles que si como indicas aun no he encontrado algo tampoco.
Muchas gracias por tu ayuda, desafortunadamente no puedo hacerlo utilizando "try" y "catch" [creo que eso es para SQL Server 2005 en adelante y yo uso el 2000], pero al final lo pude solucionar [lo encontré navegando] de la siguiente forma:
CREATE PROCEDURE CP_VerificarServidor (@ServerName VarChar(12), @Disponible Bit OUTPUT)
AS
begin
    DECLARE @P VarChar(17)
    SET @P = 'PING ' + @ServerName
    CREATE TABLE #Ping(Resultado SYSNAME NULL)
    INSERT #Ping
        EXEC master..xp_cmdshell @P
    IF EXISTS(SELECT * FROM #Ping WHERE Resultado LIKE '%TTL%') 
        SET @Disponible = '1'
    ELSE 
        SET @Disponible = '0'
    DROP TABLE #Ping
END
GO
Como se ve, se trata de un procedimiento almacenado el cual recibe como parámetro el nombre del servidor y una variable tipo "bit" que almacenará el resultado de la verificación, simplemente se hace un "PING" al servidor deseado, si está disponible el procedimiento regresa "1" en caso contrario regresa "0" y ya con ese resultado se puede realizar o no determinada acción.
Gracias por tu interés, saludos desde México, Juan Pablo E.P.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas