• 从Windows迁移SQL Server到Linux


    前一篇博客关于SQL Server on Linux的安装,地址:http://www.cnblogs.com/fishparadise/p/8057650.html,现在测试把Windows平台下的一个数据库迁移到Linux平台下。

    1. 环境

    Windows: Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)
    Linux: CentOS 7.4,SQL Server 2017 (RC2) - 14.0.900.75 (X64)

    2. 在Windows下创建备份

    在Windows下使用SSMS完整备份数据库

    BACKUP DATABASE db1 TO DISK = 'D:sql_bakdb1db1.bak'
    WITH
    COMPRESSION, INIT, SKIP, NAME = 'full_backup',STATS = 1
    GO

    code-1: 备份数据库

    3. 复制备份文件到Liunx

    把备份文件复制到Linux,如放到/tmp/下。可以用FTP,或rz等工具。


    4. 在Linux下还原数据库

    使用终端(如Xshell)连接到Linux。默认数据文件目录在/var/opt/mssql/data/下,如果要指定数据目录的话,可创建自定义目录并赋予相应权限。

    mkdir -p /data/mssql_data
    chown -R mssql:mssql /data/mssql_data

    code-2: 创建目录并修改权限



    使用sqlcmd连接到数据库

    sqlcmd -S localhost -U sa

    code-3: 连接到数据库

    RESTORE DATABASE db1 FROM DISK = '/tmp/db1.bak'
    WITH
    MOVE 'db1' TO '/data/mssql_data/db1.mdf',
    MOVE 'db1_log' TO '/data/mssql_data/db1_log.ldf',
    STATS = 1, REPLACE, RECOVERY
    GO

    code-4: 还原数据库


    注意:不能复制并粘贴整个多行命令一次,只能复制每个行后按 enter 键。最后以GO结束,回车后执行。

    当然,也可以把上面的还原数据库的命令写到一个文件,再使用sqlcmd执行脚本方式来还原数据库。

    sqlcmd -S localhost -U sa -i '/data/mssql_data/restore_db.txt'

    code-5: 执行脚本文件还原数据库


    5. 查询验证

    在Linux下的sqlcmd查询:

     Figure-1: sqlcmd下的查询

     Figure-2: SSMS下db1数据库的属性(Files)

    在Windows的SSMS连接到Linux下的数据库,发现数据库文件的路径不是Linux的正斜杠,而是Windows的反斜杠;Compatibility level也无法修改。

     Figure-2: SSMS下db1数据库的属性(Options)

    Figure-2: SSMS下的查询



    6. 参考

    https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-migrate-restore-database

  • 相关阅读:
    Working with nil
    Determining Equality of Objects
    NSLog中的%@
    ld
    恢复HDFS误删数据
    一个缓冲区溢出示例
    SpringBoard
    Symbol Table
    feof使用注意
    -g vs -rdynamic
  • 原文地址:https://www.cnblogs.com/fishparadise/p/8058085.html
Copyright © 2020-2023  润新知