Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zmienić nazwę tabeli w SQL Server

Jednym z najważniejszych obowiązków administratora bazy danych jest zarządzanie obiektami bazy danych. Na przykład zmienia się logika aplikacji, a administratorzy baz danych mogą potrzebować zmienić nazwy obiektów bazy danych. To zadanie jest kluczowe, ponieważ musimy upewnić się, że zmiana nazwy nie zepsuje aplikacji.

Niedawno przydzielono mi projekt, w którym musiałem zmienić nazwy kilku tabel. Tutaj wyjaśnię, jak zmienić nazwę tabeli SQL Server na kilka sposobów.

Możemy zmienić nazwę tabeli za pomocą:

  1. Studio zarządzania SQL Server.
  2. sp_rename procedura składowana.

Zamierzam również omówić potencjalne błędy, które mogą wystąpić po zmianie nazw tabel i niezbędne środki ostrożności. Ten artykuł jest zorientowany na wersję demonstracyjną, więc stworzyłem następujące obiekty na instancji SQL Server:

  1. Baza danych o nazwie StudentDB .
  2. Dwie tabele o nazwie tblSchool i tblStudent .
  3. Klucz obcy między tblSchool i tblStudent . tblSchool jest tabelą nadrzędną, a tblStudent to stół podrzędny.
  4. Procedura składowana o nazwie sp_getStudents .
  5. Widok o nazwie vwStudents .

Kody T-SQL stosowane do tworzenia powyższych obiektów bazy danych są następujące:

Utwórz bazę danych:

Create database [StudentDB]
Go

Utwórz tabelę i klucze obce:

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

Schemat E-R tblSchool i tblStudent:

Wstaw fikcyjne dane do tabeli:

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  

Utwórz procedurę składowaną:

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

Utwórz widok:

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

Zmień nazwę tabeli za pomocą polecenia sp_rename

Możemy użyć sp_rename procedura składowana do zmiany nazwy dowolnego obiektu bazy danych SQL Server (nie mylić ze zmianą operatora serwera sql table, który zmienia dane w tabelach). Składnia jest następująca:

Exec sp_rename ‘schema_name.old_name’,’schema_name.new_name’
  1. Schema_name.old_name to nazwa tabeli, którą chcesz zmienić.
  2. Schema_name.new_name to nowa nazwa.

Teraz zmieńmy nazwę tblStudent stół do tbl_Students .

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

Dane wyjściowe to:

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

Komunikat wskazuje, że nazwa tabeli została pomyślnie zmieniona.

Zobaczmy teraz, jak możemy zmienić nazwę tabeli za pomocą SQL Server Management studio.

Jak zmienić nazwę tabeli w SQL Server Management Studio (SSMS)

Aby zmienić nazwę tabeli, otwórz SQL Server Management Studio> Połącz z instancją SQL Server> Rozwiń bazę danych> Rozwiń tabele> kliknij prawym przyciskiem myszy tblSchool> Zmień nazwę . Lub po prostu kliknij tblSchool.

Podaj nową nazwę i naciśnij Enter .

Po zmianie nazwy możesz uruchomić następujące zapytanie w celu weryfikacji:

Jak widać nazwa tabeli została zmieniona. Zauważ również, że data modyfikacji tabeli została zaktualizowana, a nowa data to sygnatura czasowa modyfikacji tabeli .

Rzeczy, o których należy zadbać przed zmianą nazwy tabeli w MSSQL

Po zmianie nazw tabel tblStudent i tblSchool , uruchommy procedurę składowaną o nazwie sp_getstudent :

Use StudentDB
Go
Exec sp_getstudent
Go

Wyjście

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

Błąd wskazuje, że brakuje obiektu użytego w widoku.

Teraz uruchommy następujące zapytanie, aby wyświetlić dane z vwStudents :

Use StudentDB
Go
Select * from vwStudents
Go

Wyjście

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.

Błąd wskazuje, że zapytanie użyte do utworzenia widoku nie może znaleźć tabel o nazwie tblStudent .

Aby uniknąć takich błędów po zmianie nazwy tabeli, musimy sprawdzić listę obiektów bazy danych, które są zależne od tabel.

Tabela procesu zmiany nazwy tabeli powinna wyglądać następująco:

  1. Zmień nazwę tabeli.
  2. Zmień nazwę tabeli w procedurze składowanej, widokach, zapytaniach Ad-Hoc i innych obiektach.

Aby znaleźć listę obiektów zależnych w określonej tabeli, możesz uruchomić sp_depends procedura składowana. Składnia to:

exec sp_depends [obj_name]

Aby znaleźć listę obiektów zależnych od tabeli Student tabeli, uruchom następujące zapytanie:

use studentDB
go
exec sp_depends [vwStudents]

Wyjście:

Uwaga: Upewnij się, że uruchomiłeś tę procedurę przed zmianą nazwy tabeli. W przeciwnym razie zapytanie zwróci NULL jako wynik.

Podsumowanie

W tym artykule wyjaśniono, jak możemy użyć sp_rename procedura składowana i SQL Server Management Studio zmienić nazwę tabeli. Ponadto zdefiniowaliśmy potencjalne błędy, które mogą wystąpić po zmianie nazw tabel oraz środki ostrożności, jakie należy podjąć po zmianie nazw tabel. Aby lepiej radzić sobie z tabelami na serwerze SQL, przeczytaj również, jak używać instrukcji drop table w serwerze sql.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepszy magazyn danych dla miliardów wierszy

  2. OR Operator Zwarcie w SQL Server

  3. Usługa SSMS jest teraz dostępna w usłudze Azure Data Studio

  4. SQL Server - połącz wiersze w listę oddzieloną przecinkami

  5. Jak znaleźć domyślny język użytkownika w SQL Server (T-SQL)