Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Como determino la disponibilidad de un servidor vinculado

527 views
Skip to first unread message

José G Alvarez

unread,
Apr 29, 2004, 12:10:32 PM4/29/04
to
Hace días coloque un post, con esta misma pregunta, Isaías me dio una
excelente idea de como hacerlo, pero no se si no le he implantado bien, pero
aun sigo con el mismo problema

Necesito saber si un servidor que esta vinculado a mi BBDD esta disponible,
entiéndase como NO DISPONIBLE el hecho de que esté apagado o que los ratones
se hallan comido los cables de red (ya me ha pasado).

La solución de Isaías era esta...

DECLARE @ERROR
EXEC @ERROR = Myserver.Mybase.dbo.pr_MyStore [Parametros]
IF @ERROR <> 0
SELECT 'ERROR' --TOMO LAS ACCIONES NECESARIAS

Pero cuando lo ejecuto en el Query Analizer y desconecto la red para probar,
me da error y sale del proceso por lotes, justo antes de evaluar el valor de
@Error,
Use entonces, el @@Error y aun sigue el mismo problemas, el proceso por
lotes informa del error, pero no termina su ejecución...

Alguna idea de como solucionarlo?

Gracias de antemano

José G. Álvarez
Valencia - Venezuela


Miguel Egea

unread,
Apr 29, 2004, 6:15:43 PM4/29/04
to
Hombre compañero!! Cuanto tiempo sin distrutar de tu sabiduría por acá.
 
 

Miguel Egea Gómez
Webmaster de PortalSQL
mig...@online.portalsql.com
(lo de online sobra)

Microsoft SqlServer M.V.P.

"Emilio Boucau" <bou...@hotmail.com> escribió en el mensaje news:ehhlAdi...@TK2MSFTNGP09.phx.gbl...
> Jose,
>
> aca tenes un stored procedure hecho por Jasper Smith que te va a ser util
> ...
>
> ---
> Saludos !
>
> Emilio Boucau
> Buenos Aires - Argentina
>
http://www.portalsql.com
>
>
>

Emilio Boucau

unread,
Apr 30, 2004, 8:21:12 AM4/30/04
to
Miguel, como estas mi amigo !!! Como dicen uds. los españoles, ando muy liado con el trabajo, pero esto es mas fuerte que yo y estoy retomando la actividad aqui con uds. Ya nos veremos mas seguido.
 
Un abrazo grande para todos !!

Isaías

unread,
Apr 30, 2004, 9:48:59 AM4/30/04
to
Pues despues de los calurosos saludos, ¿Donde quedo el
STORE Emilio?, vos decis, aca tenes un store, y me
pregunto ¿donde quedo la bolita?.

Saludos a todos.

ulises

