sp_rename (Transact-SQL)sp_rename (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Изменяет имя пользовательского объекта в текущей базе данных.Changes the name of a user-created object in the current database. Этот объект может быть таблицей, индексом, столбцом, псевдонимом типа данных или MicrosoftMicrosoft .NET Framework.NET Framework определяемого пользователем типа среды выполнения (CLR).This object can be a table, index, column, alias data type, or MicrosoftMicrosoft .NET Framework.NET Framework common language runtime (CLR) user-defined type.

Внимание!

Изменение любой части имени объекта может разрушить скрипты и хранимые процедуры.Changing any part of an object name can break scripts and stored procedures. Не рекомендуется использовать эту инструкцию для переименования хранимых процедур, триггеров, определяемых пользователем функций или представлений; следует удалить объект и создать его повторно с новым именем.We recommend you do not use this statement to rename stored procedures, triggers, user-defined functions, or views; instead, drop the object and re-create it with the new name.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

  
sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]   

АргументыArguments

[ @objname =] 'object_name"[ @objname = ] 'object_name'
Текущее полное или неполное имя пользовательского объекта или типа данных.Is the current qualified or nonqualified name of the user object or data type. Если переименовать объект представляет собой столбец в таблице, object_name должно быть в форме таблица.столбец или столбце schema.table.column.If the object to be renamed is a column in a table, object_name must be in the form table.column or schema.table.column. Если объект, который требуется переименовать, индекса, object_name должно быть в форме table.index или schema.table.index.If the object to be renamed is an index, object_name must be in the form table.index or schema.table.index. Если объект, который требуется переименовать, ограничения, object_name должно быть в форме schema.constraint.If the object to be renamed is a constraint, object_name must be in the form schema.constraint.

Кавычки необходимы, только если указан объект с полным именем.Quotation marks are only necessary if a qualified object is specified. Если предоставлено полное имя таблицы, включая имя базы данных, в качестве последнего должно использоваться имя текущей базы данных.If a fully qualified name, including a database name, is provided, the database name must be the name of the current database. object_namenvarchar(776) , не имеет значения по умолчанию.object_name is nvarchar(776), with no default.

[ @newname =] 'новое_имя"[ @newname = ] 'new_name'
Новое имя для указанного объекта.Is the new name for the specified object. новое_имя должно быть однокомпонентным и должно соответствовать правилам для идентификаторов.new_name must be a one-part name and must follow the rules for identifiers. newnamesysname, не имеет значения по умолчанию.newname is sysname, with no default.

Примечание

Имена триггеров не могут начинаться с символов # или ##.Trigger names cannot start with # or ##.

[ @objtype =] 'object_type"[ @objtype = ] 'object_type'
Тип переименовываемого объекта.Is the type of object being renamed. object_typevarchar(13) , значение по умолчанию NULL, и может принимать одно из следующих значений.object_type is varchar(13), with a default of NULL, and can be one of these values.

ЗначениеValue ОписаниеDescription
COLUMNCOLUMN Столбец, который будет переименован.A column to be renamed.
DATABASEDATABASE Пользовательская база данных.A user-defined database. Этот тип объекта необходим при переименовании базы данных.This object type is required when renaming a database.
INDEXINDEX Пользовательский индекс.A user-defined index. При переименовании индекса со статистикой также автоматически переименовывается эта статистика.Renaming an index with statistics, also automatically renames the statistics.
OBJECTOBJECT Элемент типа отслеживаются в sys.objects.An item of a type tracked in sys.objects. Например, значение OBJECT может быть использовано для переименования объектов с ограничениями (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY) пользовательских таблиц и правил.For example, OBJECT could be used to rename objects including constraints (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), user tables, and rules.
STATISTICSSTATISTICS Применимо к: с SQL Server 2012 (11.x)SQL Server 2012 (11.x) до SQL Server 2017SQL Server 2017 и База данных SQL AzureAzure SQL Database.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017 and База данных SQL AzureAzure SQL Database.

Статистика создается явно пользователем или неявно с индексом.Statistics created explicitly by a user or created implicitly with an index. При переименовании статистики для индекса также автоматически переименовывается этот индекс.Renaming the statistics of an index automatically renames the index as well.
USERDATATYPEUSERDATATYPE Объект CLR пользовательские типы добавленные выполнением инструкции CREATE TYPE или sp_addtype.A CLR User-defined Types added by executing CREATE TYPE or sp_addtype.

