sp_rename 用於變更當前資料庫中使用者物件 (資料表、資料行、索引、條件約束、預存程序、檢視、觸發器等) 或使用者定義資料類型的名稱。
sp_rename
[ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
| 參數 | 說明 |
|---|---|
@objname | 現有物件名稱。資料行格式:table.column;索引格式:table.index。支援完整限定名稱 (含資料庫名),但資料庫必須為當前資料庫。nvarchar(776) |
@newname | 新名稱,單一名稱部分 (不含結構描述),符合識別碼規則。sysname |
@objtype | 選填。物件類型:OBJECT (預設)、COLUMN、INDEX、DATABASE、USERDATATYPE 等 |
sys.sql_modules.definition 中的定義內容,導致中繼資料不一致。正確做法:DROP 後重建sys.sql_expression_dependencies 檢查相依性' 重命名資料表
EXEC sp_rename 'dbo.OldTable', 'NewTable';
' 重命名資料行
EXEC sp_rename 'dbo.Customers.OldCol', 'NewCol', 'COLUMN';
' 重命名索引
EXEC sp_rename 'dbo.Orders.IX_OldIndex', 'IX_NewIndex', 'INDEX';
' 重命名使用者定義資料類型
EXEC sp_rename 'OldTypeName', 'NewTypeName', 'USERDATATYPE';
sys.sql_expression_dependencies 完整掃描相依物件sp_refreshview、sp_refreshsqlmodule 更新中繼資料掌握 sp_rename 的行為邊界,能安全高效完成物件重命名,避免因中繼資料不一致導致的難以排查錯誤。