使用In-Memory OLTP对象附加数据库会导致堆栈转储 [英] Attaching a database with In-Memory OLTP objects causes a stack dump

查看:87
本文介绍了使用In-Memory OLTP对象附加数据库会导致堆栈转储的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在服务器上安装了SQL Server 2014 CTP2,并尝试附加在包含内存中对象的CTP1中创建的数据库。在尝试通过GUI(SSMS)和通过CREATE DATABASE ... FOR ATTACH命令进行连接时,返回
错误并生成堆栈转储。


示例命令( ###用于混淆细节):


CREATE DATABASE [#####] ON 

(FILENAME = N'D:\ ##### ######## _ PRIMARY_Data.mdf'),

(FILENAME = N'D:\ ############# _ Log1.ldf')

  FOR ATTACH

GO


返回错误:


位置: " e:\\sql12_main_t\\sql \\\\
tdbms \\hekaton \\sqlhost \\ sqlmin \\hkhostdb.cpp":1371

表达式: logRec-> log_hkVersion == HK_LOGREC_CTP2_VER

SPID: 63

流程ID: 4024

位置: dumplog.cpp:9097

表达式: hkCheckpointLog-> log_hkVersion == HK_LOGREC_CTP2_VER

SPID: 63

流程ID: 4024a

位置: logrec.cpp:279

表达式: 0
$
SPID:< span style ="white-space:pre"> 63

流程ID: 4024

描述: 未分类的日志op

位置: dumplog .cpp:9097

表达式: hkCheckpointLog-> log_hkVersion == HK_LOGREC_CTP2_VER

SPID: 63

流程ID: 4024

位置: logrec.cpp:279

表达式: 0

SPID: 63

流程ID: 4024

描述: 未分类的日志op $
Msg 1813,Level 16,State 2,第3行

无法打开新数据库'########'。 CREATE DATABASE被中止。

消息3624,等级20,状态1,行3

系统断言检查失败。检查SQL Server错误日志以获取详细信息。通常,断言失败是由软件错误或数据损坏引起的。要检查数据库损坏,请考虑运行DBCC CHECKDB。如果您同意在安装过程中将转储发送到
Microsoft,则会向Microsoft发送一个小型转储。 Microsoft可能会在最新的Service Pack或技术支持的修补程序中提供更新。

解决方案

< blockquote>

我在尝试将CTP1备份恢复到CTP2时遇到了类似的错误,所以我猜这是不可能的。 我尝试了一些东西,比如CONTINUE_AFTER_ERROR,dbcc checkdb,将数据库置于紧急模式,尝试附加并重建日志,但没有
工作。


考虑编写你的旧脚本数据库使用GUI并重新创建。


I have installed SQL Server 2014 CTP2 on a server, and tried to attach a database which was created in CTP1 containing In-memory objects. On attempting the attach both through the GUI (SSMS) and via the CREATE DATABASE .. FOR ATTACH commands, an error is returned and a stack dump generated.

Example command (### used to obfuscate specifics):

CREATE DATABASE [#####] ON 
( FILENAME = N'D:\#############_PRIMARY_Data.mdf' ),
( FILENAME = N'D:\#############_Log1.ldf' )
 FOR ATTACH
GO

Error returned:

Location: "e:\\sql12_main_t\\sql\\ntdbms\\hekaton\\sqlhost\\sqlmin\\hkhostdb.cpp":1371
Expression: logRec->log_hkVersion == HK_LOGREC_CTP2_VER
SPID: 63
Process ID: 4024
Location: dumplog.cpp:9097
Expression: hkCheckpointLog->log_hkVersion == HK_LOGREC_CTP2_VER
SPID: 63
Process ID: 4024a
Location: logrec.cpp:279
Expression: 0
SPID: 63
Process ID: 4024
Description: Unclassifed log op
Location: dumplog.cpp:9097
Expression: hkCheckpointLog->log_hkVersion == HK_LOGREC_CTP2_VER
SPID: 63
Process ID: 4024
Location: logrec.cpp:279
Expression: 0
SPID: 63
Process ID: 4024
Description: Unclassifed log op
Msg 1813, Level 16, State 2, Line 3
Could not open new database '########'. CREATE DATABASE is aborted.
Msg 3624, Level 20, State 1, Line 3
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

解决方案

I got a similar error when attempting to restore a CTP1 backup to CTP2, so I am guessing it is not possible.  I tried a few things, like CONTINUE_AFTER_ERROR, dbcc checkdb, putting the db in emergency mode, trying to attach and rebuild the log but nothing worked.

Consider scripting out your old database using the GUI and recreating that way.


这篇关于使用In-Memory OLTP对象附加数据库会导致堆栈转储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