Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come rinominare un nome di tabella in SQL Server

Uno dei compiti più critici dell'amministratore del database è la gestione degli oggetti del database. Ad esempio, la logica dell'applicazione cambia e i DBA potrebbero dover modificare i nomi degli oggetti del database. Questa attività è fondamentale perché dobbiamo assicurarci che la ridenominazione non interrompa l'applicazione.

Di recente mi è stato assegnato un progetto in cui ho dovuto rinominare un paio di tabelle. Qui spiegherò come rinominare una tabella di SQL Server in diversi modi.

Possiamo rinominare una tabella usando:

  1. Studio di gestione di SQL Server.
  2. Il sp_rename procedura memorizzata.

Inoltre, tratterò i potenziali errori che possono verificarsi dopo aver rinominato le tabelle e le precauzioni necessarie. Questo articolo è orientato alla demo, quindi ho creato i seguenti oggetti nell'istanza di SQL Server:

  1. Il database denominato StudentDB .
  2. Due tabelle denominate tblSchool e tblStudent .
  3. Una chiave esterna tra tblSchool e tblStudent . La tblSchool è una tabella padre e tblStudent è una tabella figlio.
  4. Una procedura memorizzata denominata sp_getStudents .
  5. Una vista denominata vwStudents .

I codici T-SQL applicati per creare gli oggetti database di cui sopra sono i seguenti:

Crea database:

Create database [StudentDB]
Go

Crea una tabella e chiavi esterne:

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

Diagramma E-R di tblSchool e tblStudent:

Inserisci dati fittizi nella tabella:

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  

Crea una procedura memorizzata:

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

Crea una vista:

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

Rinominare un nome di tabella utilizzando il comando sp_rename

Possiamo usare sp_rename stored procedure per rinominare qualsiasi oggetto del database di SQL Server (da non confondere con alter table sql server operator che modifica i dati nelle tabelle). La sintassi è la seguente:

Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Schema_name.old_name è il nome della tabella che vuoi cambiare.
  2. Nome_schema.nome_nuovo è il nuovo nome.

Ora rinominiamo tblStudent tabella a tbl_Students .

Use StudentDB
go
Exec sp_rename 'tblStudent','tbl_Students'
Go

L'output è:

Caution: Changing any part of an object name could break scripts and stored procedures.

Il messaggio indica che il nome della tabella è stato modificato correttamente.

Ora vediamo come possiamo cambiare il nome della tabella utilizzando SQL Server Management Studio.

Come modificare il nome della tabella in SQL Server Management Studio (SSMS)

Per rinominare una tabella, apri SQL Server Management Studio> Connetti all'istanza di SQL Server> Espandi database> Espandi tabelle> Fai clic con il pulsante destro del mouse su tblSchool> Rinomina . Oppure, fai semplicemente clic su tblSchool.

Specifica il nuovo nome e premi Invio .

Una volta modificato il nome, puoi eseguire la seguente query per verificare:

Come puoi vedere, il nome della tabella è stato cambiato. Nota anche che la data di modifica della tabella è stata aggiornata e la nuova data è il timestamp quando la tabella viene modificata .

Aspetti da considerare prima di modificare il nome della tabella in MSSQL

Dopo aver cambiato i nomi delle tabelle di tblStudent e tblSchool , eseguiamo la procedura memorizzata denominata sp_getstudent :

Use StudentDB
Go
Exec sp_getstudent
Go

Uscita

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

L'errore indica che l'oggetto utilizzato nella vista è mancante.

Ora eseguiamo la seguente query per visualizzare i dati da vwStudents :

Use StudentDB
Go
Select * from vwStudents
Go

Uscita

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.

L'errore indica che la query utilizzata per creare una vista non riesce a trovare le tabelle denominate tblStudent .

Per evitare tali errori dopo aver cambiato il nome della tabella, dobbiamo controllare l'elenco degli oggetti del database che dipendono dalle tabelle.

La tabella del processo di ridenominazione della tabella dovrebbe essere la seguente:

  1. Cambia il nome della tabella.
  2. Cambia il nome della tabella nella stored procedure, nelle viste, nelle query ad hoc e in altri oggetti.

Per trovare l'elenco degli oggetti dipendenti nella tabella specifica, puoi eseguire sp_depends procedura memorizzata. La sintassi è:

exec sp_depends [obj_name]

Per trovare l'elenco degli oggetti dipendenti da tblStudent tabella, eseguire la seguente query:

use studentDB
go
exec sp_depends [vwStudents]

Uscita:

Nota: Assicurati di eseguire questa procedura prima di rinominare la tabella. In caso contrario, la query restituirà NULL come output.

Riepilogo

Questo articolo spiega come possiamo usare sp_rename stored procedure e SQL Server Management Studio per cambiare il nome della tabella. Inoltre, abbiamo definito i potenziali errori che possono verificarsi dopo aver rinominato le tabelle e le precauzioni da adottare dopo aver modificato i nomi delle tabelle. Per gestire meglio le tabelle nel server SQL, leggi anche come utilizzare l'istruzione drop table in sql server.