unread,
Apr 30, 2004, 10:03:39 AM4/30/04
to
Aunándome a los saludos al regreso de Emilio --cuyos
buenos artículos he leido con intéres :) --, el store lo
envío Emilio como un adjunto, y si ves el Newsgroup via
web no lo vas a poder ver :( (es mi caso cuando lo reviso
en un lugar diferente a casa).

Saludos,
Ulises

>-----Mensaje original-----

Emilio Boucau

unread,
Apr 30, 2004, 10:25:13 AM4/30/04
to
Ulises,

me alegrA saber que mis articulos hayan sido de tu interes. A breve
PortalSQL tendra material fresco de mi parte, ya que Miguel y otros
colaboradores más (gracias a todos) lo han mantenido activo.

Para mayor facilidad, aca pongo el codigo del script.

// ---------------- INICIO DEL CODIGO

/*

-- Jasper Smith

You can pass an additional parameter that indicates if @server is a linked
server. It
will then try and get the network name from sysservers. The parameter is
optional and
is either 'Y' or 'N' (or miss it out) e.g.

declare @up int

exec sp_serverup 'SRVLINK','Y',@up=@up OUTPUT

select @up

*/

CREATE PROCEDURE spu_IsServerUp
(
@server sysname,
@islinked char( 1 ) = 'N',
@up int OUTPUT
)
AS
/*
1 = Running
-1 = Down
*/

SET NOCOUNT ON

DECLARE @hr int
DECLARE @sql int
DECLARE @cnt int ; SET @cnt = 0
DECLARE @server_resolved sysname
DECLARE @status int ; SET @status = 0

IF @islinked = 'Y'
BEGIN

SELECT @cnt = COUNT(*)
FROM master..sysservers
WHERE srvname = @server
AND isremote = 1

IF @cnt <> 1
BEGIN
RAISERROR( 'Linked server name cannot be resolved', 16, 1 )
RETURN( 1 )
END

SELECT @server_resolved = datasource
FROM master..sysservers
WHERE srvname = @server
AND isremote = 1

END
ELSE
BEGIN

SELECT @server_resolved = @server

END

EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @sql OUTPUT
IF @hr<>0 EXEC sp_OAGetErrorInfo @sql

EXEC @hr = sp_OASetProperty @sql, 'LoginSecure', 'True'
EXEC @hr = sp_OASetProperty @sql, 'LoginTimeout', 10
EXEC @hr = sp_OAMethod @sql, 'Connect', null,@server_resolved
IF @hr<>0 EXEC sp_OAGetErrorInfo @sql

EXEC @hr = sp_OAGetProperty @sql,'Status', @status OUTPUT
EXEC @hr = sp_OAMethod @sql, 'DisConnect', null
EXEC @hr = sp_OADestroy @sql

SELECT @up = CASE WHEN @status = 1
THEN 1 ELSE -1 END

RETURN


// ---------------- FIN DEL CODIGO

José G Alvarez

unread,
Apr 30, 2004, 3:14:51 PM4/30/04
to
Gracias Emilio por tu valiosa ayuda.

Aunque no conozco mucho de SQL, estoy tratando de entender el SP que
posteaste, y creo que casi lo entiendo, pero cuando ejecuta el metodo
connect del objeto SQLDMO.SQLServer

EXEC @hr = sp_OAMethod @sql, 'Connect', null, @server_resolved

Me da el siguiente error, podrias aclararme a que se debe y/o como
corregirlo?

[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'NT
AUTHORITY\ANONYMOUS LOGON'.

Gracias de nuevo...

Miguel Egea

unread,
May 1, 2004, 1:48:45 PM5/1/04
to
eso es una llamada a un método de un componente activex, el método connect, y las credenciales con las que está intentando conectarse son anonimas por eso no te deja conectar..
 

Miguel Egea Gómez
Webmaster de PortalSQL
mig...@online.portalsql.com
(lo de online sobra)

Microsoft SqlServer M.V.P.

"José G Alvarez" <jgal...@tutopia.com> escribió en el mensaje news:OB6jJcuL...@TK2MSFTNGP10.phx.gbl...

Miguel Egea

unread,
May 1, 2004, 1:49:20 PM5/1/04
to
Seguro que la comunidad de Sql-server saldrá beneficiada ;-)
 

Miguel Egea Gómez
Webmaster de PortalSQL
mig...@online.portalsql.com
(lo de online sobra)

Microsoft SqlServer M.V.P.

"Emilio Boucau" <bou...@hotmail.com> escribió en el mensaje news:Ok07i2qL...@tk2msftngp13.phx.gbl...

Carlos Sacristan

unread,
May 3, 2004, 2:53:24 AM5/3/04
to

Emilio Boucau? Mmmmm... el caso es que el nombre de esa persona me
resulta familiar... ¿no era alguien que hace muuuuuuuuuuuuuuuuuuuuucho
tiempo aparecía por aquí? Por favor, que alguien me confirme esta vaga
impresión

;-)

--
--
--

Un saludo

--
--
----------------------------------------------
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Emilio Boucau" <bou...@hotmail.com> escribió en el mensaje

news:Ok07i2qL...@tk2msftngp13.phx.gbl...

Emilio Boucau

unread,
May 3, 2004, 9:55:17 AM5/3/04
to
Si, Carlos ... Parece que si ... Cuando lo confirmemos te aviso.

José G Alvarez

unread,
May 3, 2004, 9:26:30 AM5/3/04
to
Y como lo resuelvo?
 
Gracias...
 

manuel garcía

unread,
May 4, 2004, 9:58:58 AM5/4/04
to
el procedimiento tal y como está, hace la autentificción con Windows. Si tu quieres realizarla con usuario/passwrod de la mñaquina que quieres verificar:
    1.- cambia el valor  EXEC @hr = sp_OASetProperty @sql, 'LoginSecure', 'True'
        por EXEC @hr = sp_OASetProperty @sql, 'LoginSecure', 'False'   
    2.- Añade el usuario y la password del servidor a verificar
        EXEC @hr = sp_OAMethod @sql, 'Connect', NULL, @server_resolved,'USUARIO','PASSWORD'
 
y con esto seguro que te funcionará
 
Un saludo
 
"José G Alvarez" <jgal...@tutopia.com> escribió en el mensaje news:OTP%232GSME...@TK2MSFTNGP09.phx.gbl...

manuel garcía

unread,
May 4, 2004, 12:06:49 PM5/4/04
to
el procedimiento tal y como está, hace la autentificción con Windows. Si tu quieres realizarla con usuario/passwrod de la mñaquina que quieres verificar:
    1.- cambia el valor  EXEC @hr = sp_OASetProperty @sql, 'LoginSecure', 'True'
        por EXEC @hr = sp_OASetProperty @sql, 'LoginSecure', 'False'   
    2.- Añade el usuario y la password del servidor a verificar
        EXEC @hr = sp_OAMethod @sql, 'Connect', NULL, @server_resolved,'USUARIO','PASSWORD'
 
y con esto seguro que te funcionará
 
Un saludo
 
"José G Alvarez" <jgal...@tutopia.com> escribió en el mensaje news:OTP%232GSME...@TK2MSFTNGP09.phx.gbl...
0 new messages