溫馨提示×

SQL Server在CentOS上的數據遷移指南

小樊
44
2025-09-18 03:51:29
欄目: 云計算

SQL Server在CentOS上的數據遷移指南

一、遷移前準備

1. 確認環境兼容性

確保源SQL Server與目標CentOS服務器上的SQL Server版本兼容(如SQL Server 2017及以上版本支持跨平臺遷移);檢查兩臺服務器之間的網絡連接,確??梢酝ㄟ^TCP/IP通信(默認端口1433)。

2. 安裝必要工具

在目標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

3. 準備目標服務器

安裝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

二、數據遷移步驟

方法1:備份還原法(適用于完整數據庫遷移)

1. 備份源數據庫

使用SQL Server Management Studio(SSMS)或T-SQL命令備份數據庫:

  • SSMS:右鍵源數據庫→“任務”→“備份”,選擇備份路徑(如本地磁盤或共享文件夾),格式為.bak。
  • T-SQL(在SSMS中執行):
BACKUP DATABASE [YourDatabaseName] 
TO DISK = N'/path/to/source/backup/YourDatabaseName.bak' 
WITH NOFORMAT, NOINIT, NAME = N'YourDatabaseName-Full Backup', STATS = 10;

2. 傳輸備份文件到目標服務器

使用scp(安全拷貝)將.bak文件從源服務器復制到目標CentOS服務器:

scp /path/to/source/backup/YourDatabaseName.bak user@target_centos_ip:/path/to/target/backup/

3. 還原數據庫到目標SQL Server

在目標服務器上使用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;

方法2:命令行工具遷移(適用于增量或選擇性數據遷移)

1. 使用bcp導出/導入數據

  • 導出數據(從源服務器到CSV文件):
bcp "SELECT * FROM YourDatabaseName.dbo.YourTableName" queryout /path/to/export/YourTableName.csv -c -t, -T -S source_sql_server_ip
  • 導入數據(從CSV文件到目標服務器):
bcp YourDatabaseName.dbo.YourTableName in /path/to/export/YourTableName.csv -c -t, -T -S target_centos_ip

-T表示使用可信連接,若用SQL認證需替換為-U username -P password

2. 使用sqlpackage遷移(適用于結構化數據)

sqlpackage是微軟提供的工具,支持將數據庫導出為.bacpac文件(包含結構和數據),適用于跨平臺遷移:

  • 安裝sqlpackage
sudo yum install -y https://packages.microsoft.com/config/rhel/8/prod.repo
sudo yum install -y sqlpackage
  • 導出BACPAC文件(從源服務器):
sqlpackage export --server-name source_sql_server_ip --database-name YourDatabaseName --username sa --password YourPassword --output-file /path/to/export/YourDatabaseName.bacpac
  • 導入BACPAC文件(到目標服務器):
sqlpackage import --server-name target_centos_ip --database-name TargetDatabaseName --username sa --password YourPassword --file /path/to/export/YourDatabaseName.bacpac

三、遷移后驗證

  1. 檢查數據完整性:在目標數據庫中執行查詢,對比源數據庫的記錄數(如SELECT COUNT(*) FROM YourTableName)。
  2. 驗證應用連接:更新應用程序的連接字符串,指向目標CentOS服務器的SQL Server實例(格式:Server=target_centos_ip,1433;Database=YourDatabaseName;User Id=username;Password=password;),測試應用功能是否正常。
  3. 檢查性能:通過SQL Server Profiler或sys.dm_exec_query_stats視圖監控查詢性能,確保遷移后性能符合預期。

四、注意事項

  • 權限設置:確保目標SQL Server實例的登錄賬戶(如sa或自定義賬戶)具有足夠的權限(如db_owner)執行備份、還原操作。
  • 磁盤空間:目標服務器需預留足夠磁盤空間(至少為源數據庫大小的1.2倍),避免還原失敗。
  • 版本兼容性:若源服務器版本高于目標服務器,需先升級目標服務器版本(如從SQL Server 2019升級到2022),或使用兼容模式還原。
  • 日志文件管理:還原后檢查日志文件(.ldf)大小,若過大可通過DBCC SHRINKFILE命令收縮。
  • 錯誤處理:若還原過程中出現錯誤(如“文件路徑無效”),需修改目標路徑為CentOS下的有效目錄(如/var/opt/mssql/data/),并確保SQL Server服務賬戶(mssql)對該目錄有讀寫權限。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女