Spostamento dei database di sistema
Data aggiornamento: 14 aprile 2006
Articolo Technet(tm) per spostare correttamente i files di sistema di Sql Server 2005
http://technet.microsoft.com/it-it/library/ms345408.aspx
In questo argomento viene descritta la procedura per lo spostamento dei database di sistema in SQL Server 2005. Lo spostamento dei database di sistema può risultare utile nelle situazioni seguenti:
Le procedure seguenti consentono di spostare i file di database all'interno della stessa istanza di SQL Server. Per spostare un database in un'altra istanza di SQL Server o in un altro server, utilizzare le operazioni di backup e ripristino o di collegamento e scollegamento.
Le procedure descritte in questo argomento richiedono il nome logico dei file di database. Per ottenere il nome, eseguire una query nella colonna name della vista del catalogo sys.master_files.
Per spostare un file di dati o di log del database di sistema nell'ambito di un'operazione di rilocazione pianificata o di manutenzione pianificata, attenersi alla procedura seguente. Questa procedura è valida per tutti i database di sistema ad eccezione dei database master e Resource.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path/os_file_name' )
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
Se il database msdb è stato spostato e l'istanza di SQL Server è configurata per Posta elettronica database, completare i passaggi aggiuntivi riportati di seguito.
SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';
Se è necessario spostare un file a causa di un errore hardware, eseguire la procedura seguente per rilocare il file in una nuova posizione. Questa procedura è valida per tutti i database di sistema ad eccezione dei database master e Resource.
NET START MSSQLSERVER /f /T3608
NET START MSSQL$instancename /f /T3608
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Il database Resource dipende dalla posizione del database master. Se si sposta il database master, è necessario spostare anche il database Resource nella stessa posizione in cui si trova il file di dati del database master. Non inserire il database Resource in cartelle del file system NTFS compresse o crittografate, dato che ciò comporterebbe una riduzione delle prestazioni e impedirebbe gli aggiornamenti.
Per spostare i database master e Resource, attenersi alla procedura seguente.
-dC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf
-dE:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lE:\SQLData\mastlog.ldf
ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=data, FILENAME= 'new_path_of_master\mssqlsystemresource.mdf'); GO ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=log, FILENAME= 'new_path_of_master\mssqlsystemresource.ldf'); GO
ALTER DATABASE mssqlsystemresource SET READ_ONLY;
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master'); GO
Nell'esempio seguente i file dei dati e di log del database tempdb vengono spostati in una nuova posizione nell'ambito di una rilocazione pianificata.
SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GO
USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf'); GO
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');