首页 > 技术文章 > SQL系统函数——系统信息

xymqx 2013-08-05 16:03 原文

1、查看信息
1.1、查看编号和名称
select @@SERVERNAME
--SQL SERVER服务器的连接字符串,如:computername\instancename
select @@SERVICENAME
--若为默认实例,则返回MSSQLSERVER;若是命名实例,则返回实例名
改变机器名称后,实例的名称也会跟着变。但是之后会导致本机的内部实例名会跟网络服务名不一致,解决办法如下:
select @@SERVERNAME, SERVERPROPERTY('ServerName')

if serverproperty('servername')<>@@servername  
begin  
    
declare @server sysname  
    
set @server=@@servername  
    
exec sp_dropserver @server=@server
--删除这个服务器注册
    set @server=cast(serverproperty('servername'as sysname)  
    
exec sp_addserver @server=@server,@local='LOCAL'
--添加当前改过名的服务器注册
end

select HOST_ID() --主机编号
select HOST_NAME()--主机名
select DB_ID('master'--数据库编号
select DB_NAME(1)      --数据库名称
select OBJECT_ID('sysobjects')  --数据库对象编号
在临时表上用object_id()时,要在临时表前加数据库名
如下:
方法1(错误)
--#temp不是存在当前数据库中的
select object_ID('#temp')
方法2(错误)
--是存在tempdb中,但temdb中没有这个函数
use tempdb
select object_ID('#temp')
方法3(正确)
--MSQL的临时表是存在tempdb中的
select object_ID('tempdb..#temp')
select OBJECT_NAME(1)           --数据库对象名称
select File_ID('master')        --返回该逻辑文件名的编号
select File_NAME(1)              --返回该文件编号的逻辑文件名
select FILEGROUP_ID('primary')     --返回文件组编号
select FILEGROUP_NAME(1)           --返回文件组名称

select COL_NAME(OBJECT_ID('sysobjects'),1)
--表中列的名称,每个表中列是从…n顺序编号
select INDEX_COL('sysobjects',1,1)   
--返回sysobjects中第一个索引第一个键的名称

select APP_NAME() --返回当前使用的工具名称,如:SQL 查询分析器
select @@SPID      --返回当前连接在SQL SERVER中的编号
select @@PROCID    --在SP中使用,查看自己的ID

1.2、查看登录和用户
select Suser_Sid()      --返回登录的SID,可传参,默认返回当前值
select Suser_Sname()    --返回登录的名称,可传参,默认返回当前值
select System_User      --等价于不带参数的SUER_SNAME()

select User_Id()          --返回数据库用户ID,可传参,默认返回当前值
select User_Name()       --返回数据库用户名,可传参,默认返回当前值
select User                --等价于不带参数的USER_NAME()
select Current_User      --等价于不带参数的USER_NAME()
select Session_User      --等价于不带参数的USER_NAME()

1.3、查看属性
select Serverproperty('Collation')               --查看服务器的属性
select Databasepropertyex('master','Collation')  --查看数据库的属性
select Sessionproperty('ANSI_NULLS')              --查看当前会话的SET选项  
select Objectproperty(1,'IsTable')               --查看当前对象的信息
select Filegroupproperty('Primary','IsReadOnly'--查看文件组的属性
select Fileproperty('master','SpaceUsed')        --查看文件的属性
select Columnproperty(1,'name','AllowsNull')      --查看列属性
select Indexproperty(1,'ncsysobjects','IsClustered'--查看索引属性
select Indexkey_Property(1,2,1,'ColumnId')           --查看索引键信息

select Collationproperty('Chinese_PRC_CI_AS','LCID')
--查看排序规则的信息
select Sql_Variant_Property('abc12345','BaseType')  
--返回sql_variant类型值的信息

2、NULL相关的
select COALESCE(null,'first',null,'second',null)
--返回众多表达式中第一个非NULL 表达式的值
select NULLIF('123','123')
--在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值
select ISNULL(null,'not null value')
--使用指定的替换值替换NULL
select GetANSINull('master')
--查看SET ANSI_NULL_DFLT_ON 的设置

推荐阅读