Lorsque vous essayez de mettre en miroir une base de données à l'aide de la commande suivante
ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ
J'obtiens l'erreur suivante
Msg 1475, niveau 16, état 105,
base de données de ligne 1 "test0916aj8CJ" peut contenir des modifications enregistrées en bloc qui n'ont pas été sauvegardées. Effectuez une sauvegarde du journal sur la base de données principale ou la base de données principale. Restaurez ensuite cette sauvegarde soit sur la base de données miroir pour activer la mise en miroir de la base de données, soit sur chaque base de données secondaire pour vous permettre de la joindre au groupe de disponibilité.
Peut-on le faire sans sauvegarder la base de données? Ou dois-je sauvegarder puis supprimer la sauvegarde. C'est pour une base de données nouvellement créée, donc je n'ai pas besoin de la sauvegarde de toute façon à ce stade.
J'ai essayé ce qui suit ...
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = N’test-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO
mais la méthode ci-dessus n'a pas fonctionné non plus.
Merci
la source
Réponses:
Il est facile de reprocher l'erreur que vous avez
Voici l'erreur que vous obtiendrez:
Permet de comprendre quelle est cette erreur:
Vous avez configuré votre base de données en mode de récupération complète et pensez que la base de données est en effet en mode de récupération complète.
Ce qui précède n'est pas vrai. Après avoir créé la base de données, si vous ne faites pas de sauvegarde COMPLÈTE, même si la base de données est en mode de récupération COMPLÈTE, elle est en récupération pseudo-SIMPLE
Vous pouvez facilement le vérifier en utilisant dbcc dbinfo-> dbi_dbbackupLSNayant une valeur 0:0:0(0x00000000:00000000:0000)ou en utilisant le script de Paul Randal
Edit: Même la prise d'une première sauvegarde complète avec
COPY_ONLY
option n'établit pas non plus de chaîne de sauvegardedbcc dbinfo-> a dbi_dbbackupLSNtoujours une valeur de 0:0:0(0x00000000:00000000:0000). Cela signifie que la base de données est toujours en mode de récupération pseudo-simple.
Que devez-vous faire pour résoudre l'erreur ci-dessus?
Vous devez effectuer une sauvegarde complète + une sauvegarde du journal des transactions sur le serveur principal, puis le restaurer sur la base de données secondaire
with norecovery
, puis rejoindre la base de données dans le groupe AG ou la mise en miroir.En guise de note complémentaire et pour être complet, pour votre scénario
backup to NUL
, lisez cet article de blog de Gail Shaw.la source
Je ne comprends pas pourquoi vous utilisez
TO DISK = N’NUL’
:Si vous faites cela, la sauvegarde est enregistrée dans
NUL
(c'est-à-dire. = Nulle part / rien) et ne peut pas être utilisée car son fichier n'existe pas.Bien qu'il
NUL
puisse également être utilisé comme destination pour les sauvegardes de LOG, il ne doit pas être utilisé non plus, en particulier sur les serveurs Prod car les LOG seront perdus et la chaîne de sauvegarde sera rompue. (~ similaire à aSHRINKFILE
)Avant d'ajouter une base de données au groupe, vous devez la préparer. Lorsque vous souhaitez préparer une base de données secondaire, au moins 1 sauvegarde du journal des transactions doit être effectuée et restaurée. Le miroir l'utilise pour déterminer quelles transactions ont déjà été synchronisées sur la base de données secondaire et quelles transactions ne sont pas encore synchronisées avec la base de données principale.
Par conséquent, vous devez sauvegarder les journaux de transactions sur la base de données principale:
L'
COPY_ONLY
option doit être utilisée. Il s'assure que les journaux ne sont pas tronqués à la fin de la sauvegarde du journal.Cependant, vous ne pouvez pas restaurer une sauvegarde de journal seule, c'est-à-dire sans chaîne de sauvegarde (voir également la réponse de Kin). Cela signifie que la sauvegarde du journal des transactions doit être effectuée après une sauvegarde complète de la base de données (+ un différentiel facultatif si nécessaire).
Étant donné que l'
COPY_ONLY
option ne rompt pas la chaîne de sauvegarde, elle ne crée pas non plus de chaîne de sauvegarde. L'COPY_ONLY
option ne peut pas être utilisée pour la sauvegarde de la base de données.Sauvegardes dans l'ordre:
COPY_ONLY
optionCOPY_ONLY
optionEnsuite, la sauvegarde de la base de données doit être restaurée (+ différentielle) sur le secondaire.
Il doit être restauré avec l'
NORECOVERY
option car vous souhaitez également restaurer la ou les sauvegardes LOG une fois la sauvegarde complète restaurée.Enfin, vous restaurerez la sauvegarde LOG. Vous devez toujours utiliser l'
NORECOVERY
option, car le miroir continuera de restaurer les transactions une fois en place.NORECOVERY
optionNORECOVERY
optionNORECOVERY
optionSur l'exécution du serveur principal:
Sur le serveur secondaire, exécutez:
Vous pouvez ensuite ajouter la nouvelle base de données secondaire au groupe de disponibilité ...
la source