zoukankan      html  css  js  c++  java
  • MSSQL数据库高版本迁移到低版本

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

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

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

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

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

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

    osql –S localhost –d mydb –E –i D:f.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:usersmyfile.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

  • 相关阅读:
    简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他
    "听话"的品格的症状
    PHP中extract()函数的妙用
    分析源码的感悟
    JWT 多网站单点登录,放弃session
    How to use php serialize() and unserialize()
    [转]很好的文章,收藏一下
    Learning from the CakePHP source code
    Learning from the CakePHP source code
    关于PHP的一小段代码求解如下求解"%2$s"
  • 原文地址:https://www.cnblogs.com/xiaopotian/p/6930933.html
Copyright © 2011-2022 走看看