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: FR
Get weekly article updates
By subscribing, you are agreeing to have your personal information managed in accordance with the terms of Veeam's Privacy Notice.

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

Oops! Something went wrong.

Please try again later.

Challenge

Upgrade from Veeam Backup & Replication 7 to 8 may fail with "Failed to execute SQL scripts for Database <Databasename>"

 

Cause

The issue is caused by mediapools which are not linked to any library but still contain tape media entries. This may happen when the library or standalone drive was exchanged, and the tape mediapools and media were migrated manually into the new library / standalone drive without cleaning up old entries accordingly.

The logs show issues such as follows:
***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

Execute the following SQL Script to finish the cleanup, after which you can proceed with the upgrade as usual.

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

Please see the following KB article on how to run SQL scripts: 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

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Thank you!

Thank you!

Your feedback has been received and will be reviewed.

Oops! Something went wrong.

Please try again later.

KB Feedback/Suggestion

This form is only for KB Feedback/Suggestions, if you need help with the software open a support case

By submitting, you are agreeing to have your personal information managed in accordance with the terms of Veeam's Privacy Notice.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Verify your email to continue your product download
We've sent a verification code to:
  • Incorrect verification code. Please try again.
An email with a verification code was just sent to
Didn't receive the code? Click to resend in sec
Didn't receive the code? Click to resend
Thank you!

Thank you!

Your feedback has been received and will be reviewed.

error icon

Oops! Something went wrong.

Please try again later.