wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc;sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/ubuntu/20.04/mssql-server-2022 main";sudo apt-get update && sudo apt-get install -y mssql-server;sudo /opt/mssql/bin/mssql-conf setup;sudo systemctl start mssql-server && sudo systemctl enable mssql-server;sudo apt-get install -y mssql-tools unixodbc-dev,并将工具路径添加至环境变量:echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc && source ~/.bashrc。D:\backups\YourDB.bak),生成.bak文件。mysqldump -u root -p YourDB > YourDB.sql,导出表结构和数据。sqlcmd导出数据为CSV或SQL文件,例如:sqlcmd -S localhost -U SA -Q "SELECT * FROM YourTable" -o YourTable.csv -s ","。使用安全文件传输工具(如SCP、SFTP)将导出的文件从源服务器复制到Ubuntu服务器。例如,从Windows传输.bak文件到Ubuntu:
scp D:\backups\YourDB.bak username@ubuntu_ip:/home/username/backups/
或从Linux源传输.sql文件:
scp YourDB.sql username@ubuntu_ip:/home/username/backups/。
sqlcmd执行RESTORE命令,需指定逻辑文件名(可通过RESTORE FILELISTONLY FROM DISK='/path/to/backup.bak'查看)和目标路径(如/var/opt/mssql/data/):RESTORE DATABASE YourDB
FROM DISK = '/home/username/backups/YourDB.bak'
WITH MOVE 'YourDB_Data' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf',
STATS = 5, REPLACE, RECOVERY;
其中,REPLACE覆盖现有数据库,RECOVERY使数据库可用。sqlcmd执行SQL脚本:sqlcmd -S localhost -U SA -i /home/username/backups/YourDB.sql。bcp(Bulk Copy Program)工具提高效率。例如,导出数据:bcp YourDB.dbo.YourTable out /home/username/backups/YourTable.dat -c -t, -S localhost -U SA -P 'YourPassword';bcp YourDB.dbo.YourTable in /home/username/backups/YourTable.dat -c -t, -S localhost -U SA -P 'YourPassword'。SELECT COUNT(*) FROM YourTable)、关键字段值(如主键、唯一约束字段),确保无丢失或错误。Server=ubuntu_ip;Database=YourDB;User Id=SA;Password=YourPassword;),确保应用可正常访问数据。max server memory、并行度max degree of parallelism),优化查询性能。注意事项:
ntext在Ubuntu SQL Server中需转换为nvarchar(max));