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。
推薦閱讀:
- SQL Server一個字符串拆分多行顯示或者多行數據合並成一個字符串
- SQL SERVER 開啟CDC 實操詳細
- Sql Server之數據類型詳解
- 淺析SQL Server的嵌套存儲過程中使用同名的臨時表怪像
- SQL Server在T-SQL語句中使用變量