SQL Server 結構描述集合
適用於:.NET Framework .NET .NET Standard
除了一般結構描述集合之外,Microsoft SqlClient Data Provider for SQL Server 還支援其他結構描述集合。 這些結構描述集合會因您目前使用的 SQL Server 版本而稍微不同。 若要判斷支援的結構描述集合清單,請呼叫 GetSchema 方法但不搭配任何引數或搭配結構描述集合名稱 "MetaDataCollections"。 這會傳回 DataTable,包括支援的結構描述集合清單、每個集合所支援的限制數目,以及集合所使用之識別項部分的數目。
資料庫
ColumnName | DataType | Description |
---|---|---|
database_name | String | 資料庫的名稱。 |
dbid | Int16 | 資料庫識別碼。 |
create_date | DateTime | 資料庫的建立日期。 |
外部索引鍵
ColumnName | DataType | Description |
---|---|---|
CONSTRAINT_CATALOG | String | 條件約束所屬的目錄。 |
CONSTRAINT_SCHEMA | String | 包含條件約束的結構描述。 |
CONSTRAINT_NAME | String | Name: |
TABLE_CATALOG | String | 包含條件約束的資料表名稱。 |
TABLE_SCHEMA | String | 包含資料表的結構描述。 |
TABLE_NAME | String | 資料表名稱 |
CONSTRAINT_TYPE | String | 條件約束的類型。 僅允許 FOREIGN KEY。 |
IS_DEFERRABLE | String | 指定條件約束是否可以延遲。 傳回 NO。 |
INITIALLY_DEFERRED | String | 指定條件約束一開始是否可以延遲。 傳回 NO。 |
索引
ColumnName | DataType | Description |
---|---|---|
constraint_catalog | String | 索引所屬的目錄。 |
constraint_schema | String | 包含索引的結構描述。 |
constraint_name | String | 索引的名稱。 |
table_catalog | String | 與索引相關的資料表名稱。 |
table_schema | String | 包含與索引相關之資料表的結構描述。 |
table_name | String | 資料表名稱。 |
index_name | String | 索引名稱。 |
type_desc | String | 索引的類型將屬於下列其中一種類型: - HEAP - CLUSTERED - NONCLUSTERED - XML - SPATIAL |
IndexColumns
ColumnName | DataType | Description |
---|---|---|
constraint_catalog | String | 索引所屬的目錄。 |
constraint_schema | String | 包含索引的結構描述。 |
constraint_name | String | 索引的名稱。 |
table_catalog | String | 與索引相關的資料表名稱。 |
table_schema | String | 包含與索引相關之資料表的結構描述。 |
table_name | String | 資料表名稱。 |
column_name | String | 與索引相關的資料行名稱。 |
ordinal_position | Int32 | 資料行序數位置。 |
KeyType | Byte | 物件的型別。 |
index_name | String | 索引名稱。 |
程序
ColumnName | DataType | Description |
---|---|---|
SPECIFIC_CATALOG | String | 目錄的特定名稱。 |
SPECIFIC_SCHEMA | String | 結構描述的特定名稱。 |
SPECIFIC_NAME | String | 目錄的特定名稱。 |
ROUTINE_CATALOG | String | 預存程序所屬的目錄。 |
ROUTINE_SCHEMA | String | 包含預存程序的結構描述。 |
ROUTINE_NAME | String | 預存程序的名稱。 |
ROUTINE_TYPE | String | 針對預存程序傳回 PROCEDURE,並針對函式傳回 FUNCTION。 |
CREATED | DateTime | 建立程序的時間。 |
LAST_ALTERED | DateTime | 上次修改程序的時間。 |
程序參數
ColumnName | DataType | Description |
---|---|---|
SPECIFIC_CATALOG | String | 此為其參數之程序的目錄名稱。 |
SPECIFIC_SCHEMA | String | 包含此參數所屬程序的結構描述。 |
SPECIFIC_NAME | String | 此參數所屬程序的名稱。 |
ORDINAL_POSITION | Int32 | 參數的序數位置從 1 開始。 若為程序的傳回值,則此項為 0。 |
PARAMETER_MODE | String | 如果是輸入參數,便傳回 IN;如果是輸出參數,便傳回 OUT,如果是輸入/輸出參數,便傳回 INOUT。 |
IS_RESULT | String | 若表示做為函式之程序的結果,傳回 YES。 否則,便傳回 NO。 |
AS_LOCATOR | String | 如果宣告成定位器,便傳回 YES。 否則,便傳回 NO。 |
PARAMETER_NAME | String | 參數的名稱。 如果這對應於函數的傳回值,便是 NULL。 |
DATA_TYPE | String | 系統提供的資料類型。 |
CHARACTER_MAXIMUM_LENGTH | Int32 | 二進位或字元資料類型的最大長度 (以字元為單位)。 否則,便傳回 NULL。 |
CHARACTER_OCTET_LENGTH | Int32 | 二進位或字元資料類型的最大長度 (以位元組為單位)。 否則,便傳回 NULL。 |
COLLATION_CATALOG | String | 參數集合的目錄名稱。 如果不是字元類型之一,便傳回 NULL。 |
COLLATION_SCHEMA | String | 一律傳回 NULL。 |
COLLATION_NAME | String | 參數的定序名稱。 如果不是字元類型之一,便傳回 NULL。 |
CHARACTER_SET_CATALOG | String | 參數字元集的目錄名稱。 如果不是字元類型之一,便傳回 NULL。 |
CHARACTER_SET_SCHEMA | String | 一律傳回 NULL。 |
CHARACTER_SET_NAME | String | 參數字元集的名稱。 如果不是字元類型之一,便傳回 NULL。 |
NUMERIC_PRECISION | Byte | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數。 否則,便傳回 NULL。 |
NUMERIC_PRECISION_RADIX | Int16 | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數基數。 否則,便傳回 NULL。 |
NUMERIC_SCALE | Int32 | 近似數值資料、精確數值資料、整數資料或貨幣資料的小數位數。 否則,便傳回 NULL。 |
DATETIME_PRECISION | Int16 | 若參數型別為 datetime 或 smalldatetime,則為以分數秒為單位的精確度。 否則,便傳回 NULL。 |
INTERVAL_TYPE | String | NULL。 保留供 SQL Server 日後使用。 |
INTERVAL_PRECISION | Int16 | NULL。 保留供 SQL Server 日後使用。 |
資料表
ColumnName | DataType | 描述 |
---|---|---|
TABLE_CATALOG | String | 資料表的目錄。 |
TABLE_SCHEMA | String | 包含資料表的結構描述。 |
TABLE_NAME | String | 資料表名稱。 |
TABLE_TYPE | String | 資料表的類型。 可以是 VIEW 或 BASE TABLE。 |
資料行
ColumnName | DataType | 描述 |
---|---|---|
TABLE_CATALOG | String | 資料表的目錄。 |
TABLE_SCHEMA | String | 包含資料表的結構描述。 |
TABLE_NAME | String | 資料表名稱。 |
COLUMN_NAME | String | 資料行名稱。 |
ORDINAL_POSITION | Int32 | 資料行識別碼。 |
COLUMN_DEFAULT | String | 資料行的預設值。 |
IS_NULLABLE | String | 資料行的 Null 屬性。 若此資料行允許 NULL,其會傳回 YES。 否則,傳回 NO。 |
DATA_TYPE | String | 系統提供的資料類型。 |
CHARACTER_MAXIMUM_LENGTH | Int32 – Sql8, Int16 – Sql7 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以字元為單位)。 否則,就傳回 NULL。 |
CHARACTER_OCTET_LENGTH | Int32 – SQL8, Int16 – Sql7 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以位元組為單位)。 否則,就傳回 NULL。 |
NUMERIC_PRECISION | Unsigned Byte | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數。 否則,就傳回 NULL。 |
NUMERIC_PRECISION_RADIX | Int16 | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數基數。 否則,就傳回 NULL。 |
NUMERIC_SCALE | Int32 | 近似數值資料、精確數值資料、整數資料或貨幣資料的小數位數。 否則,就傳回 NULL。 |
DATETIME_PRECISION | Int16 | datetime 和 SQL-92 interval 資料類型的子類型代碼。 如果是其他資料類型,就傳回 NULL。 |
CHARACTER_SET_CATALOG | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示字元集所在的資料庫。 否則,就傳回 NULL。 |
CHARACTER_SET_SCHEMA | String | 一律傳回 NULL。 |
CHARACTER_SET_NAME | String | 若此資料行為字元資料或文字資料型別,則傳回字元集的唯一名稱。 否則,就傳回 NULL。 |
COLLATION_CATALOG | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示定義定序的資料庫。 否則,這個資料行就是 NULL。 |
IS_FILESTREAM | String | YES (如果資料行具有 FILESTREAM 屬性)。 NO (如果資料行沒有 FILESTREAM 屬性)。 |
IS_SPARSE | String | YES (如果資料行是疏鬆資料行)。 NO (如果資料行不是疏鬆資料行)。 |
IS_COLUMN_SET | String | YES (如果資料行是資料行集資料行)。 NO (如果資料行不是資料行集資料行)。 |
AllColumns
AllColumns 結構描述集合會用於支援疏鬆資料行。 AllColumns 與 Columns 結構描述集合具有相同的限制和產生的 DataTable 結構描述。 唯一的差異是 AllColumns 包含了 Columns 結構描述集合並未包含的資料行集資料行。 下表將描述這些資料行。
ColumnName | DataType | 描述 |
---|---|---|
TABLE_CATALOG | String | 資料表的目錄。 |
TABLE_SCHEMA | String | 包含資料表的結構描述。 |
TABLE_NAME | String | 資料表名稱。 |
COLUMN_NAME | String | 資料行名稱。 |
ORDINAL_POSITION | Int32 | 資料行識別碼。 |
COLUMN_DEFAULT | String | 資料行的預設值。 |
IS_NULLABLE | String | 資料行的 Null 屬性。 若此資料行允許 NULL,其會傳回 YES。 否則,它就會傳回 NO。 |
DATA_TYPE | String | 系統提供的資料類型。 |
CHARACTER_MAXIMUM_LENGTH | Int32 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以字元為單位)。 否則,就傳回 NULL。 |
CHARACTER_OCTET_LENGTH | Int32 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以位元組為單位)。 否則,就傳回 NULL。 |
NUMERIC_PRECISION | Unsigned Byte | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數。 否則,就傳回 NULL。 |
NUMERIC_PRECISION_RADIX | Int16 | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數基數。 否則,就傳回 NULL。 |
NUMERIC_SCALE | Int32 | 近似數值資料、精確數值資料、整數資料或貨幣資料的小數位數。 否則,就傳回 NULL。 |
DATETIME_PRECISION | Int16 | datetime 和 SQL-92 interval 資料類型的子類型代碼。 如果是其他資料類型,就傳回 NULL。 |
CHARACTER_SET_CATALOG | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示字元集所在的資料庫。 否則,就傳回 NULL。 |
CHARACTER_SET_SCHEMA | String | 一律傳回 NULL。 |
CHARACTER_SET_NAME | String | 若此資料行為字元資料或文字資料型別,則傳回字元集的唯一名稱。 否則,就傳回 NULL。 |
COLLATION_CATALOG | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示定義定序的資料庫。 否則,這個資料行就是 NULL。 |
IS_FILESTREAM | String | YES (如果資料行具有 FILESTREAM 屬性)。 NO (如果資料行沒有 FILESTREAM 屬性)。 |
IS_SPARSE | String | YES (如果資料行是疏鬆資料行)。 NO (如果資料行不是疏鬆資料行)。 |
IS_COLUMN_SET | String | YES (如果資料行是資料行集資料行)。 NO (如果資料行不是資料行集資料行)。 |
ColumnSetColumns
ColumnSetColumns 結構描述集合會用於支援疏鬆資料行。 ColumnSetColumns 結構描述集合會針對資料行集中的所有資料行傳回結構描述。 下表將描述這些資料行。
ColumnName | DataType | 描述 |
---|---|---|
TABLE_CATALOG | String | 資料表的目錄。 |
TABLE_SCHEMA | String | 包含資料表的結構描述。 |
TABLE_NAME | String | 資料表名稱。 |
COLUMN_NAME | String | 資料行名稱。 |
ORDINAL_POSITION | Int32 | 資料行識別碼。 |
COLUMN_DEFAULT | String | 資料行的預設值。 |
IS_NULLABLE | String | 資料行的 Null 屬性。 若此資料行允許 NULL,其會傳回 YES。 否則,它就會傳回 NO。 |
DATA_TYPE | String | 系統提供的資料類型。 |
CHARACTER_MAXIMUM_LENGTH | Int32 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以字元為單位)。 否則,就傳回 NULL。 |
CHARACTER_OCTET_LENGTH | Int32 | 二進位資料、字元資料,或文字和影像資料的最大長度 (以位元組為單位)。 否則,就傳回 NULL。 |
NUMERIC_PRECISION | Unsigned Byte | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數。 否則,就傳回 NULL。 |
NUMERIC_PRECISION_RADIX | Int16 | 近似數值資料、精確數值資料、整數資料或貨幣資料的有效位數基數。 否則,就傳回 NULL。 |
NUMERIC_SCALE | Int32 | 近似數值資料、精確數值資料、整數資料或貨幣資料的小數位數。 否則,就傳回 NULL。 |
DATETIME_PRECISION | Int16 | datetime 和 SQL-92 interval 資料類型的子類型代碼。 如果是其他資料類型,就傳回 NULL。 |
CHARACTER_SET_CATALOG | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示字元集所在的資料庫。 否則,就傳回 NULL。 |
CHARACTER_SET_SCHEMA | String | 一律傳回 NULL。 |
CHARACTER_SET_NAME | String | 若此資料行為字元資料或文字資料型別,則傳回字元集的唯一名稱。 否則,就傳回 NULL。 |
COLLATION_CATALOG | String | 若資料行為字元資料或文字資料型別,則傳回 master,表示定義定序的資料庫。 否則,這個資料行就是 NULL。 |
IS_FILESTREAM | String | YES (如果資料行具有 FILESTREAM 屬性)。 NO (如果資料行沒有 FILESTREAM 屬性)。 |
IS_SPARSE | String | YES (如果資料行是疏鬆資料行)。 NO (如果資料行不是疏鬆資料行)。 |
IS_COLUMN_SET | String | YES (如果資料行是資料行集資料行)。 NO (如果資料行不是資料行集資料行)。 |
使用者
ColumnName | DataType | Description |
---|---|---|
uid | Int16 | 使用者識別碼,在這個資料庫中是唯一的。 1 是資料庫擁有人。 |
使用者名稱 | String | 使用者名稱或群組名稱,在此資料庫中是唯一的。 |
createdate | DateTime | 加入帳戶的日期。 |
updatedate | DateTime | 上次變更帳戶的日期。 |
檢視
ColumnName | DataType | 描述 |
---|---|---|
TABLE_CATALOG | String | 檢視表的目錄。 |
TABLE_SCHEMA | String | 包含檢視表的結構描述。 |
TABLE_NAME | String | 檢視名稱。 |
CHECK_OPTION | String | WITH CHECK OPTION 的類型。 若原始檢視表是使用 WITH CHECK OPTION 所建立的,則為 CASCADE。 否則,就傳回 NONE。 |
IS_UPDATABLE | String | 指定檢視是否可以更新。 一律傳回 NO。 |
ViewColumns
ColumnName | DataType | 描述 |
---|---|---|
VIEW_CATALOG | String | 檢視表的目錄。 |
VIEW_SCHEMA | String | 包含檢視表的結構描述。 |
VIEW_NAME | String | 檢視名稱。 |
TABLE_CATALOG | String | 與此檢視表相關之資料表的目錄。 |
TABLE_SCHEMA | String | 包含與此檢視表相關之資料表的結構描述。 |
TABLE_NAME | String | 與檢視表相關之資料表的名稱。 基底資料表。 |
COLUMN_NAME | String | 資料行名稱。 |
UserDefinedTypes
ColumnName | DataType | Description |
---|---|---|
assembly_name | String | 組件檔案的名稱。 |
udt_name | String | 組件的類別名稱。 |
version_major | Object | 主要版本號碼。 |
version_minor | Object | 次要版本號碼。 |
version_build | Object | 組建編號。 |
version_revision | Object | 修訂編號。 |
culture_info | Object | 與此 UDT 相關的文化特性資訊。 |
public_key | Object | 此組件使用的公開金鑰。 |
is_fixed_length | Boolean | 指定型別的長度是否永遠與 max_length 相同。 |
max_length | Int16 | 型別的最大長度 (以位元組為單位)。 |
Create_Date | DateTime | 建立/登錄組件的日期。 |
Permission_set_desc | String | 組件使用權限集合/安全性層級的易記名稱。 |