Значения кода возвратаReturn Code Values

0 (успешное завершение) или ненулевое значение (неуспешное завершение)0 (success) or a nonzero number (failure)

ПримечанияRemarks

Изменить имя объекта или типа данных можно только в текущей базе данных.You can change the name of an object or data type in the current database only. Имена большинства системных типов данных и системных объектов изменить нельзя.The names of most system data types and system objects cannot be changed.

Процедура sp_rename автоматически переименовывает ассоциированный индекс каждый раз при переименовании ограничения PRIMARY KEY или UNIQUE.sp_rename automatically renames the associated index whenever a PRIMARY KEY or UNIQUE constraint is renamed. Если переименованный индекс привязан к ограничению PRIMARY KEY, то ограничение PRIMARY KEY также автоматически переименовывается хранимой процедурой sp_rename.If a renamed index is tied to a PRIMARY KEY constraint, the PRIMARY KEY constraint is also automatically renamed by sp_rename.

Процедура sp_rename может использоваться для переименования первичных и вторичных XML-индексов.sp_rename can be used to rename primary and secondary XML indexes.

Переименование хранимой процедуры, функции, представления или триггера не изменит имени соответствующего объекта в определении столбца sys.sql_modules представления каталога или получить с помощью OBJECT_ ОПРЕДЕЛЕНИЕ встроенной функции.Renaming a stored procedure, function, view, or trigger will not change the name of the corresponding object either in the definition column of the sys.sql_modules catalog view or obtained using the OBJECT_DEFINITION built-in function. Поэтому не рекомендуется использовать процедуру sp_rename для переименования объектов этих типов.Therefore, we recommend that sp_rename not be used to rename these object types. Лучше удалить и создать объект повторно с новым именем.Instead, drop and re-create the object with its new name.

Переименование такого объекта, как таблица или столбец не приводит к автоматическому переименованию ссылок на этот объект.Renaming an object such as a table or column will not automatically rename references to that object. Необходимо вручную изменить любые объекты, которые ссылаются на переименованный объект.You must modify any objects that reference the renamed object manually. Например, если переименован столбец таблицы и на этот столбец имеется ссылка в триггере, то необходимо изменить триггер, указав новое имя столбца.For example, if you rename a table column and that column is referenced in a trigger, you must modify the trigger to reflect the new column name. Используйте sys.sql_expression_dependencies , чтобы составить список зависимостей для объекта перед его переименованием.Use sys.sql_expression_dependencies to list dependencies on the object before renaming it.

РазрешенияPermissions

Для переименования объектов, столбцов и индексов требуется разрешение ALTER на объект.To rename objects, columns, and indexes, requires ALTER permission on the object. Для переименования определенных пользователем типов требуется разрешение CONTROL на тип.To rename user types, requires CONTROL permission on the type. Для переименования базы данных требуется членство в предопределенных ролях сервера sysadmin или dbcreator.To rename a database, requires membership in the sysadmin or dbcreator fixed server roles

ПримерыExamples

A.A. Переименование таблицыRenaming a table

В следующем примере в схеме Sales таблица SalesTerritory переименовывается в SalesTerr.The following example renames the SalesTerritory table to SalesTerr in the Sales schema.

USE AdventureWorks2012;  
GO  
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';  
GO  

Б.B. Переименование столбцаRenaming a column

В следующем примере показано переименование TerritoryID столбца в SalesTerritory таблицу TerrID.The following example renames the TerritoryID column in the SalesTerritory table to TerrID.

USE AdventureWorks2012;  
GO  
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';  
GO  

В.C. Переименование индексаRenaming an index

В следующем примере индекс IX_ProductVendor_VendorID переименовывается в IX_VendorID.The following example renames the IX_ProductVendor_VendorID index to IX_VendorID.

USE AdventureWorks2012;  
GO  
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';  
GO  

Г.D. Переименование псевдонима типа данныхRenaming an alias data type

В следующем примере псевдоним типа данных Phone переименовывается в Telephone.The following example renames the Phone alias data type to Telephone.

USE AdventureWorks2012;  
GO  
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';  
GO  

