我正在將存儲過程從本地SQL Server數據庫移動到Azure SQL數據倉庫(ASDW)。在整個過程中,我不得不解決一些缺失的功能 - 耗時但並非不可能。我不得不做的一件事是用臨時表替換CTE的MERGE語句,然後是UPDATE/INSERT/DELETE語句(因爲CTE的後面不能跟這些語句)。在每個SP的開始處,我檢查臨時表並刪除它們(如果存在)。Azure SQL數據倉庫:在數據庫<id>中找不到分區ID <id>的商品。元數據不一致。運行DBCC CHECKDB
今天,我在ASDW中創建了另一個沒有任何臨時表的存儲過程(沒有更新/插入/刪除,所以我離開了CTE),它「編譯」了,我能夠毫無問題地運行它一個空的結果集,因爲還沒有數據)。我創造了另一個SP在此之後,當我去執行它,我得到了以下錯誤:
...No catalog entry found for partition ID (id) in database 26. The metadata is inconsistent. Run DBCC CHECKDB to check for a metadata corruption...
我就回我提到的第一個SP,它給了我同樣的錯誤,即使它以前運行沒有缺陷。
我試着按指示運行DBCC CHECKDB,但唉,它不支持/不工作。
我挖了很多東西,結果我的數據庫從100DWU擴展到了500DWU。我處於數據庫存儲大小限制的0.16%,並且幾乎沒有任何數據(總數據庫大小爲< 300MB)。
對此有解釋嗎?如果沒有,我不能良心在生產環境中使用這個平臺。
完整的錯誤:
Msg 110802, Level 16, State 1, Line 1
110802;An internal DMS error occurred that caused this operation to fail.
Details: Exception: Microsoft.SqlServer.DataWarehouse.DataMovement.Workers.DmsSqlNativeException,
Message: SqlNativeBufferReader.Run, error in OdbcExecuteQuery: SqlState:
42000, NativeError: 608, 'Error calling: SQLExecDirect(this->GetHstmt(), (SQLWCHAR *)statementText, SQL_NTS), SQL return code: -1 | SQL Error Info:
SrvrMsgState: 1, SrvrSeverity: 16, Error <1>: ErrorMsg: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]No catalog entry found for partition ID
72057594047758336 in database 36. The metadata is inconsistent. Run DBCC
CHECKDB to check for a metadata corruption. | Error calling: pReadConn-
>ExecuteQuery(statementText, bufferFormat) | state: FFFF, number: 134148,
active connections: 100', Connection String: Driver={pdwodbc};APP=TypeC01-
DmsNativeReader:DB196\mpdwsvc (2504)- ODBC;Trusted_Connection=yes;AutoTranslate=no;Server=\\.\pipe\DB.196-
bb5f9dd884cf\sql\query
您如何測試臨時表?如果object_id('tempdb ..#tablename')不是null drop table,則爲 –
。顯示此錯誤的存儲過程雖然不使用臨時表,但它們仍在使用CTE。我會將這些細節添加到帖子中。 –
但不支持INSERT/DELETE/UPDATE的CTE,所以這可能是你的問題,對吧? –