如何处理SQL Server中附加数据库时出现的错误_sqlserver附加数据库出错-程序员宅基地

技术标签: 数据库  microsoft  sql  


前言

SQL Server 是数据库软件中比较常见且实用的软件,它的集成度很高,且功能非常强大。很多类型的网站系统后台数据库都依赖于SQL Server。但是,对于初学者而言,在操作过程中总是会出现各种各样的错误。现在,我对“无法升级数据库”这种报错信息,做详细处理流程的讲解。


一、如何附加数据库?

1.选择要添加的数据库文件,也就是.MDF和.LDF文件,将他们复制到SQL Server的工作目录下的存放数据脚本的位置。
选择复制数据库文件:
在这里插入图片描述
将复制好的数据库文件粘贴到SQL Server的工作目录下,我这里以路径“C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA”为例。
在这里插入图片描述
2.打开SSMS(数据库客户端管理工具),右键数据库,选择附加:
在这里插入图片描述
3.点击添加,选择刚才粘贴进数据库工作目录中的数据库文件(这里以TourDB.MDF为例),点击确定。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
展开数据库,出现了我们刚才添加选择的数据库,说明附加成功。如果失败,附加时,就会报错。
在这里插入图片描述

二、无法升级数据库,出现(539类似版本号不匹配)错误解决办法

1.常见的无法附加数据库时,出现的错误

(1)数据类型不匹配,也就是说添加的数据脚本不符合SQL Server的规范,通常是SQL语句出现了出错误。
(2)无法解析数据库,即服务器无法访问数据库文件,就是数据库损坏了。
(3)无法升级数据库文件,就是服务器执行相关SQL操作时失败,大多数情况下都是数据库版本不兼容的问题。

2.无法升级数据库的解决办法

(1)首先,先看一看,出错的信息内容
在这里插入图片描述
在这里插入图片描述
很明显,版本不兼容,但是,我们还是要查看一下对应的版本,这一点很重要,会在后面的解决办法中起大作用。
(2)查看版本号,及兼容信息。右键任意一个创建好的数据库,选择属性,在选择页中,点击选项,就可以看到右边列表页中的兼容级别下拉列表。
在这里插入图片描述
因为我使用的是Sql Server2019,所以它兼容的最低版本是2008的。下面,我们再查看一下Sql Server的兼容表单:

Target SQL Server Version Source SQL Server Version Internal Database Version
SQL Server 2008 R2 665
SQL Server 2008 661
SQL Server 2008 R2 SQL Server 2005 with vardecimal enabled 612
SQL Server 2005 611
SQL Server 2000 539
SQL Server 2008 661
SQL Server 2008 SQL Server 2005 with vardecimal enabled 612
SQL Server 2005 611
SQL Server 2000 539
SQL Server 2005 SP2+ SQL Server 2005 with vardecimal enabled 612
SQL Server 2005 611
SQL Server 2005 SQL Server 2000 539
SQL Server 7 515
SQL Server 2000 SQL Server 2000 539
SQL Server 7 515
SQL Server 7 SQL Server 7 515

(3)针对性解决办法:使用虚拟机,在windows虚拟机中安装与本机安装的Sql Server的兼容最低版本的Sql Server,此时,上述列举的Sql Server不同版本对应的兼容版本的叙述就起了作用。
(4)将在本机中无法附加的数据库文件在虚拟中安装的可以兼容的最低版本中附加,然后分离,复制分离后的数据库文件,再重新附加到本机数据库中,即可解决无法升级数据库,完成附加的问题。
在虚拟机中的Sql Server中完成附加,我这里是Sql Server2019,所以在虚拟中安装的是Sql Server2008。
在这里插入图片描述
分离数据库,点击任务,选择分离
在这里插入图片描述
分离时,勾选“删除”,点击确定
在这里插入图片描述
在虚拟机中找到刚才的数据库文件,将它们粘贴到本机,在本机重新附加。
在这里插入图片描述
在这里插入图片描述
对比前后的操作时间,可以发现很明显发生了变化:
在这里插入图片描述
在这里插入图片描述
重新附加数据库:
在这里插入图片描述
左下角显示正在执行,说明数据库版本不兼容的问题已经解决。

总结

本篇文章主要针对附加数据库时,出现“无法升级数据库”,版本不兼容的错误给出了详细的解决过程。为什么要在虚拟机中使用另一个低版本的Sql Server对数据库文件进行升级,再进行分离转换呢?这是因为有时候我们用的数据库可能是拷贝别人的,当我们无法使用自己本地的Sql Server打开它们时,是很难知道它们的库表结构的,所以重新创建一个和它们一摸一样的库表,可以说几乎不可能,而且费时费力。因此采用这种办法,只需要安装虚拟机,安装兼容的低版本的Sql Server就能快速解决这种问题。这只是我在学习实践过程的一点操作经验,希望对遇到类似问题的朋友有所帮助。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ZCYaiCLX3344/article/details/125901198

智能推荐

UDP通信_udp虽然是非面向连接的通信,在发送数据之前也需要先调用tcon指令-程序员宅基地

文章浏览阅读532次。代码下载地址:http://download.csdn.net/detail/u011324501/9420980UDP和TCP均指通信协议,那么,既然代表通信协议,UDP和TCP都是建立一个“通道”就可以进行服务端/客户端间的数据收发。它们的区别主要在于:UDP协议是面向非连接(不可靠)的传输协议,也就是不需要与服务端建立连接,就直接将数据发送给服务端,同时,无机制保证这条数据已成功发送给服_udp虽然是非面向连接的通信,在发送数据之前也需要先调用tcon指令