Д.E. Переименование ограниченийRenaming constraints

Следующие примеры иллюстрируют переименование ограничения PRIMARY KEY, ограничения CHECK и ограничения FOREIGN KEY.The following examples rename a PRIMARY KEY constraint, a CHECK constraint and a FOREIGN KEY constraint. При переименовании ограничения должна быть указана схема, к которой принадлежит ограничение.When renaming a constraint, the schema to which the constraint belongs must be specified.

USE AdventureWorks2012;   
GO  
-- Return the current Primary Key, Foreign Key and Check constraints for the Employee table.  
SELECT name, SCHEMA_NAME(schema_id) AS schema_name, type_desc  
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('HumanResources.Employee'))   
AND type IN ('C','F', 'PK');   
GO  
  
-- Rename the primary key constraint.  
sp_rename 'HumanResources.PK_Employee_BusinessEntityID', 'PK_EmployeeID';  
GO  
  
-- Rename a check constraint.  
sp_rename 'HumanResources.CK_Employee_BirthDate', 'CK_BirthDate';  
GO  
  
-- Rename a foreign key constraint.  
sp_rename 'HumanResources.FK_Employee_Person_BusinessEntityID', 'FK_EmployeeID';  
  
-- Return the current Primary Key, Foreign Key and Check constraints for the Employee table.  
SELECT name, SCHEMA_NAME(schema_id) AS schema_name, type_desc  
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('HumanResources.Employee'))   
AND type IN ('C','F', 'PK');  
  
  
name                                  schema_name        type_desc  
------------------------------------- ------------------ ----------------------  
FK_Employee_Person_BusinessEntityID   HumanResources     FOREIGN_KEY_CONSTRAINT  
PK_Employee_BusinessEntityID          HumanResources     PRIMARY_KEY_CONSTRAINT  
CK_Employee_BirthDate                 HumanResources     CHECK_CONSTRAINT  
CK_Employee_MaritalStatus             HumanResources     CHECK_CONSTRAINT  
CK_Employee_HireDate                  HumanResources     CHECK_CONSTRAINT  
CK_Employee_Gender                    HumanResources     CHECK_CONSTRAINT  
CK_Employee_VacationHours             HumanResources     CHECK_CONSTRAINT  
CK_Employee_SickLeaveHours            HumanResources     CHECK_CONSTRAINT  
  
(7 row(s) affected)  
  
name                                  schema_name        type_desc  
------------------------------------- ------------------ ----------------------  
FK_Employee_ID                        HumanResources     FOREIGN_KEY_CONSTRAINT  
PK_Employee_ID                        HumanResources     PRIMARY_KEY_CONSTRAINT  
CK_BirthDate                          HumanResources     CHECK_CONSTRAINT  
CK_Employee_MaritalStatus             HumanResources     CHECK_CONSTRAINT  
CK_Employee_HireDate                  HumanResources     CHECK_CONSTRAINT  
CK_Employee_Gender                    HumanResources     CHECK_CONSTRAINT  
CK_Employee_VacationHours             HumanResources     CHECK_CONSTRAINT  
CK_Employee_SickLeaveHours            HumanResources     CHECK_CONSTRAINT  
  
(7 row(s) affected)  
  

Е.F. Переименование статистикиRenaming statistics

В следующем примере создается объект статистики, с именем contactMail1 и затем переименовывается в для NewContact с помощью sp_rename.The following example creates a statistics object named contactMail1 and then renames the statistic to NewContact by using sp_rename. При переименовании объекта статистики его имя должно быть указано в формате schema.table.statistics_name.When renaming statistics, the object must be specified in the format schema.table.statistics_name.

CREATE STATISTICS ContactMail1  
    ON Person.Person (BusinessEntityID, EmailPromotion)  
    WITH SAMPLE 5 PERCENT;  
  
sp_rename 'Person.Person.ContactMail1', 'NewContact','Statistics';  
  

См. такжеSee Also

sys.sql_expression_dependencies (Transact-SQL) sys.sql_expression_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL) sys.sql_modules (Transact-SQL)
Системные хранимые процедуры (Transact-SQL) System Stored Procedures (Transact-SQL)
Хранимым процедурам ядра СУБД (Transact-SQL)Database Engine Stored Procedures (Transact-SQL)