Erreur : "Une erreur critique s'est produite lors du processus de mise à jour de l'infobase." Attention!!! Une erreur s'est produite lors de la mise à jour des données après la dernière restructuration

Nous avons déménagé à nouveau serveur. Il exécute SQL et 1C. Comparé aux anciens, c'était beaucoup plus frais. Et le test de Gilev l'a également confirmé : contre 10-15 sur les anciens serveurs, il en donnait 39. Ainsi, immédiatement après l'achat, nous avons transféré la base de données et avons commencé à travailler.

Mais à un moment donné, quelque chose s'est mal passé - les utilisateurs ont commencé à se plaindre travail lent. Nous avons effectué certains réglages pour le serveur et les services (lesquels font l'objet d'un article séparé) et avons décidé de redémarrer le serveur, heureusement la vitesse de redémarrage était de 2 minutes (sur d'autres serveurs, elle pouvait aller jusqu'à 10). Après cela, lors de la connexion à 1C, nous recevons le message suivant :

"Attention!!! Lors de la mise à jour des données, après dernière restructuration, Une erreur est survenue. Dois-je répéter la mise à jour ? "Pas vraiment"

Après avoir cliqué sur « Oui », le message suivant apparaît :

« Une opération de sauvegarde de configuration incomplète a été détectée. Vous devez terminer l'opération pour continuer."

La première chose que j'ai décidé de faire a été CHECKDB dans Managment Studio - après 2 heures d'attente (base de données de 500 Go) - tout allait bien.

J'ai trouvé sur Internet des informations selon lesquelles la même erreur se produit lors de la mise à jour dynamique.

Les solutions proposées en ligne n’ont pas aidé immédiatement, mais, combinées à d’autres actions, elles ont donné des résultats. Alors ce que j'ai fait :

Solution:

  1. Ce qui manquait aux solutions du réseau :

sp_configure 'autoriser les mises à jour', 1
reconfigurer avec remplacement
aller

2. Mettez la base de données en mode de récupération

modifier l'ensemble de base de données EMERGENCY, SINGLE_USER

3. Nous effectuons des tests de bases de données :

dbcc checkdb('nom_base de données', REPAIR_ALLOW_DATA_LOSS)

4. Quittez la base de données du mode de récupération :

modifier l'ensemble de base de données ONLINE, MULTI_USER

5. En principe, si vous êtes sûr que tout va bien avec la base elle-même, vous n'êtes pas obligé de suivre les points 2 à 4. Ensuite, nous exécutons deux requêtes dans le profileur SQL :

supprimer de la configuration où FileName = 'commit'
supprimer de la configuration où FileName = 'dbStruFinal'

Ces enregistrements sont responsables de la mise à jour dynamique – vous n’avez pas à avoir peur de les supprimer.

Dans les versions fonctionnelles des requêtes des bases de données :

sélectionnez * dans Config OÙ FileName = 'commit'

sélectionnez * dans Config OÙ FileName = 'dbStruFinal'

sera vide.

6. retournez les paramètres :

sp_configure 'autoriser les mises à jour', 0
aller

7. Après cela, nous avons réussi à lancer le configurateur et la base de données a commencé à fonctionner.

De plus, la base peut commencer à fonctionner après avoir retiré le premier drapeau.

bac à sable

autorité 18 septembre 2013 à 15h24

1C, restauration de la configuration base d'informations en utilisant MS SQL

À un moment donné, j'ai rencontré un problème : lors de la mise à jour de la configuration depuis le référentiel, un échec s'est produit et 1C s'est fermé.

Comme il s'est avéré plus tard, le stockage de configuration a été détruit et lors de la mise à jour de la configuration, la configuration de la base de données a également été supprimée du stockage. Une erreur similaire s’est produite auparavant lors de mises à jour dynamiques de la sécurité des informations.

Parce que ce problème s'est posé plus d'une fois et a décidé de partager une option de traitement.

Au prochain démarrage du configurateur, une erreur est apparue : « Attention !!! Une erreur s'est produite lors de la mise à jour des données après la dernière restructuration. Dois-je répéter la mise à jour ? Si la réponse est oui, nous recevons le message : « Une opération de sauvegarde de configuration incomplète a été détectée. Pour continuer à travailler, vous devez terminer l'opération », après quoi l'application se ferme.

Lors de l'analyse de ce problème, plusieurs solutions ont été trouvées, chaque solution fonctionnant dans des cas différents.

