附加到SQL2012的数据库就不能再附加到低于SQL2012的数据库版本的解决方法

论坛 期权论坛 脚本     
niminba   2021-5-23 05:02   1276   0

昨天我只是将数据库附加到SQL2012,然后各个数据库都做了收缩事务日志的操作

兼容级别这些都没有改

再附加回SQL2005的时候就报错

在SQL2012里附加,确实是90级别,但是在SQL2005死活附加不上

备份数据库再还原也是一样

重建事务日志也是一样

然后我做了一个实验,检查一下附加到SQL2012的数据库和附加到SQL2005的数据库,两个数据库的文件头有什么不同

注意:两个数据库的兼容级别都是90,附加到SQL2012之后我也没有动过兼容级别!!

我们用同一个数据库,分别附加到SQL2005上和SQL2012上,看一下附加之后数据库的文件头有没有改变

这个数据库的兼容级别是90的

附加到SQL2012之后,我也不改变他的兼容级别

查看文件头的SQL语句如下,实际上就是数据库的第0页:

复制代码 代码如下:

DBCC TRACEON(3604,-1)
DBCC PAGE(dlgpos,1,0,3)



在SQL2012里和SQL2005里都执行一下

将结果复制粘贴到一个新建的记事本里,命名好

复制代码 代码如下:

DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
PAGE: (1:0)

BUFFER:

BUF @0x035D7380
bpage = 0x05BC0000                   bhash = 0x00000000                   bpageno = (1:0)
bdbid = 5                            breferences = 0                      bUse1 = 8142
bstat = 0xc00009                     blog = 0x59ca2159                    bnext = 0x00000000
PAGE HEADER:

Page @0x05BC0000
m_pageId = (1:0)                     m_headerVersion = 1                  m_type = 15
m_typeFlagBits = 0x0                 m_level = 0                          m_flagBits = 0x208
m_objId (AllocUnitId.idObj) = 99     m_indexId (AllocUnitId.idInd) = 0    Metadata: AllocUnitId = 6488064
Metadata: PartitionId = 0            Metadata: IndexId = 0                Metadata: ObjectId = 99
m_prevPage = (0:0)                   m_nextPage = (0:0)                   pminlen = 0
m_slotCnt = 1                        m_freeCnt = 7636                     m_freeData = 2844
m_reservedCnt = 0 &nbjZj4(顽剈4(顽ш顽ň4(顽4( +Zjn3 Nw&7B3 &4(顽4(*"E0B;6jZ_r'*"gb"Cnf*"E0jV64(7f*E0j:n4(>r/"E0jV6QME0kk4(4(4(>RvjME3>r/Zj3S4( 1A=L顽э4(4(4(vj{3b;OE0jV6f*"E0j^g0RcV6jZ4(_7*V6"{fV6jRcg32Z4(&*n{:04(B;Of*V6"E07jw     4(4(4(顽ьф啄唹4(顽э4(顽

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP