Symptômes
Lorsque vous restaurez une base de données à partir d’une sauvegarde en utilisant l’option with Replace dans Microsoft SQL Server 2012, les noms de fichiers physiques de la base de données restaurée provenant de la base de données de sauvegarde risquent d’écraser les noms de fichiers physiques de la base de données existante. Par exemple, considérez le scénario suivant :
-
Vous avez deux instances de SQL Server, Instancesa et InstanceB.
-
Vous avez une base de données portant le même nom, SQLDB, sur chaque instance de SQL Server.
-
Dans le cas d’instances, le nom du fichier de données de la base de données SQLDB est DB1_InstanceA. mdf et le nom du fichier journal est DB1_InstanceA. ldf.
-
Dans InstanceB, le nom du fichier de données de la base de données SQLDB est DB1_InstanceB. mdf et le nom du fichier journal est DB1_InstanceB. ldf.
-
Vous essayez de restaurer une sauvegarde de la base de données SQLDB à partir d’instances sur la base de données SQLDB à partir de InstanceB à l’aide de l’option with Replace de la commande restaurer .
Dans ce scénario, les noms de fichiers physiques sur SQLDB sur InstanceB sont remplacés par DB1_InstanceA. mdf et DB1_InstanceA. ldf.
Cause
Ce comportement est par la conception dans SQL Server 2012.
Solution de contournement
Pour contourner ce problème, n’utilisez pas l’option with Replace de la commande restaurer . À la place, utilisez l’option avec déplacement .Remarque L’option with Move fournit une option permettant de modifier le nom de fichier physique.
Informations supplémentaires
L’option with Move est nécessaire uniquement lors de la première utilisation de la commande de restauration . Lorsque vous tentez de restaurer une base de données à partir de la sauvegarde, SQL Server compare les valeurs de bifurcation de récupération de la base de données. Ensuite, le jeu de sauvegarde effectue les actions suivantes, selon que ces valeurs correspondent :
-
S’il existe une correspondance, le jeu de sauvegarde continue d’utiliser le nom de fichier de la base de données cible.
-
Si les valeurs sont différentes, le jeu de sauvegarde remplace les noms de fichiers physiques de la base de données cible en utilisant les noms du jeu de sauvegarde.
Lorsque vous utilisez l’option with Move conjointement avec la commande restaurer , les opérations suivantes sont effectuées :
-
Une nouvelle branche de récupération est créée sur le serveur cible.
-
Lors de l’opération de restauration suivante, les ID de bifurcation de récupération du jeu de sauvegarde sont mis en correspondance avec les ID du serveur cible.
-
Une commande de restauration utilisée conjointement avec l’option with Replace conserve les noms physiques sur le serveur cible.
Pour plus d’informations sur la commande restaurer , voir restaurer (Transact-SQL)