首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么编写一个“获取SQL SERVER服务器IP”的函数

2013-04-21 
如何编写一个“获取SQL SERVER服务器IP”的函数CREATEFUNCTION [dbo].[Fun_GetServerIP]()RETURNSINTASBEGIN

如何编写一个“获取SQL SERVER服务器IP”的函数
CREATE  FUNCTION [dbo].[Fun_GetServerIP]()  
RETURNS  INT
AS   
BEGIN 
DECLARE @IPValue VARCHAR(255)
    SET @IPValue=''
    
    --创建表变量获取服务器IP   
    DECLARE  @IPInfo TABLE(IPValue VARCHAR(255) NULL )
    INSERT INTO @IPInfo EXEC MASTER..xp_cmdshell 'ipconfig'
    
    SELECT @IPValue=@IPValue+substring(IPValue,charindex(': ',IPValue)+2,15)+' ' FROM @IPInfo where [IPValue] like '%IPv4 地址%'

SET @IPValue=rtrim(replace(@IPValue,char(13),''))

    RETURN @IPValue;
END

GO

这样写 报错了:
消息 443,级别 16,状态 14,过程 Fun_GetServerIP,第 16 行
在函数内的 'INSERT EXEC' 中对带副作用的或依赖于时间的运算符的使用无效。 给你抢先一步了

引用:
SQL code
?



12345

-- 获取SQL Server服务器IP地址 select local_net_address  from sys.dm_exec_connections   where session_id=@@spid

[解决办法]
Declare @ipLine varchar(200)
Declare @pos INT
DECLARE @ip VARCHAR(30)
set nocount on
          set @ip = NULL
          Create table #temp (ipLine varchar(200))
          
          Insert #temp exec master..xp_cmdshell 'ipconfig'
          
          select 
          @ipLine =
          ipLine
          from #temp
          where upper (ipLine) like '%IPv4 地址%'   
          --where upper (ipLine) like '%IP ADDRESS%'  --英文系统用
          
          if (isnull (@ipLine,'***') != '***')
          begin 
                set @pos = CharIndex (':',@ipLine,1);
                set @ip = rtrim(ltrim(substring (@ipLine , 
               @pos + 1 ,


                len (@ipLine) - @pos)))
           end 

     
           PRINT @ip
           
                      
     --DROP TABLE #temp


[解决办法]
怎么编写一个“获取SQL SERVER服务器IP”的函数
[解决办法]

create function dbo.Fun_GetServerIP()  
returns varchar(20)
as   
begin
 declare @ip varchar(20)
 
 select @ip=local_net_address
  from sys.dm_exec_connections 
  where session_id=@@spid
 
 return @ip 
end 


select dbo.Fun_GetServerIP() 'svrIp'

/*
svrIp
--------------------
10.7.1.35

(1 row(s) affected)
*/

[解决办法]
是的,这是语法规定.
参考 http://www.sql-server-helper.com/error-messages/msg-443-insert.aspx

热点排行