【菜鸟也能玩转OpenGL】OpenGL绘制正方形_ooengl菜鸟-程序员宅基地

文章浏览阅读1.2w次,点赞7次,收藏24次。本系列文章由 莫问 出品,转载请注明出处。文章链接:http://blog.csdn.net/mni2005/article/details/27228111作者:莫问(mni2005) 邮箱:[email protected]_ooengl菜鸟

linux sh脚本无法执行_sh脚本无法直接运行-程序员宅基地

文章浏览阅读1.9k次。linux 执行sh文件_sh脚本无法直接运行

Postgresql: 动态SQL语句中不能使用Select into?_postgres 使用string_agg 不能select into 到另一个字段-程序员宅基地

文章浏览阅读7.9k次。下面是出错的存储过程:CREATE or Replace FUNCTION func_getnextbigid( tablename varchar(240), idname varchar(20) default 'id')RETURNS bigint AS $funcbody$Declare sqlstring varchar(240); currentId bigint;Begin sqlstring:= 'select max("' ||_postgres 使用string_agg 不能select into 到另一个字段

Linux环境下的C语言环境配置及安装技巧-程序员宅基地

文章浏览阅读2.7k次。本地环境设置如果您想要设置 C 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C 编译器。文本编辑器这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。文本编辑器的名称和版本在不同的操作系统上可能会有所不同。例如,Notepad 通常用于 Windows 操作系统上,vim/..._linux .exe需要什么环境 c

开始使用Keepass 管理密码-程序员宅基地

文章浏览阅读149次。其实很早以前就用过KeePass Password Safe ,不过没有贯彻下去 后来管理密码的方式有下面四种: 一是不管,后果是惨痛的,也浪费了更多的时间 用一个txt 文件,不过密码是用助记码写的,防止别人 还有是发一封邮件到gmail 中,gmail中搜索功能不错 最常用的是LastPass,很不错,不过害怕突然有一天这一点云服务不能用...

随便推点

postgre报错:RETURNING “id“ was aborted: ERROR: null value in column “id“ violates not-null constraint_null value in column "id" violates not-null constr-程序员宅基地

文章浏览阅读1.3w次,点赞6次,收藏18次。我在使用 postgre 插入数据的时候报了一个错:RETURNING "id" was aborted: ERROR: null value in column "id" violates not-null constraint表的创建 sql 语句如下:CREATE TABLE city( id int8 PRIMARY KEY NOT NULL , name varchar(30) NOT NULL , gov_area VARCHAR(100) NOT NULL );后来我_null value in column "id" violates not-null constraint

buuctf-misc练习(2)_buuctf在线评的misc-程序员宅基地

文章浏览阅读218次。BUUCTFLSB文件中的秘密wiresharkrarqrzip伪加密ningen被嗅探的能量LSB既然是LSB使用Stegsolve得到二维码,扫一扫即可flag是:flag{1sb_i4_s0_Ea4y}文件中的秘密右键属性详细信息flag是:flag{870c5a72806115cb5439345d8b014396}wireshark给了提示是登录登录方法,就直接过滤搜http.request.method==POSTflag是:flag{ffb7567a1d4f4_buuctf在线评的misc

【vue设计与实现】渲染器 1-渲染器与相应系统的结合&渲染器基本概念_innerhtml和渲染器-程序员宅基地

文章浏览阅读347次。由于首次渲染时已经把oldVnode渲染到container内了,所以再次调用renderer.render函数并尝试渲染newVnode的时候,就不能简单的执行挂载动作了。这里,先暂时将渲染器限定在DOM平台,既然渲染器用来渲染真实DOM元素,那么严格来说,下面的函数就是一个合格的渲染器。渲染器就是用来执行渲染任务的,渲染器不仅能够渲染真是DOM元素,还是框架跨平台能力的关键。关于这里为什么用了一个createRender的函数,其实渲染器和渲染的概念是不同的,这就是响应系统和渲染器之间的关系。..._innerhtml和渲染器

iOS JSON与Object之间的映射 ObjectMapper For Swift_swift json到object-程序员宅基地

文章浏览阅读8.9k次。在实际项目开发过程中,很多时候移动终端设备都要与服务器进行数据交互。两者之间的数据格式通常为 JSON 和 XML。而 JSON 数据格式因其简单、易操作、高效率的特点而被广大开发者所使用。在项目开发中,根据不同的业务我们需要创建不同 Model。在成功接收到从服务器返回过来的数据后,我们可以将 JSON 数据当作一个个的键值对然后进行解析,虽然这也算是一种解决方式,但一定程度上加大开发者的工作量。_swift json到object

Linux svn 导出diff修改文件命令_svn如何批量生成diff-程序员宅基地

文章浏览阅读1.1k次。svn st -q 查看在当前目录下的所有修改过的文件。svn diff ./ 查看文件修改内容svn diff > modify.dff ./ 导出当前目录下的所有修改文件diff文件, modify.diff : 自定义命名文件。就是修改的内容文件。svn diff a...._svn如何批量生成diff

在ROS中使用相机_gazebo相机标定板-程序员宅基地

文章浏览阅读1w次,点赞7次,收藏76次。在机器人中经常使用相机,在导航或者抓取规划时需要解析相机数据,需要理解相机图像的模式和相关的标签以及坐标系。本文介绍ROS中相机坐标的变换、相机标定、使用OpenCV进行简单的图像处理。投影变换到相机坐标相机内部校准标定立体相机标定在ROS中使用OpenCV使用OpenCV寻找彩色像素点查找边缘投影变换到相机坐标将图像与空间坐标相关联的投影变换的必要步骤是..._gazebo相机标定板

推荐文章

热门文章

相关标签