Azure-Sql-Database

我們在 sys.databases 中的數據庫的 Database_Id 與 DB_ID ( ‘<our database’ ) 的不匹配

  • May 17, 2016

我們數據庫的 sysdatabases 和 sys.databases 中的數據庫 ID 是 4。

函式 DB_ID (’<our database>’) 為我們的數據庫返回 5。此外,表 sys.dm_db_missing_index_details 中我們數據庫的任何缺失索引數據也分配給 database_id 5。

在我看來,sys.databases 的 ID 應該是 5 而不是4。這讓我發瘋了,所以 sp_BlitzIndex 不起作用。

有誰知道為什麼我的數據庫 ID 在 SQL Azure 上的 sys.databases、sys.dm_db_missing_index_details 和 DB_ID() 之間不匹配?它實際上是搞砸了還是這在 SQL Azure 中的工作方式有所不同?

Azure SQL DB 不同!

database_id來自sys.databases(不要使用<– 它已棄用)的列sysdatabases對於數據庫將保持不變。

DB_ID()是一個函式,如果 Azure DB 發生故障轉移,該值將發生變化。

最好是使用name<– 數據庫名稱列。

人們在這里這裡都報導過。

不應依賴 azure 中內置的數據庫 id / db_id,因為每當數據庫移動到不同的 sql 實例時(由於數據庫故障轉移),它都會發生變化。使用名稱而不是 id。另請注意,db_id 可能與 sys.databases 中的不同

引用自:https://dba.stackexchange.com/questions/138809