1、安装SQL Server
要在 Ubuntu 上配置 SQL Server,请在终端中运行以下命令以安装 mssql-server 包 。
-
导入公共存储库 GPG 密钥:
wget -qO- /keys/ | sudo apt-key add -
-
注册 Microsoft SQL Server Ubuntu 存储库:
sudo add-apt-repository "$(wget -qO- /config/ubuntu/16.04/)"
-
运行以下命令,安装 SQL Server:
sudo apt-get update
sudo apt-get install -y mssql-server
-
包安装完成后,运行 mssql-conf setup,按照提示设置 SA 密码并选择版本 。
sudo /opt/mssql/bin/mssql-conf setup
-
完成配置后,验证服务是否正在运行:
systemctl status mssql-server --no-pager
-
如果计划远程连接,可能还需要在防火墙上打开 SQL Server TCP 端口(默认值为 1433)。
此时,SQL Server 已在 Ubuntu 计算机上运行,随时可以使用!
2、安装 SQL Server 命令行工具
要创建数据库,需要使用可在 SQL Server 上运行 Transact-SQL 语句的工具进行连接。 以下步骤安装 SQL Server 命令行工具:sqlcmd 和 bcp。
通过下列步骤在 Ubuntu 上安装 mssql-tools 。
-
导入公共存储库 GPG 密钥。
curl /keys/ | sudo apt-key add -
-
注册 Microsoft Ubuntu 存储库。
curl /config/ubuntu/16.04/ | sudo tee /etc/apt//
-
更新源列表,并使用 unixODBC 开发人员包运行安装命令。
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
-
可选:向 bash shell 中的 PATH 环境变量添加 /opt/mssql-tools/bin/ 。
要使 sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
要使 sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH :echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc
3、可以使用windows上的SQL Server工具连接到Linux上的SQL实例,操作方式与连接到任何远程SQL Server实例一样。
4、 在windows机器上为linux服务器还原数据库
默认的mssql数据库放置路径为:/var/opt/mssql/data下,我们使用windows上的SQLServer工具来还原数据库到linux服务器上,需要先将bak文件放置到 /var/opt/mssql/data 目录下,然后正常进行还原就可以了。
5、 在 Linux 上还原数据库
/zh-cn/sql/linux/sql-server-linux-migrate-restore-database?view=sql-server-2017
要还原数据库备份,可以使用 RESTORE DATABASE Transact-SQL (TQL) 命令。
备注:需要先将bak文件放置到/var/opt/mssql目录下
下列步骤使用 sqlcmd 工具。 如果尚未安装 SQL Server 工具,请参阅在 Linux 上安装 SQL Server 命令行工具。
5.1
在同一终端中,启动 sqlcmd 。 下面的示例以 SA 用户身份连接到本地 SQL Server 。 出现提示时输入密码,或使用 -P 参数指定密码 。sqlcmd -S localhost -U SA
5.2
在 >1 提示符下,输入以下 RESTORE DATABASE 命令,并在每行后按 Enter(无法同时复制和粘贴整个多行命令)。 将出现的所有 YourDB 替换为数据库的名称。
1> RESTORE DATABASE idr_rdb
2> FROM DISK='/var/opt/mssql/backup/idr_rdb_Full_20190819.bak'
3> WITH MOVE 'idr_rdb_Data' TO '/var/opt/mssql/data/idr_rdb_Data.mdf',
4> MOVE 'idr_rdb_Log' TO '/var/opt/mssql/data/idr_rdb_Log.ldf'
5> GO
- 1
- 2
- 3
- 4
- 5
Processed 656 pages for database ‘idr_rdb’, file ‘idr_rdb_Data’ on file 1.
Processed 6 pages for database ‘idr_rdb’, file ‘idr_rdb_Log’ on file 1.
Converting database ‘idr_rdb’ from version 782 to the current version 869.
Database ‘idr_rdb’ running the upgrade step from version
如果还原失败,可以先list一下bak文件中包含的文件,并修改对应的文件后再尝试还原。
可以列出备份中包含的所有文件:
1> RESTORE FILEISONLY FROM DISK='/var/opt/mssql/backup/idr_rdb_Full_20190819.bak'
2> GO
- 1
- 2
应会看到如下所示的列表(仅列出前两列):
LogicalName
PhysicalName
+++++++++++++++++++++++++++++++++++++++
idr_rdb_Data E:\Program Files\Microsoft SQL Server\\MSSQL\DATA\idr_rdb_Data.MDF D PRIMARY 5832704 35184372080640 1 0 0 0B6B3E68-C573-44DD-BB8B-6195C9ACDAC6 0 0 5373952 512 1 NULL 48000000102000189 9BC28EB6-EE18-4EB0-ABBB-9247F3F239E1 0 1 NULL NULL
idr_rdb_Log E:\Program Files\Microsoft SQL Server\\MSSQL\DATA\idr_rdb_Log.LDF L NULL 9437184 2199023255552 2 0 0 68CAB742-B79B-44C2-AE83-7A867437FA0D 0 0 0 512 0 NULL 0 00000000-0000-0000-0000-000000000000 0 1 NULL NULL
+++++++++++++++++++++++++++++++++++++++
通过列出服务器上的所有数据库来验证还原。 应该会列出已还原的数据库。
1> select name from sysdatabases where dbid>4 //(过滤系统表)
2> go
- 1
- 2
name
+++++++++++++++++++++++++++++++++++++++
Maintenance_rdb
idr_history_rdb
idr_rdb
+++++++++++++++++++++++++++++++++++++++
5.3
在已迁移的数据库上运行其他查询。 以下命令将上下文切换到 YourDB 数据库,并从其一个表中选择行。
USE YourDB
SELECT * FROM YourTable
GO
- 1
- 2
- 3
5.4
使用 sqlcmd 完成后,键入 exit。