sql-server - 无法在 SSMS 中打开托管实例数据库的属性选项卡

标签 sql-server ssms azure-sql-managed-instance

我正在使用 Azure 托管实例来执行某些迁移任务。我有多个数据库,所有数据库都工作正常。 但是,当我尝试打开名为 GCDCalculation 的数据库的属性时,出现以下错误:-

enter image description here

整个错误是:-

 
Cannot show requested dialog.
 
===================================
 
Cannot show requested dialog. (SqlMgmt)
 
------------------------------
Program Location:
 
   at Microsoft.SqlServer.Management.SqlMgmt.DefaultLaunchFormHostedControlAllocator.AllocateDialog(XmlDocument initializationXml, IServiceProvider dialogServiceProvider, CDataContainer dc)
   at Microsoft.SqlServer.Management.SqlMgmt.DefaultLaunchFormHostedControlAllocator.Microsoft.SqlServer.Management.SqlMgmt.ILaunchFormHostedControlAllocator.CreateDialog(XmlDocument initializationXml, IServiceProvider dialogServiceProvider)
   at Microsoft.SqlServer.Management.SqlMgmt.LaunchForm.InitializeForm(XmlDocument doc, IServiceProvider provider, ISqlControlCollection control)
   at Microsoft.SqlServer.Management.SqlMgmt.LaunchForm..ctor(XmlDocument doc, IServiceProvider provider)
   at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ToolMenuItemHelper.OnCreateAndShowForm(IServiceProvider sp, XmlDocument doc)
   at Microsoft.SqlServer.Management.SqlMgmt.RunningFormsTable.RunningFormsTableImpl.ThreadStarter.StartThread()
 
===================================
 
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. (.Net SqlClient Data Provider)
 
------------------------------
For help, click: https://learn.microsoft.com/sql/relational-databases/errors-events/mssqlserver-512-database-engine-error
 
------------------------------
Server Name: my-project-database.database.windows.net, 3342
Error Number: 512
Severity: 16
State: 1
Line Number: 7
 

------------------------------
Program Location:
 
   at Microsoft.SqlServer.Management.SqlManagerUI.DBPropGeneralData.InitProp()
   at Microsoft.SqlServer.Management.SqlManagerUI.DBPropGeneralData..ctor(CDataContainer context)
   at Microsoft.SqlServer.Management.SqlManagerUI.DBPropGeneral..ctor(CDataContainer dataContainer, DatabasePrototype prototype)
   at Microsoft.SqlServer.Management.SqlManagerUI.DBPropSheet.Init(CDataContainer dataContainer)
   at Microsoft.SqlServer.Management.SqlManagerUI.DBPropSheet..ctor(CDataContainer context)

所有其他数据库都工作正常

除此之外,我想知道,当我们尝试打开属性选项卡(或任何其他选项卡)时,后端是否会触发特定查询。

最佳答案

终于有一个我可以回答的问题了。 Kollira 在这一点上是正确的,您收到错误的原因是备份集包含将多个数据库链接到同一 ID 的记录。发生这种情况是因为数据库可能是通过迁移工具引入 SQL MI 的,该工具使用 GUID 而不是数据库名称创建备份集。当您对 URL 进行自己的仅复制备份时,它会创建一个具有真实名称的新备份集。这不是一个优化的查询来证明这一点,但这里是。

select  db_id(database_name),database_name, [type], max(backup_finish_date) as latest from msdb..backupset where ([type] = 'D' or [type] = 'L' or [type]='I') and db_id(database_name) = (select database_id from sys.databases where name = 'Your_Database') group by database_name, [type]

然后我们可以看到列出了多个数据库,您可能会看到错误的数据库,因为它是在您备份时创建的。因此,这个列表可能包含 2 个 DB

Select * from  msdb..backupset where database_name in('DB1', 'DB2')

我们可以看到有冲突的备份集。就我而言,具有真实姓名的实际上是我想要删除的新名称,另一个是我从迁移中假设的 GUID。所以我只是删除了备份集,因为没有关联的备份。简单地说:

Delete from msdb.dbo.backupset where  database_name = 'TheDatabaseName'

繁荣,现在属性已呈现,并且原始备份链仍然正确。 我不是 SQL 专家,因此使用风险自负。此外,由于这不再是托管实例独有的问题,也许 SQL 专业人员可以建议更好的解决方案。

关于sql-server - 无法在 SSMS 中打开托管实例数据库的属性选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73119717/

相关文章:

sql-server - 从两个表中选择一个

sql-server - 如何在sql server中获取更新的列名

sql-server - 所有这些 SQL Server session 来自哪里?

azure - 如何在 Azure SQL MI 实例上设置针对已用存储空间百分比的警报?

azure - 无法从azure门户删除虚拟集群,需要很长时间但仍然存在

c# - 检测到冲突的更改。当尝试插入具有相同键的多个实体时可能会发生这种情况

SQL Server 使用 CASE WHEN THEN 语句

sql-server - 设置 NOEXEC ON 仍然执行 "USE"语句

sql-server - 是否有 64 位版本的 SQL Server Management Studio (SSMS) 2005?

azure - 将 .bak 文件导入 Azure SQL 数据库