将sql server 2000的备份文件导入到sql server 2012中

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:

问题

在学习sql server 索引的时候,发现找到的很多资料都用的是一个Credit的数据,但是我不知道Credit数据库是从哪里来的。后来在聚集索引与非聚集索引详解这篇文章中找到了如下信息:

复制代码
USE CREDIT 
  go 
  -- These samples use the Credit database. You can download and restore the 
  -- credit database from here: 
  -- http://www.sqlskills.com/resources/conferences/CreditBackup80.zip 
  -- NOTE: This is a SQL Server 2000 backup and MANY examples will work on 
  -- SQL Server 2000 in addition to SQL Server 2005. 
复制代码

顺利下载这个文件并解压缩以后发现这是一个sql server 2000的备份文件,后缀名是.bak。不过我用的是sql server 2012,使用如下方法来恢复这个数据库备份文件:打开SSMS->database->右键选择restore files and filegroups,然后按如下图所示操作:

但是执行这个操作会报错,错误如下图所示:主要是说明版本差异问题,我的bak文件是8.0版本(sql server 2000),但是要导入到11.0版本(sql server 2010)中,因此报错。

解决方案

因为源文件版本过低,而目标数据库版本过高,这样的问题一个好的解决方案是首先降低目标数据的版本,然后一步一步往上提升版本。所以这里我们用使用sql server 2008作为过渡数据库。我们将上面的CreditBackup80.bak这个数据备份文件还原到sql server 2008中,假设还原在sqlserver2008中的数据库名称为Credit2008,然后在 sqlserver 2008中backup这个Credit2008数据库,默认会备份到C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup这个目录下面,备份文件名成为CreditBackup100.bak,最后将此备份文件CreditBackup100.bak还原到sql server 2012中。

PS:使用SSMS将sqlserver2008的bak文件还原到sqlserver2012中出现错误

错误1:启动sqlserver2012->右键database->restore files and filegroups->在source for restore中选择from device,然后选择CreditBackup100.bak这个文件的路径,但是当我们指定到C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup这个目录的时候,发现找不到任何文件,如下图所示:

解决错误1:这是因为C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup这个目录有权限设定,我们查看这个目录的属性可以发现这个目录有一个特殊的用户叫做:T-WEIXU-W7\SQLServerMSSQLUser$t-weixu-w7$SQLEXPRESS。也就是说只有这个用户才有访问这个目录下的文件的权限。所以我门可以在windows下将C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup目录下的CreditBackup100.bak文件拷贝到其他目录,比如我现在拷贝的目录是:D:\CreditBackup80。

错误2:在解决上述错误以后,我们在source for restore中选择from device,并且选定了CreditBackup100.bak这个文件,最后点击OK,但是会提示错误:

The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on ....。具体如下图所示:

从上述错误我们发现是因为我们想将sqlserver2008的bak文件还原到sqlserver2012的时候,却默认的被还原到原先的sqlserver2008的目录下,从路径“C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\Credit2012.mdf”我们可以知道这个就是sqlserver2008实例的目录。

解决错误2:造成这样错误的主要原因是因为我们在机器上安装了sqlserver2008和sqlserver2010两个版本,但是SSMS默认情况下只是让数据还原到sqlserver2008的目录下,我们必须指定sqlserver2012的目录,具体操作是:在restore file and filegroups界面中选中options,然后选定sqlserver2012实例的存放目录,如下图所示:

点击箭头所示的按钮(注意:必须通过点击按钮来指定目标位置的地址,如果手动修改路径的字符串,依然会报错。),会弹出如下错误:

指定Credit2012的数据文件和日志文件的存放目录,如下图所示:

完成上述操作以后点击确定,就能够正确完成数据库还原操作,最终将sqlserver2000的bak文件还原到了sqlserver2012中来。

解决错误2-方法2

在sqlserver configure manager中选中sqlserver2012的properties,然后修改log on as中的属性,使用build-in account中的local system,具体参考:http://social.msdn.microsoft.com/Forums/en-SG/sqldatabaseengine/thread/7b259f06-e1e2-47f5-8303-77775ee80400

 

 

 本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/07/02/2573076.html,如需转载请自行联系原作者

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
SQL 运维 监控
SQL Server 运维常用sql语句(二)
SQL Server 运维常用sql语句(二)
25 3
|
2月前
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
14 1
|
2月前
|
SQL 关系型数据库 MySQL
SQL数据库和 SQLserver数据库
【8月更文挑战第19天】SQL数据库和 SQLserver数据库
48 2
|
2月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
142 0
|
18天前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
84 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
2月前
|
SQL 数据库 数据安全/隐私保护
SQL Server数据库Owner导致事务复制log reader job无法启动的解决办法
【8月更文挑战第14天】解决SQL Server事务复制Log Reader作业因数据库所有者问题无法启动的方法:首先验证数据库所有者是否有效并具足够权限;若非,使用`ALTER AUTHORIZATION`更改为有效登录名。其次,确认Log Reader使用的登录名拥有读取事务日志所需的角色权限。还需检查复制配置是否准确无误,并验证Log Reader代理的连接信息及参数。重启SQL Server Agent服务或手动启动Log Reader作业亦可能解决问题。最后,审查SQL Server错误日志及Windows事件查看器以获取更多线索。
|
13天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
25 4
|
27天前
|
SQL 存储 数据管理
SQL Server数据库
SQL Server数据库
41 11
|
2月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
2月前
|
SQL 数据库
Microsoft SQL Server 2014如何来备份数据库
Microsoft SQL Server 2014如何来备份数据库
126 3
下一篇
无影云桌面