更改當(dāng)前數(shù)據(jù)庫中用戶創(chuàng)建對象(如表、列或用戶定義數(shù)據(jù)類型)的名稱。
sp_rename [ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
[@objname =] 'object_name'
是用戶對象(表、視圖、列、存儲過程、觸發(fā)器、默認(rèn)值、數(shù)據(jù)庫、對象或規(guī)則)或數(shù)據(jù)類型的當(dāng)前名稱。如果要重命名的對象是表中的一列,那么 object_name 必須為 table.column 形式。如果要重命名的是索引,那么 object_name 必須為 table.index 形式。object_name 為 nvarchar(776) 類型,無默認(rèn)值。
[@newname =] 'new_name'
是指定對象的新名稱。new_name 必須是名稱的一部分,并且要遵循標(biāo)識符的規(guī)則。newname 是 sysname 類型,無默認(rèn)值。
[@objtype =] 'object_type'
是要重命名的對象的類型。object_type 為 varchar(13) 類型,其默認(rèn)值為 NULL,可取下列值。
值 | 描述 |
---|---|
COLUMN | 要重命名的列。 |
DATABASE | 用戶定義的數(shù)據(jù)庫。要重命名數(shù)據(jù)庫時需用此選項。 |
INDEX | 用戶定義的索引。 |
OBJECT | 在 sysobjects 中跟蹤的類型的項目。例如,OBJECT 可用來重命名約束(CHECK、FOREIGN KEY、PRIMARY/UNIQUE KEY)、用戶表、視圖、存儲過程、觸發(fā)器和規(guī)則等對象。 |
USERDATATYPE | 通過執(zhí)行 sp_addtype 而添加的用戶定義數(shù)據(jù)類型。 |
0(成功)或非零數(shù)字(失敗)
只能更改當(dāng)前數(shù)據(jù)庫中的對象名稱或數(shù)據(jù)類型名稱。大多數(shù)系統(tǒng)數(shù)據(jù)類型和系統(tǒng)對象的名稱不能更改。
重命名視圖時,sysobjects 表中有關(guān)該視圖的信息將得到更新。重命名存儲過程時,sysobjects 表中有關(guān)該過程的信息將得到更新。
每當(dāng)重命名 PRIMARY KEY 或 UNIQUE 約束時,sp_rename 都會自動為相關(guān)聯(lián)的索引重命名。如果重命名的索引與 PRIMARY KEY 約束相關(guān)聯(lián),那么 sp_rename 也會自動重命名主鍵。
重要 重命名存儲過程和視圖后,請清空過程高速緩存以確保所有相關(guān)的存儲過程和視圖都重新編譯。
由于存儲過程和視圖都不存儲數(shù)據(jù),所以這兩種對象均可快速刪除和重建。重命名文本對象時,要獲得最佳結(jié)果,應(yīng)刪除并使用其新名稱重新創(chuàng)建對象。
sysadmin 固定服務(wù)器角色成員、db_owner 和 db_ddladmin 固定數(shù)據(jù)庫角色成員或?qū)ο笏姓呖梢詧?zhí)行 sp_rename。只有 sysadmin 和 dbcreator 固定服務(wù)器角色成員才能將"database"作為 object_type 來執(zhí)行 sp_rename。
下例將表 customers 重命名為 custs。
EXEC sp_rename 'customers', 'custs'
下例將表 customers 中的列 contact title 重命名為 title。
EXEC sp_rename 'customers.[contact title]', 'title', 'COLUMN'
相關(guān)文章