Jump to content

Subquery returned more than 1 value when open Azure Managed Instance Database properties


Recommended Posts

Guest Mohamed_Baioumy_MSFT
Posted

Recently some customers faced the error below when trying to access SQL Managed Database properties (right-click on database and select properties), they got the following error:

 

 

 

mediumvv2px400.png.80d7b7cfeec9abed2a62a282dc2c2a29.png

 

 

 

TITLE: Microsoft SQL Server Management Studio

 

------------------------------

 

Cannot show requested dialog.

 

------------------------------

 

ADDITIONAL INFORMATION:

 

Cannot show requested dialog. (SqlMgmt)

 

------------------------------

 

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. (Microsoft SQL Server, Error: 512)

 

 

 

For help, click: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-512-database-engine-error

 

------------------------------

 

BUTTONS:

 

OK

 

------------------------------

 

 

 

Investigation/Analysis:

 

The information for COPY_ONLY full backups initiated by user was stored in msdb.dbo.backupset table. Column database_name contained logical database name.

 

 

 

In order to have better automatic backup transparency we have recently enabled storing information about automatic backups into msdb.dbo.backupset table as well. Due to a defect in the code instead of logical database name we stored a unique identifier of the managed database. That caused the issue with SSMS as the internal query expects to have one of these two.

 

 

 

Mitigation

 

Mitigation is to clear backup history from MSDB using sp_delete_backuphistory.

 

 

 

EXEC msdb..sp_delete_backuphistory @oldest_date = '<mm/dd/yyyy>'

 

 

 

This command deletes the entries for backup sets older than the specified date.

 

 

 

To identify which backup set is causing the issue, you can run below query:

 

 

 

SELECT DB_ID(database_name) AS [db_id(database_name)], database_name , backup_start_date, machine_name

 

FROM msdb..backupset WHERE [type] = 'D' ORDER BY 1,2

 

 

 

The output from above query shows multiple entries for the same logical database name in msdb..backupset. You will need to delete the backup history for the duplicates based on database name using sp_delete_backuphistory

 

 

 

Do not delete entries that look like GUIDs. instead run this code to directly delete entries in backupset table based on database name:

 

 

 

EXEC msdb..sp_delete_database_backuphistory @database_name = '<database_name>'

 

Continue reading...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...