Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何检查链接服务器是否在函数中运行?_Sql Server_Sql Server 2008_Tsql_Sql Server 2012_Linked Server - Fatal编程技术网

Sql server 如何检查链接服务器是否在函数中运行?

Sql server 如何检查链接服务器是否在函数中运行?,sql-server,sql-server-2008,tsql,sql-server-2012,linked-server,Sql Server,Sql Server 2008,Tsql,Sql Server 2012,Linked Server,我知道有一种方法可以检查链接服务器是否正在运行。 我想知道是否有办法在函数中检查它 我写了这段代码: create function dbo.Ck_DB_Stat (@servername nvarchar (20)) returns bit AS BEGIN declare @srvr nvarchar(128), @retval int, @res nvarchar (10) declare @ck bit set @srvr = @servername;

我知道有一种方法可以检查链接服务器是否正在运行。
我想知道是否有办法在函数中检查它 我写了这段代码:

  create function dbo.Ck_DB_Stat
(@servername nvarchar (20))
returns bit
AS
BEGIN

    declare @srvr nvarchar(128), @retval int, @res nvarchar (10)

    declare @ck bit
    set @srvr = @servername;
    begin try
        exec @retval = sys.sp_testlinkedserver @srvr;
        set @ck = 1
    end try

    begin catch
        set @retval = sign(@@error);
    end catch;

    if @retval <> 0
        set @ck = 0
    return @ck
END
创建函数dbo.Ck\u DB\u Stat
(@servername nvarchar(20))
返回位
作为
开始
声明@srvr nvarchar(128)、@retval int、@res nvarchar(10)
声明@ck位
设置@srvr=@servername;
开始尝试
exec@retval=sys.sp_testlinkedserver@srvr;
设置为@ck=1
结束尝试
开始捕捉
设置@retval=符号(@@error);
末端捕捉;
如果@retval 0
设置为@ck=0
返回@ck
结束

您不能在函数中执行存储的过程。在
SQL CLR
函数中,您可以执行动态SQL语句,因此我想执行其他过程也是
OK