Option 1 (si vous disposez d'une sauvegarde SQL avec une copie avec une configuration identique) :

Une copie de la sécurité des informations est déployée et la requête suivante est exécutée :
UTILISER ALLER SUPPRIMER DE .. ALLER INSÉRER DANS .. ​​SELECT * FROM .. ALLER
Dans ce cas, la table dans laquelle la configuration de sécurité des informations est stockée est remplie. Il est conseillé de tester et de corriger la sécurité des informations après cette opération.

Option 2 (s'il n'y a pas de sauvegarde) :

Cette option a été considérée comme la goutte d’eau qui a fait déborder le vase. Parce que la configuration était en cours de développement et ils ont un peu oublié la sauvegarde, s'appuyant sur le stockage.
Dans la base de données, deux enregistrements sont supprimés de la table « Config » par la valeur de la colonne « FileName » - dbStruFinal et commit

La requête suivante est exécutée :
UTILISEZ ALLER SUPPRIMER DE . OÙ NomFichier = "dbStruFinal" GO DELETE FROM . OÙ NomFichier = "commit" ALLER
Curieusement, la base prend vie.

Mots clés : 1C Enterprise 8.2, SQL, restauration de configuration

Cet article ne fait pas l'objet de commentaires, son auteur n'étant pas encore membre à part entière de la communauté. Vous ne pourrez contacter l'auteur qu'après réception

Arrière-plan

Nous devions créer un nouveau registre d'informations « MessageTrackingLog ». Ajouté à la configuration, chargé les données. Puis est venu le travail d’optimisation. J'ai dû changer la structure du registre. Mais ce n'était pas là !

Tout est clair ici. Les enregistrements sont devenus non uniques, vous devez les supprimer !

Le moyen le plus simple est :

NewRecord = InformationRegisters.MessageTrackingLog.CreateRecordSet(); NewRecord.Write();

En utilisant cette méthode, nous effacerons le registre en 1C très rapidement (mais ce sera aussi notre erreur).

Erreur

Il semblerait que le registre soit vide et que vous puissiez mettre à jour 1C. Je ne veux pas vous surprendre, mais il y aura encore une erreur :


Que représente l'erreur :

Lors du processus de mise à jour de la base d'informations, un erreur critique
à cause de:
Essayer d'insérer une valeur non unique dans un index unique :
Microsoft serveur SQL Native Client 11.0 : l'instruction CREATE UNIQUE INDEX s'est terminée car une clé en double a été trouvée pour le nom d'objet "dbo._InfoRgChngR34546NG" et le nom d'index "_InfoR34546_ByNodeMsg_RNTSRRRRRRNG". La valeur de clé en double est (0x00000011,d7, , 27 septembre 4015 22h22, 768404,00,00,00,00,00,00).
HRESULT=80040E2F, SQLSrvr : SQLSTATE=23000, état=1, gravité=10, natif=1505, ligne=1

Explication

Comprenons la structure de SQL. Nous avons un registre "MessageTrackingLog", en SQL il se trouve dans le tableau " _InfoR34546". Vous pouvez le vérifier à l'aide d'un traitement spécial ou de la méthode « poke » (nous n'avons pas à le faire car le nom de la table est déjà indiqué dans le texte d'erreur).

Maintenant, je vais expliquer ce qui s'est passé. Lorsque nous avons chargé les données dans le registre, en SQL, elles se sont retrouvées dans la table" _InfoR34546". Lorsque nous avons effacé le tableau avec le code en 1C, ces données ont été supprimées du tableau" _InfoR34546", mais ils ont été copiés dans la table" _InfoRgChngR34546". C'est devenu le problème.

Solution

Pour résoudre ce problème, nous devons effacer la table SQL "_InfoRgChngR34546".

Je vais vous le dire en utilisant l'exemple de "Microsoft SQL Server Management Studio". Allons à " Management Studio". Recherchez notre base de données, ouvrez l'onglet tables, cliquez sur n'importe lequel et cliquez sur le bouton "Nouvelle requête": Maintenant, nous tapons la requête

Tronquer la table "_InfoRgChngR34546"

Vous aurez peut-être une autre table ! N'oubliez pas!

Et appuyez sur Exécuter ou appuyez sur "F5". Voici ce que devrait être le résultat :

Ça y est, vous pouvez désormais mettre à jour 1C en toute sécurité, et il n'y aura aucune erreur !

Partager