zoukankan      html  css  js  c++  java
  • 从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

  • 相关阅读:
    桐花万里python路-基础篇-01-历史及进制
    linux-tar归档文件
    python-常识
    目录权限修改
    linux常用命令
    battery-historian 使用方法
    cp --复制命令
    adb与bat混用启动与杀死应用程序
    monkey 命令
    INSERT INTO SELECT 语句
  • 原文地址:https://www.cnblogs.com/fishparadise/p/8058085.html
Copyright © 2011-2022 走看看