SQL Server中元數據函數的用法

1、獲取數據庫標識符:DB_ID

DB_ID函數用於獲取當前數據庫的唯一ID(int數據類型),數據庫ID用於服務器上唯一區分書庫。

語法格式:

DB_ID (['database_name'])

參數中的database_name是sysname類型的數據庫名稱,為可選參數。如果沒有指定則返回當前工作數據庫的ID。

返回值:

int數據類型的數據庫標識符。

示例:

select DB_ID()    --輸出 8

2、獲取數據庫名稱:DB_NAME

DB_NAME函數用於紅區當前數據庫的名稱(nvarchar數據類型)

語法格式:

DB_NAME(['database_id'])

參數中的database是int數據類型的數據庫標識符,為可選參數。如果沒有指定則返回當前工作數據庫的名稱。

示例:

select DB_NAME()    --輸出 NHibernate

3、獲取數據庫屬性:DATABASEPROPERTYEX

databasepropertyex函數用於獲得指定的某個數據庫的某個屬性的當前設置。執行一次返回一個屬性值,若要返回多個屬性值,可以查詢master系統數據庫的sys.database系統視圖。

語法格式:

databasepropertyex(database,property)

參數說明:

  • database:表示要為其返回命名屬性的信息的數據庫名稱,nvarchar(128)數據類型
  • property:表示要返回的數據庫屬性,數據類型為Varchar(128)

示例:

select databasepropertyex('NHibernate','recovery')    --輸出 SIMPLE 這是數據庫的恢復模式

Property屬性的取值以及說明如下:

屬性值 說明 返回值
Collation 排序規則名稱 nvarchar(128)、null
IsAutoClose 數據庫的自動關閉功能是否啟用 Int、null
IsAutoCreateStatistics 是否自動創建統計信息 Int、null
IsAutoShrink 是否定期收縮 Int、null
IsAutoUpdateStatistics 是否自動能夠更新統計信息 Int、null
Recovery 數據庫的恢復模式 nvarchar(128)
Status 數據庫的狀態 nvarchar(128)
Updateability 是否可以修改數據 nvarchar(128)
UserAccess 哪些用戶可以訪問數據庫 nvarchar(128)
Version 數據庫內部版本號 Int

4、獲取數據庫對象標識符:OBJECT_ID

object_id函數用於獲取特定數據庫、特定架構下特定數據對象的唯一ID(int數據類型),對象的ID用於在數據庫內區分唯一。

語法格式:

