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

Come rinominare un database di SQL Server utilizzando T-SQL

Anche se puoi sicuramente rinominare un database SQL Server nella GUI di SSMS facendo clic con il pulsante destro del mouse sul nome del database e selezionando Rinomina , a volte potresti preferire (o aver bisogno) di farlo utilizzando Transact-SQL.

Il modo più semplice per rinominare un database usando T-SQL è questo:

-- Change to the master database
USE master;

-- Change the database name
ALTER DATABASE Films  
Modify Name = Movies; 
GO

L'unico problema con questo script di base è che non cambia il nome dei file di dati e dei file di registro. Nella maggior parte dei casi probabilmente vorrai cambiare i nomi di questi file in modo che corrispondano al nuovo nome. In tal caso puoi prendere il seguente script e sostituire il nome del database con il tuo (così come i suoi nomi di file e percorsi):

-- Change to the master database
USE master;

-- Change the database name
ALTER DATABASE Films  
Modify Name = Movies; 
GO

-- Change the logical name of the data file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Films', 
  NEWNAME = 'Movies' 
  );

-- Change the logical name of the log file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Films_log', 
  NEWNAME = 'Movies_log' 
  );

-- Change the physical name of the data file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Movies', 
  FILENAME = 'D:\mssql\data\Movies.mdf' 
  );

-- Change the physical name of the log file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Movies_log', 
  FILENAME = 'D:\mssql\data\Movies_log.ldf' 
  );  

-- Check it (View the list of database files and their locations)
USE master;
SELECT 
  name 'Logical Name', 
  physical_name 'File Location',
  size 'File Size'
FROM sys.master_files;

Questo script rinomina il database, rinomina i nomi logici del file di dati e del file di registro, quindi rinomina il nome del file fisico effettivo di tali file. Si conclude con la selezione di un elenco di tutti i file di database e le relative posizioni. Ciò ti consente di verificare che i tuoi file abbiano effettivamente il nome corretto.

Utilizzo di percorsi file Linux/Mac

L'esempio precedente utilizza la sintassi del percorso file di Windows (barre inverse e una lettera di unità). Se usi Linux o Mac, la sintassi del percorso del file sarà più simile all'esempio seguente (solo i percorsi dei file sono cambiati, tutto il resto rimane lo stesso).

-- Change to the master database
USE master;

-- Change the database name
ALTER DATABASE Films  
Modify Name = Movies; 
GO

-- Change the logical name of the data file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Films', 
  NEWNAME = 'Movies' 
  );

-- Change the logical name of the log file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Films_log', 
  NEWNAME = 'Movies_log' 
  );

-- Change the physical name of the data file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Movies', 
  FILENAME = '/var/opt/mssql/data/Movies.mdf' 
  );

-- Change the physical name of the log file
ALTER DATABASE Movies
MODIFY FILE ( 
  NAME = 'Movies_log', 
  FILENAME = '/var/opt/mssql/data/Movies_log.ldf' 
  );  

-- Check it (View the list of database files and their locations)
USE master;
SELECT 
  name 'Logical Name', 
  physical_name 'File Location',
  size 'File Size'
FROM sys.master_files;

Assicurati di eseguire il backup del database master dopo aver rinominato i tuoi database (ecco come eseguire il backup di un database con T-SQL). Potresti anche voler controllare/aggiornare tutti gli script che hai per assicurarti che facciano riferimento al nuovo nome del database.