MSSQL数据库高版本迁移到低版本

Posted 小破天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSSQL数据库高版本迁移到低版本相关的知识,希望对你有一定的参考价值。

起因是因为客户要把系统从阿里云迁移到本地服务器,阿里云上的数据库版本是MSSQL2016,客户提供的服务器是Server2008R2的,问题就来了,Server2008不支持2016版本,最后只能装的2012版本,那就需要从2016迁移到2012.

过程是一波三折,网上流传选择一下兼容模式,如下图

然后再去备份,不知道别人是怎么成功的或者是他们自己也没有成功,我反正最后还是报错,低版本不支持高版本。

最后没本法只能采用生成架构跟数据的脚本来进行导入了

好吧,好在我们数据量还不是很大,sql文件导出来也就不到1g。

貌似100M以上的sql文件在manager studio里面是会报内存不足的,解决的办法其实很简单,使用cmd下的osql命令,多大都不怕,唯一担心的只是时间长短而已。

osql –S localhost –d mydb –E –i D:\\bf.sql  搞定


1、使用osql执行单个 Transact-SQL 语句

      在键入cmd与下面这一个类似的命令:

    osql -E -q "Transact-SQL statement"  

    例如:sql -E -q "use myDB select * from myTable"

    其中 -E 表示使用 Microsoft Windows NT 身份验证。

    也可以使用sa账户,具体可以看看上面的命令!

    而-q 表示运行 Transact-SQL 语句,但是在查询结束时不退出 osql。

    如要运行 Transact-SQL 语句并退出 osql,请使用 -Q 参数来代替 -q。

2、使用osql执行一个大脚本文件

     将该工具指向一个脚本文件,步骤:

    a.创建一个包含一批 Transact-SQL 语句的脚本文件(如 myfile.sql)。

    b.打开命令提示符,键入与下面类似的一个命令,然后按 ENTER 键:

    osql -E -i input_file

    其中input_file 是脚本文件及其完整路径。例如,如果脚本文件 myfile.sql 在 C:\\users文件夹中,

    请将参数 myfile 替换为 C:\\users\\myfile.sql。

    该脚本文件的运行结果将出现在控制台窗口中。

    如果您想将运行结果定向到一个文件,请向上述命令中添加 -o output_file 参数。例如:

    osql -E -i input_file -o output_file

    其中output_file 是输出文件及其完整路径。

 

小插曲:过程中遇到无法对 数据库\'UDS\' 执行 删除,因为它正用于复制。 (.Net SqlClient Data Provider)

解决方案记录一下:

sp_removedbreplication \'UDS\'

 DROP DATABASE UDS

 

以上是关于MSSQL数据库高版本迁移到低版本的主要内容,如果未能解决你的问题,请参考以下文章

迁移MSSql Db - 来自SQL Server 2008 R2 Enterprise备份可以在SQL Server 2008 R2 Express版本中还原

php_mssql.dll 支持 php 版本大于 >= 5.3

Mssql 2012 与 PHP & Mysql 到 Mssql 迁移

仅将表数据从 MSSQL 迁移到 MySQL

PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库

MSSQL 到 MySQL 迁移 - UCS-2 代理对的字符编码问题,如何从 MSSQL 数据库中删除这些?