if exists(select 1 from sysobjects where id=object_id('Func_GetServerStatus') and objectproperty(id,'IsInlineFunction')=0)
drop function Func_GetServerStatus
go
---Miller Zhou on 2008/11/26
---判断远程SQL Server服务器是否运行
Create function Func_GetServerStatus
(
@servername varchar(50), --服务器名
@userid varchar(50)='sa', --用户名,如果为nt验证方式,则为空
@password varchar(50)='' --密码
)
Returns nvarchar(max)
As
Begin
Declare @result nvarchar(max),@ire int --返回状态
Declare @srvid int --定义服务器、数据库集id
--错误处理变量
Declare @err int
Declare @source varchar(255)
Declare @description varchar(255)
--创建sqldmo对象
Exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
If @err<>0 Goto ErrorHandle
--连接服务器
if isnull(@userid,'')='' --如果是 Nt验证方式
Begin
Exec @err=sp_oasetproperty @srvid,'loginsecure',1
If @err<>0 Goto ErrorHandle
Exec @err=sp_oamethod @srvid,'connect',null,@servername
End
Else
Begin
Exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password
End
If @err<>0 Goto ErrorHandle
--获取服务器状态
Exec @err=sp_oagetproperty @srvid,'Status',@ire output
If @err<>0 Goto ErrorHandle
--Set @result=case @ire when 0 then '未知'
-- when 1 then '运行
'
-- when 2 then '暂停'
-- when 3 then '停止
'
-- when 4 then '正在启动
'
-- when 5 then '正在启动停止
'
-- when 6 then '连接
'
-- when 7 then '正在暂停
' end
Set @result=case @ire when 0 then 'Fail; Unknown'
when 1 then 'Pass; Running'
when 2 then 'Fail; Pause'
when 3 then 'Fail; Stop'
when 4 then 'Fail; Starting
'
when 5 then 'Fail; Stopping
'
when 6 then 'Fail; Connecting
'
when 7 then 'Fail; Pausing
' end
Return(@result)
ErrorHandle:
---'OLE Automation Error Information'
EXEC @err = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
IF @err = 0
BEGIN
set @result='Fail; '+'Source: '+@source+'; Description: '+@description
END
ELSE
BEGIN
set @result='Fail; sp_OAGetErrorInfo failed.'
END
return(@result)
End
drop function Func_GetServerStatus
go
---Miller Zhou on 2008/11/26
---判断远程SQL Server服务器是否运行
Create function Func_GetServerStatus
(
@servername varchar(50), --服务器名
@userid varchar(50)='sa', --用户名,如果为nt验证方式,则为空
@password varchar(50)='' --密码
)
Returns nvarchar(max)
As
Begin
Declare @result nvarchar(max),@ire int --返回状态
Declare @srvid int --定义服务器、数据库集id
--错误处理变量
Declare @err int
Declare @source varchar(255)
Declare @description varchar(255)
--创建sqldmo对象
Exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
If @err<>0 Goto ErrorHandle
--连接服务器
if isnull(@userid,'')='' --如果是 Nt验证方式
Begin
Exec @err=sp_oasetproperty @srvid,'loginsecure',1
If @err<>0 Goto ErrorHandle
Exec @err=sp_oamethod @srvid,'connect',null,@servername
End
Else
Begin
Exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password
End
If @err<>0 Goto ErrorHandle
--获取服务器状态
Exec @err=sp_oagetproperty @srvid,'Status',@ire output
If @err<>0 Goto ErrorHandle
--Set @result=case @ire when 0 then '未知'
-- when 1 then '运行
'-- when 2 then '暂停'
-- when 3 then '停止
'-- when 4 then '正在启动
'-- when 5 then '正在启动停止
'-- when 6 then '连接
'-- when 7 then '正在暂停
' endSet @result=case @ire when 0 then 'Fail; Unknown'
when 1 then 'Pass; Running'
when 2 then 'Fail; Pause'
when 3 then 'Fail; Stop'
when 4 then 'Fail; Starting
'when 5 then 'Fail; Stopping
'when 6 then 'Fail; Connecting
'when 7 then 'Fail; Pausing
' endReturn(@result)
ErrorHandle:
---'OLE Automation Error Information'
EXEC @err = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
IF @err = 0
BEGIN
set @result='Fail; '+'Source: '+@source+'; Description: '+@description
END
ELSE
BEGIN
set @result='Fail; sp_OAGetErrorInfo failed.'
END
return(@result)
End
调用执行代码如下,
Declare @RemoteSS nvarchar(MAX)
Set @RemoteSS=''
select @RemoteSS=dbo.Func_GetServerStatus('172.26.16.4','sa','sa')
If @RemoteSS like 'Fail%'
Begin
Select 'Fail' as iResult,'Link Remote server fail !' as iMessgae
Return
End
Else
Begin
Select 'Pass' as iResult,'Link Remote server sucessfully !' as iMessgae
Return
End
Set @RemoteSS=''
select @RemoteSS=dbo.Func_GetServerStatus('172.26.16.4','sa','sa')
If @RemoteSS like 'Fail%'
Begin
Select 'Fail' as iResult,'Link Remote server fail !' as iMessgae
Return
End
Else
Begin
Select 'Pass' as iResult,'Link Remote server sucessfully !' as iMessgae
Return
End
浙公网安备 33010602011771号