L'une des tâches les plus critiques de l'administrateur de base de données est la gestion des objets de la base de données. Par exemple, la logique de l'application change et les administrateurs de bases de données peuvent avoir besoin de modifier les noms des objets de la base de données. Cette tâche est cruciale car nous devons nous assurer que renommer ne cassera pas l'application.
On m'a récemment confié un projet où j'ai dû renommer quelques tables. Ici, je vais vous expliquer comment renommer une table SQL Server de plusieurs manières.
Nous pouvons renommer une table en utilisant :
- Studio de gestion SQL Server
- Le sp_rename procédure stockée.
De plus, je vais couvrir les erreurs potentielles qui peuvent survenir après avoir renommé les tables et les précautions nécessaires. Cet article est orienté démo, j'ai donc créé les objets suivants sur l'instance SQL Server :
- La base de données nommée StudentDB .
- Deux tables nommées tblSchool et tblStudent .
- Une clé étrangère entre tblSchool et tblStudent . L'tblSchool est une table parent, et tblStudent est une table enfant.
- Une procédure stockée nommée sp_getStudents .
- Une vue nommée vwStudents .
Les codes T-SQL appliqués pour créer les objets de base de données ci-dessus sont les suivants :
Créer une base de données :
Create database [StudentDB]
Go
Créez une table et des clés étrangères :
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
Diagramme E-R de tblSchool et tblStudent :
Insérez des données factices dans le tableau :
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
Créer une procédure stockée :
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
Créer une vue :
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
Renommer un nom de table à l'aide de la commande sp_rename
Nous pouvons utiliser le sp_rename procédure stockée pour renommer n'importe quel objet de la base de données SQL Server (ne pas confondre avec l'opérateur alter table sql server qui modifie les données dans les tables). La syntaxe est la suivante :
Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
- Schema_name.old_name est le nom de la table que vous souhaitez modifier.
- Schema_name.new_name est le nouveau nom.
Maintenant, renommons le tblStudent tableau à tbl_Students .
Use StudentDB
go
Exec sp_rename 'tblStudent','tbl_Students'
Go
La sortie est :
Caution: Changing any part of an object name could break scripts and stored procedures.
Le message indique que le nom de la table a été changé avec succès.
Voyons maintenant comment changer le nom de la table à l'aide de SQL Server Management Studio.
Comment modifier le nom de la table dans SQL Server Management Studio (SSMS)
Pour renommer une table, ouvrez SQL Server Management Studio> Se connecter à l'instance SQL Server> Développez la base de données> Développez les tables> Faites un clic droit sur tblSchool> Renommer . Ou cliquez simplement sur tblSchool.
Spécifiez le nouveau nom et appuyez sur Entrée .
Une fois le nom modifié, vous pouvez exécuter la requête suivante pour vérifier :
Comme vous pouvez le voir, le nom de la table a été modifié. Notez également que la date de modification de la table a été mise à jour et que la nouvelle date est l'horodatage lorsque la table est modifiée .
Éléments à prendre en compte avant de modifier le nom de la table dans MSSQL
Après avoir changé les noms de table de tblStudent et tblSchool , exécutons la procédure stockée nommée sp_getstudent :
Use StudentDB
Go
Exec sp_getstudent
Go
Sortie
Msg 208, Level 16, State 1, Procedure sp_getstudent, Line 4 [Batch Start Line 15]
Invalid object name 'tblStudent'.
L'erreur indique que l'objet utilisé dans la vue est manquant.
Maintenant, exécutons la requête suivante pour afficher les données de vwStudents :
Use StudentDB
Go
Select * from vwStudents
Go
Sortie
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'erreur indique que la requête utilisée pour créer une vue ne trouve pas les tables nommées tblStudent .
Pour éviter de telles erreurs après avoir changé le nom de la table, nous devons vérifier la liste des objets de la base de données qui dépendent des tables.
La table de processus de renommage de table doit être la suivante :
- Modifier le nom du tableau.
- Modifiez le nom de la table dans la procédure stockée, les vues, les requêtes ad hoc et d'autres objets.
Pour trouver la liste des objets dépendants sur la table spécifique, vous pouvez exécuter le sp_depends procédure stockée. La syntaxe est :
exec sp_depends [obj_name]
Pour trouver la liste des objets dépendant du tblStudent table, exécutez la requête suivante :
use studentDB
go
exec sp_depends [vwStudents]
Sortie :
Remarque : Assurez-vous d'avoir exécuté cette procédure avant de renommer la table. Sinon, la requête renverra NULL en sortie.
Résumé
Cet article explique comment nous pouvons utiliser le sp_rename procédure stockée et SQL Server Management Studio pour changer le nom de la table. De plus, nous avons défini les erreurs potentielles qui peuvent survenir après avoir renommé les tables et les précautions à prendre après avoir changé les noms des tables. Pour mieux gérer les tables dans le serveur SQL, lisez également comment utiliser l'instruction de suppression de table dans le serveur SQL.