Sintomi
Quando si ripristina un database da un backup utilizzando l'opzione with Replace in Microsoft SQL Server 2012, i nomi di file fisici del database ripristinato proveniente dal database di backup potrebbero sovrascrivere i nomi di file fisici del database esistente. Consideriamo ad esempio lo scenario seguente:
-
Sono presenti due istanze di SQL Server, InstanceA e InstanceB.
-
Si dispone di un database con lo stesso nome, SQLDB, in ogni istanza di SQL Server.
-
In InstanceA il nome del file di dati del database SQLDB è DB1_InstanceA. mdf e il nome del file di log è DB1_InstanceA. ldf.
-
In InstanceB il nome del file di dati del database SQLDB è DB1_InstanceB. mdf e il nome del file di log è DB1_InstanceB. ldf.
-
Si prova a ripristinare una copia di backup del database SQLDB da InstanceA sul database di SQLDB da InstanceB usando l'opzione con Sostituisci del comando Ripristina .
In questo scenario, i nomi di file fisici in SQLDB in InstanceB vengono modificati in DB1_InstanceA. mdf e DB1_InstanceA. ldf.
Causa
Questo comportamento è in base alla progettazione in SQL Server 2012.
Soluzione alternativa
Per risolvere il problema, non usare l'opzione con Sostituisci del comando Ripristina . USA invece l'opzione with Move .Nota L'opzione with Move consente di modificare il nome del file fisico.
Ulteriori informazioni
L'opzione with Move è necessaria solo la prima volta che si usa il comando Ripristina . Quando si prova a ripristinare un database dal backup, SQL Server confronta i valori della forcella di ripristino del database. Quindi, il set di backup esegue le operazioni seguenti, a seconda che questi valori corrispondano:
-
Se c'è una corrispondenza, il set di backup continuerà a usare i nomi file del database di destinazione.
-
Se i valori sono diversi, il set di backup sostituisce i nomi di file fisici del database di destinazione usando i nomi del set di backup.
Quando si usa l'opzione with Move insieme al comando Restore , vengono eseguite le operazioni seguenti:
-
Sul server di destinazione viene creato un nuovo fork di ripristino.
-
Nella successiva operazione di ripristino gli ID fork di recupero del set di backup vengono abbinati agli ID del server di destinazione.
-
Un comando di ripristino che viene usato insieme all'opzione con Sostituisci mantiene i nomi fisici nel server di destinazione.
Per altre informazioni sul comando Ripristina , vedere Restore (Transact-SQL)