Donc OK l'espace libre affiché réellement disponible (ou du moins suffisamment à la hauteur des tests).
C'est une bonne nouvelle en soit et elle nous ferme une explication potentielle.
Du coté physique il ne reste plus que d’arrêter le service pour pouvoir copier les 2 fichiers de la base distribution.
Si ça se passe bien, les attacher en tant qu'une nouvelle base de donnée
Si ça se passe bien, examiner la structure interne par les commandes DBCC
Ce qui me gène dans votre cas, c'est que l'erreur de CHECKPOINT persiste après un redémarrage du service et qu'on n'ait pas d'autres erreurs pour expliquer le blocage.
En tous les cas, remonter le distributeur avec une version antérieure à la dernière synchro du dernier abonné peut générer son lot d'erreur.
Démonter la réplication et la refaire va être relativement couteux (attention au trafic et aux verrous lors des activations, faire ça en dehors de l'activité importante)
Mais c'est une assurance de fonctionnement.
Le problème, une fois que l'épisode sera passé, qu'allez vous conseiller pour éviter que le problème ne se reproduise ?
La détermination du pourquoi est importante.
Le savoir est une nourriture qui exige des efforts.
je ne comprends pas ce que tu veux dire par..
C'est une base system, je ne peux pas en creer une nouvelle.Si ça se passe bien, les attacher en tant qu'une nouvelle base de donnée
T'as eu un message d'erreur en ce sens ?
Je viens de faire le test avec master, pas de problèmes :
Le savoir est une nourriture qui exige des efforts.
Voici que que je tente pour utiliser des copie de fichier MDF et LDF (avec redemarrage de service bien sur) :
Resultat:USE [master];
GO
ALTER DATABASE distribution
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE distribution SET OFFLINE
GO
USE [master];
GO
ALTER DATABASE distribution
MODIFY FILE (Name='distribution_log', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\distribution_copy.LDF')
GO
USE [master];
GO
ALTER DATABASE distribution
MODIFY FILE (Name='distribution', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\distribution_copy.MDF')
GO
ALTER DATABASE distribution SET ONLINE
Go
ALTER DATABASE distribution SET MULTI_USER
GO
SQL ne prends en compte cette modification pour la même raison..
The transaction log for database 'distribution' is full due to 'CHECKPOINT'
Bon,
Il me semblait avoir lu que TOUTES les opérations ALTER DATABASE plantaient lors des tests que tu avais fait.
Vrai /faux ?
Ensuite, par rapport à ton script quelle est l'instruction qui génère l'erreur ???
le 1er ALTER DATABASE , le dernier ?
Dans ton script, n'apparait pas la copie des fichiers de la base - c'est normal de ne pas le faire depuis SQL, mais on aurait bien aimé avoir un commentaire le précisant.
Le savoir est une nourriture qui exige des efforts.
VRAIIl me semblait avoir lu que TOUTES les opérations ALTER DATABASE plantaient lors des tests que tu avais fait.
Vrai /faux ?
La Première instruction.Ensuite, par rapport à ton script quelle est l'instruction qui génère l'erreur ???
le 1er ALTER DATABASE , le dernier ?
Effectivement, la copie des fichier a été faite depuis WINDOWS. J n'ai pas jugé utile de le préciser ici.
Maintenant la question à 10 balles.. : Comment démonter cette distribution proprement ?? ou dois je créer une nouvelle instance en stoppant les services de l'actuelle et l'abandonnée ??
Si ça plante au premier ALTER DATABASE les fichiers sont restés ouverts par le service SQL server.La Première instruction
Comment peux-tu faire une copie des fichiers sous Windows lorsqu'ils sont ouverts ?Effectivement, la copie des fichier a été faite depuis WINDOWS.
Le savoir est une nourriture qui exige des efforts.
Si on ne peux pas fermer uniquement la base distribution (pour cause d'erreur SQL), alors l'étape au dessus consiste à arrêter le service lui même.
Une fois le service arrêté, alors, la copie des fichiers sera plus simple.
Le savoir est une nourriture qui exige des efforts.
pourquoi les fichiers copiés n'ont pas la même date ?
En plus le fichier master.ldf est plus ancien que distribution_copy.ldf
Le savoir est une nourriture qui exige des efforts.
Pour se séparer d'une base récalcitrante rien de tel qu'un tour de passe passe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 /* pour se séparer de la base distribution en imaginant qu'il n'existe pas de base au nom de "base_vide" */ USE MASTER; CREATE DATABASE db_vide; BACKUP DATABASE db_vide TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\db_vide.bak' ; DROP DATABASE db_vide; RESTORE DATABASE distribution FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\db_vide.bak' WITH FILE = 1 ,MOVE N'db_vide' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\distribution.mdf' ,MOVE N'db_vide_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\distribution.ldf' ,NOUNLOAD ,REPLACE ,STATS = 5; DROP DATABASE distribution;
Le savoir est une nourriture qui exige des efforts.
J'avais pas pensé à faire ca!!!
Ok, base DISTRIBUTION supprimée.. il me reste à faire le ménage du reste (publication et autre) puis remettre en place le tout avec précaution..
Merci pour le coup de main!
Je tiens informé de l'évolution..
TADAA....
Ma réplication fonctionne a nouveau..
MERCI Michel pour le tour de passe passe...
Faire que tout fonctionne est une chose.
Faire que le problème n'apparaisse plus en est une autre.
J'insiste sur le fait qu'il faille chercher avec vigueur les causes du problème.
En tous les cas :
* passer la base en mode full
* faire une plannification du backup des journaux plus fréquente que les points de réplication vers les abonnés
permettra de mieux s'armer contre ce problème.
Je reste convaincu que, vu la faible occurrence de ce problème (en fonction du nombre de réponses sur la toile), l'aspect physique (et associé) est doit être sérieusement investigué.
Pour la suite, que j'ai eu le nez fin ou pas, tiens nous informé, stp, des avancées dans la compréhension de la panne.
Le savoir est une nourriture qui exige des efforts.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager