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
Gómez
Webmaster de
PortalSQL
mig...@online.portalsql.com
(lo de online sobra)
Microsoft SqlServer M.V.P.
Saludos a todos.
Saludos,
Ulises
>-----Mensaje original-----
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
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
Gómez
Webmaster de
PortalSQL
mig...@online.portalsql.com
(lo de online sobra)
Microsoft SqlServer M.V.P.
Miguel Egea
Gómez
Webmaster de
PortalSQL
mig...@online.portalsql.com
(lo de online sobra)
Microsoft SqlServer M.V.P.
;-)
--
--
--
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...
"Miguel Egea" <migue...@online.telefonica.net> escribió en el mensaje news:ult0oR6L...@TK2MSFTNGP09.phx.gbl...
"José G Alvarez" <jgal...@tutopia.com> escribió en el mensaje news:OTP%232GSME...@TK2MSFTNGP09.phx.gbl...
"José G Alvarez" <jgal...@tutopia.com> escribió en el mensaje news:OTP%232GSME...@TK2MSFTNGP09.phx.gbl...