Failed to execute SQL scripts for Database

KB ID: 1953
Product: Veeam Backup & Replication
Version: 8.x
Published: 2014-11-13
Last Modified: 2020-08-13
Languages: EN
Get weekly article updates
En vous inscrivant, vous acceptez que vos informations personnelles soient gérées conformément aux termes de la politique de confidentialité de Veeam.

Cheers for trusting us with the spot in your mailbox!

Now you’re less likely to miss what’s been brewing in our knowledge base with this weekly digest

error icon

Oups! Une erreur s’est produite.

Veuillez réessayer ultérieurement.

Challenge

La mise à jour de Veeam Backup & Replication 7 vers la V8 peut échouer avec "Failed to execute SQL scripts for Database <Databasename>"

Cause

Ce problème est causé après les mediapools qui ne sont liés à aucune librairie mais qui contiennent encore des cassettes entières. Cela peut survenir quand la librairie ou le lecteur en "standalone" a été remplacé, et que les tape mediapools et les cassettes ont été migrés manuellement sur la nouvelle librairie / lecteur en "standalone" sans avoir nettoyé les anciennes entrées.

Les logs affichent une erreur comme ci-dessous :  
***Veeam*** SRV: [timestamp]:<00000001> [VEEAM|ERROR] ExecuteNonQuery failed for Database 'VeeamBackup'. (Microsoft.SqlServer.Management.Smo.FailedOperationException)
...
***Veeam*** SRV: [timestamp]:<00000001> [VEEAM|ERROR] Cannot insert the value NULL into column 'media_pool_id', table 'VeeamBackup.dbo.Tape.tape_mediums'; column does not allow nulls. UPDATE fails.

Solution

Exécutez le script SQL suivant pour finir le nettoyage, après cela vous pouvez procéder avec la mise à jour habituelle :

USE VeeamBackup

DECLARE @id uniqueidentifier

DECLARE c CURSOR FOR
    SELECT
        t.id
    FROM
        [Tape.tape_mediums] t
        INNER JOIN [Tape.media_pools] m ON t.media_pool_id = m.id
    WHERE
        NOT EXISTS(SELECT * FROM [Tape.libraries] l WHERE l.id = m.library_id)

OPEN c
    
WHILE 1 = 1
BEGIN
    FETCH NEXT FROM c INTO @id
    if (@@FETCH_STATUS <> 0)
        BREAK

    EXEC [Tape.delete_tape_medium_from_catalogue] @tape_medium_id = @id
    DELETE FROM [Tape.tape_mediums] WHERE id = @id
END

CLOSE c
DEALLOCATE c

BEGIN
    DELETE FROM [dbo].[Tape.media_pools]
    WHERE
    NOT EXISTS(SELECT 1 FROM [dbo].[Tape.libraries] l where l.id = library_id)
END

More information

Veuillez consulter l'article suivant sur la façon de lancer les scriptes SQL : http://www.veeam.com/kb1443
Click here to send feedback regarding this KB, or suggest content for a new KB.
To report a typo on this page, highlight the typo with your mouse and press CTRL + Enter.

Spelling error in text

Ce site étant protégé par la technologie reCAPTCHA, les règles de confidentialité et les conditions d’utilisation de Google s’appliquent.
Thank you!

Merci !

Nous avons reçu votre commentaire et nous allons le traiter.

Oups! Une erreur s’est produite.

Veuillez réessayer ultérieurement.

Commentaires/suggestions à propos de la base de connaissances

Ce formulaire sert uniquement aux commentaires et suggestions sur la base de connaissances. Pour une assistance concernant le logiciel, ouvrez un ticket de support.

En envoyant ce formulaire, vous acceptez que vos informations personnelles soient gérées conformément aux termes de la politique de confidentialité de Veeam.
Ce site étant protégé par la technologie reCAPTCHA, les règles de confidentialité et les conditions d’utilisation de Google s’appliquent.
Vérifiez votre adresse e-mail pour poursuivre le téléchargement
Nous avons envoyé un e-mail de vérification à :
  • Code de vérification incorrect. Veuillez réessayer.
Un e-mail contenant un code de vérification vient d'être envoyé à l’adresse
Vous n’avez pas reçu le code ? Cliquez pour le recevoir dans  secondes
Vous n’avez pas reçu le code ? Cliquez ici pour le recevoir
Thank you!

Merci !

Nous avons reçu votre commentaire et nous allons le traiter.

error icon

Oups! Une erreur s’est produite.

Veuillez réessayer ultérieurement.