https://login.veeam.com/fr/oauth?client_id=nXojRrypJ8&redirect_uri=https%3A%2F%2Fwww.veeam.com%2Fservices%2Fauthentication%2Fredirect_url&response_type=code&scope=profile&state=eyJmaW5hbFJlZGlyZWN0TG9jYXRpb24iOiJodHRwczovL3d3dy52ZWVhbS5jb20vZnIva2IxOTUzIiwiaGFzaCI6IjFmMjc0MjFlLWE3YjEtNDY5ZS1hYjc1LWMyNmM2ZjJiZGIyNyJ9
+33 (805) 080 476 | 08:00 - 18:00 CET
FR

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

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
KB ID: 1953
Product: Veeam Backup & Replication
Version: 8.x
Published: 2014-11-13
Last Modified: 2020-08-13
Languages: EN

Vous n'avez pas trouvé ce que vous cherchiez ?

Ci-dessous, vous pouvez envoyer une idée pour un nouvel article de base de connaissances.
Report a typo on this page:

Please select a spelling error or a typo on this page with your mouse and press CTRL + Enter to report this mistake to us. Thank you!

Spelling error in text

Knowledge base content request
En envoyant ce formulaire, vous acceptez que vos données à caractère personnel soient traitées par Veeam conformément à sa charte de confidentialité.

ty icon

Thank you!

We have received your request and our team will reach out to you shortly.

OK

error icon

Oops! Something went wrong.

Please go back try again later.