Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como renomear um nome de tabela no SQL Server


Um dos deveres mais críticos do administrador de banco de dados é gerenciar objetos de banco de dados. Por exemplo, a lógica do aplicativo muda e os DBAs podem precisar alterar os nomes dos objetos do banco de dados. Essa tarefa é crucial porque devemos garantir que a renomeação não interrompa o aplicativo.

Recentemente, recebi um projeto em que tive que renomear algumas tabelas. Aqui, vou explicar como renomear uma tabela do SQL Server de várias maneiras.

Podemos renomear uma tabela usando:
  1. Estúdio de gerenciamento do SQL Server.
  2. O sp_rename procedimento armazenado.

Além disso, abordarei possíveis erros que podem ocorrer após a renomeação de tabelas e as precauções necessárias. Este artigo é orientado para demonstração, então criei os seguintes objetos na instância do SQL Server:
  1. O banco de dados chamado StudentDB .
  2. Duas tabelas chamadas tblSchool e tblStudent .
  3. Uma chave estrangeira entre tblSchool e tblStudent . A tblSchool é uma tabela pai e tblStudent é uma tabela filha.
  4. Um procedimento armazenado chamado sp_getStudents .
  5. Uma visualização chamada vwStudents .

Os códigos T-SQL aplicados para criar os objetos de banco de dados acima são os seguintes:

Criar banco de dados:
Create database [StudentDB]
Go

Crie uma tabela e chaves estrangeiras:
Use [StudentDB]
Go
CREATE TABLE [dbo].[tblSchool](
	[School_ID] [int] IDENTITY(1,1) NOT NULL,
	[School_Name] [varchar](500) NULL,
	[City] [varchar](50) NULL,
 CONSTRAINT [PK_tblSchool] PRIMARY KEY CLUSTERED 
(
	[School_ID] ASC
)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[tblStudent](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[student_name] [varchar](250) NOT NULL,
	[student_code] [varchar](5) NOT NULL,
	[student_grade] [char](2) NOT NULL,
	[SchoolID] [int] NOT NULL,
 CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
))
GO

ALTER TABLE [dbo].[tblStudent]  WITH CHECK ADD  CONSTRAINT [FK_tblStudent_tblSchool] FOREIGN KEY([SchoolID])
REFERENCES [dbo].[tblSchool] ([School_ID])
GO
ALTER TABLE [dbo].[tblStudent] CHECK CONSTRAINT [FK_tblStudent_tblSchool]
GO

Diagrama E-R de tblSchool e tblStudent:

Inserir dados fictícios na tabela:
INSERT INTO tblschool
            (school_name,
             city)
VALUES     ('Nalanda School',
            'Mehsana'),
            ('Sarvajanik School',
             'Mehsana')
go
INSERT INTO tblstudent
            (student_name,
             student_code,
             student_grade,
             schoolid)
VALUES      ('Nisarg Upadhyay',
             'ST001',
             'A ',
             1),
            ('Dixit Upadhyay',
             'ST002',
             'A ',
             1),
            ('Bharti Upadhyay',
             'ST003',
             'C',
             2),
            ('Nimesh Patel',
             'ST004',
             'C',
             2),
            ('Raghav Dave',
             'ST005',
             'A',
             1)
go  

Crie um procedimento armazenado:
USE studentdb
go
CREATE PROCEDURE Sp_getstudent
AS
  BEGIN
      SELECT id,
             student_code,
             student_name,
             student_grade,
             school_name,
             city
      FROM   tblstudent a
             INNER JOIN tblschool b
                     ON a.schoolid = b.school_id
  END

Criar uma visualização:
use StudentDB
go
create view vwStudents
as
select student_code [Student Code],
student_name [Student Name],
student_grade [Student Grade],
School_Name [School Name],
City [City]
from tblStudent a inner join tblSchool b on  a.SchoolID=b.School_ID

Renomear um nome de tabela usando o comando sp_rename


Podemos usar o sp_rename procedimento armazenado para renomear qualquer objeto do banco de dados SQL Server (não confundir com alter table sql server operator que altera dados em tabelas). A sintaxe é a seguinte:
Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Schema_name.old_name é o nome da tabela que você deseja alterar.
  2. Schema_name.new_name é o novo nome.

Agora, vamos renomear o tblStudent tabela para tbl_Students .
Use StudentDB
go
Exec sp_rename 'tblStudent','tbl_Students'
Go

A saída é:
Caution: Changing any part of an object name could break scripts and stored procedures.

A mensagem indica que o nome da tabela foi alterado com sucesso.

Agora vamos ver como podemos alterar o nome da tabela usando o SQL Server Management studio.

Como alterar o nome da tabela no SQL Server Management Studio (SSMS)


Para renomear uma tabela, abra o SQL Server Management Studio> Conectar à instância do SQL Server> Expandir banco de dados> Expandir tabelas> Clique com o botão direito do mouse em tblSchool> Renomear . Ou, basta clicar em tblSchool.

Especifique o novo nome e pressione Enter .

Depois que o nome for alterado, você poderá executar a seguinte consulta para verificar:

Como você pode ver, o nome da tabela foi alterado. Observe também que a data de modificação da tabela foi atualizada, e a nova data é o carimbo de data/hora quando a tabela é modificada .

Atenção antes de alterar o nome da tabela no MSSQL


Após alterar os nomes das tabelas de tblStudent e tblSchool , vamos executar o procedimento armazenado chamado sp_getstudent :
Use StudentDB
Go
Exec sp_getstudent
Go

Saída
Msg 208, Level 16, State 1, Procedure sp_getstudent, Line 4 [Batch Start Line 15]
Invalid object name 'tblStudent'.

O erro indica que o objeto usado na exibição está ausente.

Agora, vamos executar a seguinte consulta para visualizar os dados do vwStudents :
Use StudentDB
Go
Select * from vwStudents
Go

Saída
Msg 208, Level 16, State 1, Procedure vwStudents, Line 8 [Batch Start Line 16]
Invalid object name 'tblStudent'.
Msg 4413, Level 16, State 1, Line 17
Could not use view or function 'vwStudents' because of binding errors.

O erro indica que a consulta usada para criar uma visualização não pode encontrar as tabelas chamadas tblStudent .

Para evitar tais erros após alterar o nome da tabela, devemos verificar a lista de objetos do banco de dados que são dependentes das tabelas.

A tabela de processo de renomeação da tabela deve ser a seguinte:
  1. Altere o nome da tabela.
  2. Altere o nome da tabela no procedimento armazenado, visualizações, consultas ad-hoc e outros objetos.

Para encontrar a lista de objetos dependentes na tabela específica, você pode executar o sp_depends procedimento armazenado. A sintaxe é:
exec sp_depends [obj_name]

Para encontrar a lista de objetos dependentes do tblStudent tabela, execute a seguinte consulta:
use studentDB
go
exec sp_depends [vwStudents]

Saída:

Observação: Certifique-se de executar este procedimento antes de renomear a tabela. Caso contrário, a consulta retornará NULL como saída.

Resumo


Este artigo explica como podemos usar o sp_rename procedimento armazenado e SQL Server Management Studio para alterar o nome da tabela. Além disso, definimos possíveis erros que podem ocorrer após renomear as tabelas e os cuidados que devem ser tomados após a alteração dos nomes das tabelas. Para lidar melhor com tabelas no servidor SQL, leia também como usar a instrução drop table no servidor sql.