Azure SQL 数据仓库 : No catalog entry found for partition ID <id> in database <id>. 元数据不一致。运行 DBCC CHECKDB

标签 azure azure-synapse

我正在致力于将存储过程从本地 SQL Server 数据库迁移到 Azure SQL 数据仓库 (ASDW)。在整个过程中,我不得不解决一些缺失的功能——耗时但并非不可能。我必须做的一件事是将 CTE 后跟 MERGE 语句替换为临时表后跟 UPDATE/INSERT/DELETE 语句(因为 CTE 后面不能跟这些语句)。在每个 SP 的开头,我检查临时表并删除它们(如果存在)。

今天,我在 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

最佳答案

得知您使用 Azure SQL 数据仓库的体验,我们深表遗憾。我认为这是与 NOT NULL 列的 BIT 数据类型处理相关的缺陷。您能否确认您有一个 BIT NOT NULL 列(例如,CREATE TABLE t1 (IsTrue BIT NOT NULL);)?

如果是这样,修复程序已编码并正在测试发布中。现在为了缓解这个问题,您可以切换到 TINY INT 或删除该列的 NOT NULL 设置。

关于Azure SQL 数据仓库 : No catalog entry found for partition ID <id> in database <id>. 元数据不一致。运行 DBCC CHECKDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35708960/

相关文章:

azure - 如何使用 Azure CLI 更新 ADF 计划时间?

sql - SQL Azure 的 ADO.NET 连接池并发问题或我们如何无法扩展 Web 应用程序

azure - 通过 ARM 模板创建 Azure blob/文件共享容器

sql-server - 如何为azure blob存储中的数据创建外部表

azure - 如何对 Azure 数据工厂上的存储过程进程进行排序?

azure - 在 Azure Blob 存储上设置 STS header

python - PTVS + Django : why can i not import python libraries

Azure SQL DW 数据加载需要很长时间

适用于个人的 Azure Synapse 计费模型?

azure - 从 ADF 和接收器调用存储过程到 Azure SQL 数据库