Sql server 导致系统断言检查的SQL Server 2016合并失败
首先,我要说的是,我知道微软说他们有一个,但我们已经安装了2016年的累积更新,仍然没有运气。这是2014年运行良好的SCD类型2的合并。当出现此错误时,我们正在测试到2016年的升级。下面是导致问题的示例查询Sql server 导致系统断言检查的SQL Server 2016合并失败,sql-server,sql-server-2016,sql-merge,Sql Server,Sql Server 2016,Sql Merge,首先,我要说的是,我知道微软说他们有一个,但我们已经安装了2016年的累积更新,仍然没有运气。这是2014年运行良好的SCD类型2的合并。当出现此错误时,我们正在测试到2016年的升级。下面是导致问题的示例查询 /* Type 2 Merge */ INSERT INTO BDW.DMEmployer ( SCD_Current, Source_System, Com
/* Type 2 Merge */
INSERT INTO BDW.DMEmployer
(
SCD_Current,
Source_System,
Company,
Employer_Number
)
SELECT SCD_Current,
Source_System,
Company,
Employer_Number
FROM
(
MERGE BDW.DMEmployer dim
USING ETLWork.work.DMEmployer work
ON dim.Employer_Number = work.Employer_Number AND dim.Company = work.Company
-- This inserts new records in the dimension table
WHEN NOT MATCHED THEN
INSERT (SCD_Current,
Source_System,
Company,
Employer_Number
VALUES ( 'Y',
work.last_updated,
'I',
'POINT',
work.Company,
work.Employer_Number
WHEN MATCHED AND dim.SCD_Current = 'Y'
AND ( dim.Employer_FEIN <> work.Employer_FEIN ) THEN
UPDATE SET SCD_Current='N',
SCD_Valid_To_Date = work.last_updated-2
OUTPUT $Action
Action_Taken,
'Y' AS SCD_Current,
work.Source_System,
work.Company,
work.Employer_Number
) AS MERGE_OUT
WHERE MERGE_OUT.Action_Taken = 'UPDATE';
如果只运行内部合并,则运行该合并不会有问题。但现在试图在2016年运行整个系统会导致以下失败。我们已经尝试了错误修复,但我想知道我是否错过了其他东西。它只在外部插入部分中添加了约150行
错误消息:
位置:pageref.cpp:955
表达式:是否已记录,m_BUF->bstat | | pageModifyType!=PageModifyType| | | GetPagePtr->IsTextPage
SPID:52
进程ID:2820
Msg 3624,20级,状态1,第3行系统断言检查已完成
失败。有关详细信息,请查看SQL Server错误日志。通常情况下
断言失败是由软件错误或数据损坏引起的。到
检查数据库损坏,考虑运行dcccCHECKDB。如果你
同意在安装期间向Microsoft发送转储,将创建一个小型转储
发送给微软。Microsoft可能会在中提供更新
最新的Service Pack或技术支持的修补程序
Msg 10054,级别20,状态0,第0行出现传输级别错误
从服务器接收结果时发生。提供者:TCP
提供程序,错误:0-现有连接已被
远程主机
我们已经运行了DBCC CHECKDB,没有发现任何东西被损坏。那么,这仍然是一个bug,还是在安装过程中我可能忽略了一些设置?感谢您的帮助。根据我使用recovery model=simple的经验,有时会出现此错误。切换到recovery model=full可以消除这个问题,这是我的解决方法,尽管不是一个理想的方法 尝试将其发布并使用select@@@version的结果更新您的问题不是问题,但是您的合并在insert之后缺少一个结束括号。。。。还有价值观……谢谢。我将在那里发布。您是否尝试过先输出到临时表,然后从临时表插入BDW.DMEmployer?我确实考虑过临时表,接下来将尝试。只是不知道为什么这在2014年运行良好,而不是2016年,即使有最新的累积更新。在dba.stackexchange.com上发现了类似的问题,但他们说CU解决了他们的问题。将尝试临时表,因为这是目前干扰最小的。谢谢你的回复,谢谢!这是在@VERSION=Microsoft SQL Server 2017 RTM-14.0.1000.169 X64 2017年8月22日17:04:49版权所有C 2017 Microsoft Corporation Developer Edition 64位Windows Server 2016标准10.0构建14393:管理程序上解决我的问题