如何转换SQL Server 2008数据库到SQL Server 2005

如何转换SQL Server 2008数据库到SQL Server 2005,第1张

由于SQL Server 2008数据库转换到SQL Server 2005上,是不能通过备份还原、分离附加等 *** 作来实现的,只能通过数据的导入导出实现。方法大致有几种:1:通过Generate Scripts(包括数据) ,这个方法呢,如果对于很小的数据库,倒是一个非常方便的方法。注意前提是数据库很小,如果数据库很大,那你千万别选这个方法,SQL导入数据的性能会折磨死你。2:通过Generate Scripts(生成表、视图等),然后使用SQL Server Import and Export Tool导入数据3: Red Gate SQL Compare 工具 关于性能对比呢,博客园这位老兄的这篇文章"不同版本的SQL Server之间数据导出导入的方法及性能比较 " 已经做了详细的测试,下面只是介绍、总结转换SQL Server 2008数据库到SQL Server 2005的 *** 作步骤。Generate ScriptsStep 1: 单击某个需要转换的数据库,然后选择任务(Tasks)——生成脚本(Generate Scripts)Step 2: d出生成脚本指导界面Step 3:选择需要导出的数据库对象,有导出整个数据库对象和选择指定数据库对象两个选项Step 4: 设置生成脚本选项,例如指定脚本位置,脚本文件的编码等等选择,最重要的是高级选项”Advanced“如下所示,最好在”Script for Server Version“ 里面选择”SQL Server 2005“等选项测试服务器这个版本里面没有'Script Data”(生成数据的脚本)选项,如下所示,如果你要通过脚本插入数据,那么就必须选择这个选项。Step 5: Summray your selections, 点击Next继续Step 6: 执行过程。完成后即生成了相应脚本文件。将生成的脚本在另外一台测试服务器执行,创建相应的数据库以及数据库对象。然后点击”SQL Server Import and Export“工具进行数据导入, *** 作步骤如下所示:SQL Server Import and ExportStep 1: 欢迎界面,点击Next跳过。Step 2: 选择数据源(Data Source),我们需要选择“SQL Server Native Client 10”, 输入身份认证信息,我选择Windows 身份认证。选择需要导出数据的数据库,例如,我选择一个测试数据库TSLStep 3:配置需要导入的Destination,选择对应的服务器和数据库Step 4:两个选择,选项1是用于整个表或视图导入导出,选项2用于书写查询SQL或导入导出Step 5: 勾选你需要导数的脚本,单击Source旁边的选项,即可选择全部对象。有时候需要编辑“Edit Mappings"选项,勾选”Enable identity Insert“,否则会导致后面导入导出报错Step 6: 勾选立即执行,点击Next执行下一步Step 7 : 执行过程,需要检查是否执行成功,查看相关出错信息。执行完成后,然后在测试服务器将该数据库备份压缩后,通过FTP上传到各个工厂,进行还原。关于 Red Gate SQL Compare的 *** 作,也非常方便简单,由于测试过程中没有截图,就此略过。由于测试用的数据库比较小,不知道比较大的数据库,例如几百G的数据, *** 作起来是否会遇到性能等杂七杂八的问题。不过相信很多人是不会遇到这么奇葩的案例的。例如使用导入导出工具,其实就会遇到一些小问题(以前遇到的): 1:在验证时出现错误,错误信息如下所示:- Validating (Error) Messages * Error 0xc02020f4: Data Flow Task 1: The column "xxxx" cannot be processed because more than one code page (936 and 1252) are specified for it. (SQL Server Import and Export Wizard)* Error 0xc02020f4: Data Flow Task 1: The column "xxxx" cannot be processed because more than one code page (936 and 1252) are specified for it. (SQL Server Import and Export Wizard)解决:检查你源数据库和目标数据库的排序规则是否不一致,如果不一致,就会出现大量上面错误。 2:在验证时出现下面错误信息- Validating (Error)Messages * Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column "xxxxx". (SQL Server Import and Export Wizard) * Error 0xc0202045: Data Flow Task 1: Column metadata validation failed. (SQL Server Import and Export Wizard)解决:出现这个错误,是因为这一列是自动增长,需要在”Edite Mappings" 选项里面勾选“Enable Identity Insert”选项,如果数据库里面有大量这类列,是个头疼的问题。

这是一个先删除用户,再重建用户,然后赋权的脚本,可以放到crontab中定时执行

source /opt/.bash_profile

DATE=$(date +%Y%m%d)

sqlplus /nolog <connect / as sysdba

DROP USER WAPUSER CASCADE

DROP USER JLTGAME CASCADE

CREATE USER "WAPUSER" PROFILE "DEFAULT"

IDENTIFIED BY "123456" DEFAULT TABLESPACE "JLTGAME"

TEMPORARY TABLESPACE "TEMP"

ACCOUNT UNLOCK

CREATE USER "JLTGAME" PROFILE "DEFAULT"

IDENTIFIED BY "JLTGAME123" DEFAULT TABLESPACE "JLTGAME"

TEMPORARY TABLESPACE "TEMP"

ACCOUNT UNLOCK

GRANT CREATE VIEW TO JLTGAME

GRANT CREATE TABLE TO JLTGAME