object_id( '[database_name . [schema_name] . | schema_name . ]object_name'
         [,'object_type']
      ')

參數說明:

database_name

database_name 數據庫名稱
schema_name 架構名稱
object_name 對象名稱
object_type 對象類型

返回值:

Int數據類型的對象標識符。

5、獲取數據庫對象名稱:OBJECT_NAME

object_name函數用於獲取指定數據庫、指定架構下的數據對象的邏輯名稱。該名稱可以通過查詢sys.objects系統視圖的name列得到。

語法格式:

object_name(object_id)

參數中的object_id是int數據類型的對象標識符

返回值:

sysname數據類型的邏輯對象名稱。

示例:

select OBJECT_NAME(OBJECT_ID('dbo.Account'))    --輸出Account

6、獲取數據庫對象屬性值:OBJECTPROPERTY

objectproperty函數用於獲得指定數據庫、指定架構下的指定對象的指定屬性的值。

語法格式:

objectproperty(id,property)

參數說明:

  • id:表示要為其返回命名屬性信息的對象的ID,int數據類型。
  • property:表示要返回的屬性,數據類型為sql_variant,即變體。

常見的property屬性值

屬性值 說明 返回值
TableHasTextImage 表中是否含有text、image列 Int  1代表True  0代表False
TableHasPrimaryKey 表中是否含有主鍵 Int  1代表True  0代表False
TableHasIndex 表中是否含有索引 Int  1代表True  0代表False
TableHasForeignKey 表中是否含有外鍵 Int  1代表True  0代表False
SchemaId 對象的架構ID Int
OwnerId 對象的所有者 Int
IsView 是否視圖 Int  1代表True  0代表False
IsUserTable 是否用戶創建表 Int  1代表True  0代表False
IsTable 是否是表 Int  1代表True  0代表False
IsSystemTable 是否系統表 Int  1代表True  0代表False
IsPrimaryKey 是否主鍵 Int  1代表True  0代表False

7、獲取文件組標識符:FILEGROUP_ID

filegropy_id函數用於獲取文件組的唯一標識符(int數據類型)

語法格式:

FILEGROUP_ID( 'filegropy_name' )

參數中的filegropy_name是sysname類型的數據庫名稱,可以從sys.filegroups系統視圖中查詢得到。

返回值:

Int數據類型的文件組標識符。

示例:

select filegroup_id('NHiberna')    --輸出 null
select filegroup_id('PRIMARY')    --輸出 1

8、獲取文件組名稱:FILEGROUP_NAME

filegroup_name函數用於獲取文件組的名稱(nvarchar數據類型)。

語法格式:

filegroup_name(filegroup_id)

參數中的filegroup_id是int數據類型的文件組標識符,要獲得該標識符,可以查詢sys.filegroups系統視圖

返回值:

nvarchar(128)數據類型的文件組名稱

示例:

select filegroup_name(1)    --輸出 PRIMARY

9、獲取文件組屬性值:FILEGROUPPROPERTY

filegroupproperty函數用於獲得指定文件組的指定屬性值。

語法格式:

filegroupproperty(filegroupname,property)

參數說明:

  • filegroup_name:表示要為其返回屬性信息的文件組名稱,nvarchar(128)數據類型,可以通過sys.filegroups列獲得。
  • property:表示要返回的屬性,數據類型為varchar(128)。

常見的property屬性值列表

屬性值

屬性值 說明 返回值
IsReadOnly 文件組是否隻讀 Int、Null
IsUserDefinedEG 是否為用戶定義的文件組 Int、Null
IsDefault 是否默認的文件組 Int、Null

示例:

select filegroupproperty('PRIMARY','isreadonly')    --輸出 0

10、獲得文件標識符:FILE_ID

file_id函數用於獲取數據庫的文件,包括日志文件和數據文件的標識符。文件標識符用於在數據庫中唯一區分。

語法格式:

FILE_ID( file_name )

參數中的file_name是sysname類型的文件名稱,可以通過查詢系統視圖sys.database_files中的name列來獲得。

返回值:

smallint數據類型的文件標識符。

示例:

select * from sys.database_files    --查出有哪些數據庫文件
    select file_id('NHibernate')    --輸出 1 查出NHibernate數據庫文件對應的fileid

11、獲取文件名稱:FILE_NAME

file_name函數用於獲取當前數據庫的邏輯名稱(nvarchar數據類型),這裡是邏輯名稱而不是包含路徑的物理名稱。

語法格式:

file_name(file_id)

參數中的file_id是int數據類型的數據庫標識符。可以查詢master數據庫的sys.master_files系統視圖的file_id列獲得服務器上所有數據庫的文件ID,也可以查詢某個數據庫的sys.database_files系統視圖的file_id列獲得該數據庫的文件的ID。

返回值:

nvarchar(128)數據類型的邏輯文件名稱。

示例:

select * from sys.database_files    --查出有哪些數據庫文件
    select file_id('NHibernate')    --輸出 1 查出NHibernate數據庫文件對應的fileid
    select  file_name(1)        -- 輸出 NHibernate

12、獲取文件屬性值:FILEPROPERTY

fileproperty函數用於獲得指定文件的指定屬性值。

語法格式:

fileproperty (file_name ,property )

參數說明:

  • file_name:表示要為其返回屬性信息的文件的邏輯名稱,nvarchar(128)數據類型,可以通過sys.database_files系統視圖查詢name列獲得。
  • property:表示要返回的屬性,數據類型為varchar(128)。

常見的property屬性值的取值如下:

屬性值

屬性值 說明 返回值
IsReadOnly 文件是否隻讀 Int 1代表True,0代表False
IsPrimaryFile 是否為主要數據文件 Int 1代表True,0代表False
IsLogFile 是否為日志文件 Int 1代表True,0代表False
SpaceUsed 文件空間的使用量 Int

示例:

select fileproperty('nhibernate','isreadonly')    --輸出 0
    select fileproperty('nhibernate','isprimaryfile')--輸出1
    select fileproperty('nhibernate','islogfile')    --輸出0
    select fileproperty('nhibernate','spaceused')    --輸出184

到此這篇關於SQL Server元數據函數的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: