在 Ubuntu 上“导入 SQL Server”一般有两种常见理解:
下面分别说明。
Microsoft 提供了 SQL Server for Linux。
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/mssql-server-2022.list)"
sudo apt update
版本可换成
2019/2022
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
按提示选择:
sa 密码sudo systemctl status mssql-server
sudo apt install -y mssql-tools unixodbc-dev
sqlcmd -S localhost -U sa -P '你的密码'
测试:
SELECT @@VERSION;
GO
如果你有一个 xxx.sql 文件:
sqlcmd -S localhost -U sa -P '密码' -d 数据库名 -i xxx.sql
示例:
sqlcmd -S localhost -U sa -P 'P@ssw0rd' -d testdb -i data.sql
sudo cp db.bak /var/opt/mssql/data/
sudo chown mssql:mssql /var/opt/mssql/data/db.bak
sqlcmd -S localhost -U sa -P '密码'
RESTORE DATABASE testdb
FROM DISK = '/var/opt/mssql/data/db.bak'
WITH MOVE 'logical_data' TO '/var/opt/mssql/data/testdb.mdf',
MOVE 'logical_log' TO '/var/opt/mssql/data/testdb.ldf';
GO
逻辑名可用:
RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/data/db.bak';
只需在 Ubuntu 上用 sqlcmd 连接远程:
sqlcmd -S 192.168.1.10,1433 -U sa -P '密码' -i data.sql
1433 端口、防火墙.bak 必须 mssql 用户可读UTF-8如果你能补充:
.sql / .bak)我可以给你更精确的命令。