GRANT ALTER ANY TYPE  TO JLTGAME

GRANT CREATE SESSION  TO JLTGAME

GRANT CREATE SYNONYM  TO JLTGAME

GRANT CREATE TRIGGER  TO JLTGAME

GRANT ALTER ANY INDEX TO JLTGAME

GRANT ALTER ANY TABLE TO JLTGAME

GRANT CREATE ANY TYPE TO JLTGAME

GRANT CREATE ANY VIEW TO JLTGAME

GRANT CREATE SEQUENCE TO JLTGAME

GRANT CREATE SNAPSHOT TO JLTGAME

GRANT ALTER TABLESPACE TO JLTGAME

GRANT CREATE ANY INDEX TO JLTGAME

GRANT CREATE ANY TABLE TO JLTGAME

GRANT CREATE PROCEDURE TO JLTGAME

GRANT ALTER ANY TRIGGERTO JLTGAME

GRANT CREATE ANY TRIGGER  TO JLTGAME

GRANT ALTER ANY INDEXTYPE TO JLTGAME

GRANT CREATE ANY INDEXTYPE TO JLTGAME

GRANT UNLIMITED TABLESPACE TO JLTGAME

exit

EOF

imp userid=jltgame/JLTGAME123 file=/backup/52backup/jltgame$DATE.dmp full=y log=/opt/logjltgame$DATE.dmp

有三种方法:

1:通过Generate Scripts(包括数据) ,这个方法呢,如果对于很小的数据库,倒是一个非常方便的方法。注意前提是数据库很小,如果数据库很大,那千万别选这个方法,SQL导入数据的性能会折磨死你。

2:通过Generate Scripts(生成表、视图等),然后使用SQL Server Import and Export Tool导入数据

3: Red Gate SQL Compare 工具

Generate Scripts步骤:

Step 1: 单击某个需要转换的数据库,然后选择任务(Tasks)——生成脚本(Generate Scripts)

Step 2: d出生成脚本指导界面

Step 3:选择需要导出的数据库对象,有导出整个数据库对象和选择指定数据库对象两个选项

Step 4: 设置生成脚本选项,例如指定脚本位置,脚本文件的编码等等选择,最重要的是高级选项”Advanced“

最好在”Script for Server Version“ 里面选择”SQL Server 2005“等选项

测试服务器这个版本里面没有'Script Data”(生成数据的脚本)选项,如果要通过脚本插入数据,那么就必须选择这个选项。

Step 5: Summray your selections, 点击Next继续

Step 6: 执行过程。完成后即生成了相应脚本文件。

将生成的脚本在另外一台测试服务器执行,创建相应的数据库以及数据库对象。

”SQL Server Import and Export“工具进行数据导入, *** 作步骤如下所示:

SQL Server Import and Export

Step 1: 欢迎界面,点击Next跳过。

Step 2: 选择数据源(Data Source),需要选择“SQL Server Native Client 10”, 输入身份认证信息,我选择Windows 身份认证。选择

需要导出数据的数据库,例如,选择一个测试数据库TSL

Step 3:配置需要导入的Destination,选择对应的服务器和数据库

Step 4:两个选择,选项1是用于整个表或视图导入导出,选项2用于书写查询SQL或导入导出

Step 5: 勾选需要导数的脚本,单击Source旁边的选项,即可选择全部对象。有时候需要编辑“Edit Mappings"选项,勾选”Enable identity Insert“,否则会导致后面导入导出报错

Step 6: 勾选立即执行,点击Next执行下一步

Step 7 : 执行过程,需要检查是否执行成功,查看相关出错信息。

执行完成后,然后在测试服务器将该数据库备份压缩后,通过FTP上传到各个工厂,进行还原。

关于 Red Gate SQL Compare的 *** 作,也非常方便简单,由于测试过程中没有截图,就此略过。

由于测试用的数据库比较小,不知道比较大的数据库,例如几百G的数据, *** 作起来是否会遇到性能等杂七杂八的问题。不过相信很多人是不会遇到这么奇葩的案例的。例如使用导入导出工具,其实就会遇到一些小问题(以前遇到的):

1:在验证时出现错误,错误信息如下所示:

- Validating (Error)

Messages

* Error 0xc02020f4: Data Flow Task 1: The column "xxxx" cannot be processed because more than one code page (936 and 1252) are specified for it.

(SQL Server Import and Export Wizard)

* Error 0xc02020f4: Data Flow Task 1: The column "xxxx" cannot be processed because more than one code page (936 and 1252) are specified for it.

(SQL Server Import and Export Wizard)

解决:检查你源数据库和目标数据库的排序规则是否不一致,如果不一致,就会出现大量上面错误。

2:在验证时出现下面错误信息

- Validating (Error)

Messages

* Error 0xc0202049: Data Flow Task 1: Failure inserting into the read-only column "xxxxx".

(SQL Server Import and Export Wizard)

* Error 0xc0202045: Data Flow Task 1: Column metadata validation failed.

(SQL Server Import and Export Wizard)

解决:出现这个错误,是因为这一列是自动增长,需要在”Edite Mappings" 选项里面勾选“Enable Identity Insert”选项,如果数据库里面有大量这类列,是个头疼的问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9883757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存