SQLServer系統表格使用小小心得 |
|
goat
高階會員 ![]() ![]() ![]() ![]() 發表:53 回覆:130 積分:134 註冊:2002-06-03 發送簡訊給我 |
1.取得某一表格欄位名稱、型態、長度、描述及是否允許NULL
SELECT A.name, C.value, B.name, A.length, A.isnullable FROM syscolumns A
LEFT JOIN systypes B ON A.xtype=B.xusertype
LEFT JOIN ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'XXX', 'column', default) C ON A.name=C.objname
WHERE A.id = (SELECT id FROM sysobjects WHERE name = 'XXX') or SELECT A.name as FieldName ,C.value as DisplayName, B.name AS DataType, A.length as DataSize, A.isnullable FROM syscolumns A , systypes B, sysproperties C
WHERE A.id = (SELECT id FROM sysobjects WHERE name = 'XXX')
AND C.id = (SELECT id FROM sysobjects WHERE name = 'XXX')
AND C.smallid=A.colorder
AND A.xtype=B.xusertype 2.取得某一表格的PK 值
SELECT name FROM syscolumns
WHERE colid IN (SELECT colid FROM sysindexkeys WHERE indid ='1' AND id in (SELECT id FROM sysobjects WHERE name = 'xxx'))
AND id IN (SELECT id FROM sysobjects WHERE name = 'xxx') 3.取得某一表格的預設欄位及預設值
SELECT A.name,C.COLUMN_DEFAULT,B.name FROM sysobjects A, syscolumns B, INFORMATION_SCHEMA.COLUMNS C
WHERE (A.id=B.cdefault) AND A.type ='D' AND C.TABLE_NAME='xxx'
AND (C.COLUMN_NAME=B.name) AND A.parent_obj=(SELECT id FROM sysobjects WHERE name = 'xxx') PS.xxx--> 表格名稱 以上。 小弟土法煉鋼,如有錯誤的地方,敬請大家指正。
|
akira
一般會員 ![]() ![]() 發表:7 回覆:4 積分:2 註冊:2003-08-19 發送簡訊給我 |
How about sp_helpXXXX
in SQL HELP sp_help
報告某個資料庫物件 (列於 sysobjects 資料表中的任何物件)、某個使用者自訂資料型別、或者某個由 Microsoft® SQL Server™ 所提供的資料型別之相關資訊。 語法
sp_help [ [ @objname = ] name ] 引數
[@objname =] name 是 systypes 資料表中的 sysobjects 或者任何使用者自訂資料型別的物件名稱。name 是 nvarchar(776),預設值為 NULL。不接受資料庫名稱。 傳回碼值
0 (成功) 或 1 (失敗) 結果集
傳回的結果集視是否指定 name、何時指定,以及資料庫物件為何而定。 若 sp_help 執行時未加上任何引數,則會傳回現行資料庫中所有型別物件之摘要資訊。 資料行名稱 資料型別 描述
Name nvarchar(128) 物件名稱
Owner nvarchar(128) 物件擁有者
Object_type nvarchar(31) 物件類型 若 name 的型別為 SQL Server 或某個使用者自訂資料型別時,sp_help 傳回以下結果集。 資料行名稱 資料型別 描述
Type_name nvarchar(128) 資料型別名稱
Storage_type nvarchar(128) SQL Server 型別名稱。
Length smallint 資料型別的實體長度 (單位為位元組)。
Prec int 有效位數 (總位數)。
Scale int 小數位數。
Nullable varchar(35) 指出是否允許使用 NULL 值:Yes (是) 或 No (否)。
Default_name nvarchar(128) 繫結到此型別的預設值名稱。若未繫結規則,則使用 NULL。
Rule_name nvarchar(128) 繫結到此型別的規則名稱。若未繫結規則,則使用 NULL。
Collation sysname 資料型別的定序 (Collation)。非字元資料型別則為 NULL。 如果 name 是任何資料庫物件 (而非資料型別),sp_help 便會傳回此結果集,以及依據指定的物件之型別傳回額外的結果集。 資料行名稱 資料型別 描述
Name nvarchar(128) 資料表名稱
Owner nvarchar(128) 資料表擁有者
Type nvarchar(31) 資料表型別
Created_datetime datetime 資料表建立日期 依據指定的資料庫物件,sp_help 會傳回額外的結果集。 如果 name 是一個系統資料表、使用者資料表或檢視表,sp_help 便會傳回下列結果集 (但說明資料檔位於檔案群組中什麼位置的結果集,在檢視表中並不會傳回)。 為資料行物件所傳回的額外結果集: 資料行名稱 資料型別 描述
Column_name nvarchar(128) 資料行名稱。
Type nvarchar(128) 資料行資料型別。
Computed varchar(35) 指出是否計算資料行中的值:(Yes (是) 或 No (否))。
Length int 資料行長度 (單位為位元組)。
Prec char(5) 資料行有效位數。
Scale char(5) 資料行小數位數。
Nullable varchar(35) 指出資料行中是否允許使用 NULL 值:Yes (是) 或 No (否)。
TrimTrailingBlanks varchar(35) 刪減行尾的空白 (Yes (是) 或 No (否)。
FixedLenNullInSource varchar(35) 僅為回溯相容性的目的。
Collation sysname 資料行的定序 (Collation)。非字元資料型別則為 NULL。 為識別資料行所傳回的額外結果集: 資料行名稱 資料型別 描述
Identity nvarchar(128) 其資料型別被宣稱為識別 (Identity) 的資料行名稱。
Seed numeric 識別 (Identity) 資料行的起始值
Increment numeric 此資料行值的遞增值。
Not For Replication int 當複寫登入 (如 sqlrepl) 在資料表中插入資料時,IDENTITY 屬性並不會強制執行:
1 = 真
0 = 偽 為資料行所傳回的額外結果集: 資料行名稱 資料型別 描述
RowGuidCol sysname 全域唯一識別項資料行的名稱 為檔案群組所傳回的額外結果集: 資料行名稱 資料型別 描述
Data_located_on_filegroup nvarchar(128) 資料所在的檔案群組 (「主要」、「次要」或「交易記錄檔」)。 為索引所傳回的額外結果集: 資料行名稱 資料型別 描述
index_name sysname 索引名稱
Index_description varchar(210) 索引描述
index_keys nvarchar(2078) 藉以建立索引的資料行名稱 為條件約束所傳回的額外結果集: 資料行名稱 資料型別 描述
constraint_type nvarchar(146) 條件約束型別。
constraint_name nvarchar(128) 條件約束名稱
delete_action nvarchar(9) 指出 DELETE 動作的設定:No Action (無動作)、CASCADE、或者 N/A。
(僅適用於 FOREIGN KEY 條件約束。)
update_action nvarchar(9) 指出 UPDATE 動作的狀態:No Action (無動作)、Cascade (串聯)、或 N/A。
(僅適用於 FOREIGN KEY 條件約束。)
status_enabled varchar(8) 指出是否啟用條件約束:Enabled (啟用)、Disabled (停用) 或 N/A。(僅適用於 CHECK 與 FOREIGN KEY 條件約束。)
status_for_replication varchar(19) 指出條件約束是否可以複寫。(僅適用於 CHECK 與 FOREIGN KEY 條件約束。)
constraint_keys nvarchar(2078) 構成條件約束的資料行名稱,若為預設值與規則,則指定義此預設值或規則的文字。 為引用物件所傳回的額外結果集: 資料行名稱 資料型別 描述
Table is referenced by nvarchar(516) 指定引用此資料表的其它資料庫物件。 如果 name 是一個系統預存程序或延伸預存程序,sp_help 會傳回下列結果集。 資料行名稱 資料型別 描述
Parameter_name nvarchar(128) 預存程序參數名稱
Type nvarchar(128) 預存程序參數資料型別
Length smallint 實體儲存長度上限 (單位為位元組)
Prec int 有效位數 (總位數)。
Scale int 小數點位置右邊的有效位數。
Param_order smallint 參數的順序 備註
sp_help 程序只會在現行資料庫中尋找物件。 若未指定 name,sp_help 便會列出現行資料庫中所有物件的物件名稱、擁有者以及物件型別。sp_helptrigger 則提供觸發程序的相關資訊。 權限
執行權限預設為授與 public 角色。 範例
A. 傳回所有物件的相關資訊
此範例列出 sysobjects 中每個物件的相關資訊。 USE master
EXEC sp_help B. 傳回單一物件的相關資訊
此範例顯示了 publishers 資料表的相關資訊。 USE pubs
EXEC sp_help publishers 另請參閱 sp_helpgroup sp_helpindex sp_helprotect sp_helpserver sp_helptrigger sp_helpuser 系統預存程序
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |