確保源SQL Server與目標CentOS服務器上的SQL Server版本兼容(如SQL Server 2017及以上版本支持跨平臺遷移);檢查兩臺服務器之間的網絡連接,確??梢酝ㄟ^TCP/IP通信(默認端口1433)。
在目標CentOS服務器上安裝SQL Server客戶端工具(如sqlcmd、bcp)和ODBC驅動,用于數據遷移和連接:
# 添加Microsoft包倉庫
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
# 安裝mssql-tools(包含sqlcmd、bcp)和unixODBC-devel
sudo yum install -y mssql-tools unixODBC-devel
# 配置sqlcmd環境變量(生效當前終端)
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
source ~/.bash_profile
安裝SQL Server實例(若未安裝):
# 安裝依賴
sudo yum install -y libatomic
# 添加SQL Server倉庫(以2022版為例)
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
# 安裝SQL Server
sudo yum install -y mssql-server
# 配置實例(按提示設置SA密碼)
sudo /opt/mssql/bin/mssql-conf setup
# 啟動服務并設置開機自啟
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
# 開放防火墻端口
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
使用SQL Server Management Studio(SSMS)或T-SQL命令備份數據庫:
.bak。BACKUP DATABASE [YourDatabaseName]
TO DISK = N'/path/to/source/backup/YourDatabaseName.bak'
WITH NOFORMAT, NOINIT, NAME = N'YourDatabaseName-Full Backup', STATS = 10;
使用scp(安全拷貝)將.bak文件從源服務器復制到目標CentOS服務器:
scp /path/to/source/backup/YourDatabaseName.bak user@target_centos_ip:/path/to/target/backup/
在目標服務器上使用T-SQL命令還原數據庫(需調整文件路徑為CentOS下的有效路徑):
RESTORE DATABASE [YourDatabaseName]
FROM DISK = N'/path/to/target/backup/YourDatabaseName.bak'
WITH FILE = 1,
MOVE N'YourDatabaseName_Data' TO N'/var/opt/mssql/data/YourDatabaseName.mdf', -- 數據文件路徑
MOVE N'YourDatabaseName_Log' TO N'/var/opt/mssql/data/YourDatabaseName.ldf', -- 日志文件路徑
NOUNLOAD, STATS = 10;
bcp導出/導入數據bcp "SELECT * FROM YourDatabaseName.dbo.YourTableName" queryout /path/to/export/YourTableName.csv -c -t, -T -S source_sql_server_ip
bcp YourDatabaseName.dbo.YourTableName in /path/to/export/YourTableName.csv -c -t, -T -S target_centos_ip
(-T表示使用可信連接,若用SQL認證需替換為-U username -P password)
sqlpackage遷移(適用于結構化數據)sqlpackage是微軟提供的工具,支持將數據庫導出為.bacpac文件(包含結構和數據),適用于跨平臺遷移:
sudo yum install -y https://packages.microsoft.com/config/rhel/8/prod.repo
sudo yum install -y sqlpackage
sqlpackage export --server-name source_sql_server_ip --database-name YourDatabaseName --username sa --password YourPassword --output-file /path/to/export/YourDatabaseName.bacpac
sqlpackage import --server-name target_centos_ip --database-name TargetDatabaseName --username sa --password YourPassword --file /path/to/export/YourDatabaseName.bacpac
SELECT COUNT(*) FROM YourTableName)。Server=target_centos_ip,1433;Database=YourDatabaseName;User Id=username;Password=password;),測試應用功能是否正常。sys.dm_exec_query_stats視圖監控查詢性能,確保遷移后性能符合預期。sa或自定義賬戶)具有足夠的權限(如db_owner)執行備份、還原操作。.ldf)大小,若過大可通過DBCC SHRINKFILE命令收縮。/var/opt/mssql/data/),并確保SQL Server服務賬戶(mssql)對該目錄有讀寫權限。