從Windows遷移SQL Server到Linux

来源:http://www.cnblogs.com/fishparadise/archive/2017/12/19/8058085.html
-Advertisement-
Play Games

前一篇博客關於SQL Server on Linux的安裝,地址:http://www.cnblogs.com/fishparadise/p/8057650.html,現在測試把Windows平臺下的一個資料庫遷移到Linux平臺下。 1. 環境 Windows: Microsoft SQL Ser ...


前一篇博客關於SQL Server on Linux的安裝,地址:http://www.cnblogs.com/fishparadise/p/8057650.html,現在測試把Windows平臺下的一個資料庫遷移到Linux平臺下。

 

1. 環境

Windows: Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)
Linux: CentOS 7.4,SQL Server 2017 (RC2) - 14.0.900.75 (X64)

 

2. 在Windows下創建備份

在Windows下使用SSMS完整備份資料庫

BACKUP DATABASE db1 TO DISK = 'D:\sql_bak\db1\db1.bak'
WITH
COMPRESSION, INIT, SKIP, NAME = 'full_backup',STATS = 1
GO

code-1: 備份資料庫

 

3. 複製備份文件到Liunx

把備份文件複製到Linux,如放到/tmp/下。可以用FTP,或rz等工具。


4. 在Linux下還原資料庫

使用終端(如Xshell)連接到Linux。預設數據文件目錄在/var/opt/mssql/data/下,如果要指定數據目錄的話,可創建自定義目錄並賦予相應許可權。

mkdir -p /data/mssql_data
chown -R mssql:mssql /data/mssql_data

code-2: 創建目錄並修改許可權



使用sqlcmd連接到資料庫

sqlcmd -S localhost -U sa

code-3: 連接到資料庫

 

RESTORE DATABASE db1 FROM DISK = '/tmp/db1.bak'
WITH
MOVE 'db1' TO '/data/mssql_data/db1.mdf',
MOVE 'db1_log' TO '/data/mssql_data/db1_log.ldf',
STATS = 1, REPLACE, RECOVERY
GO

code-4: 還原資料庫

 


註意:不能複製並粘貼整個多行命令一次,只能複製每個行後按 enter 鍵。最後以GO結束,回車後執行。

當然,也可以把上面的還原資料庫的命令寫到一個文件,再使用sqlcmd執行腳本方式來還原資料庫。

sqlcmd -S localhost -U sa -i '/data/mssql_data/restore_db.txt'

code-5: 執行腳本文件還原資料庫


5. 查詢驗證

在Linux下的sqlcmd查詢:

Figure-1: sqlcmd下的查詢

 

 

Figure-2: SSMS下db1資料庫的屬性(Files)

 

在Windows的SSMS連接到Linux下的資料庫,發現資料庫文件的路徑不是Linux的正斜杠,而是Windows的反斜杠;Compatibility level也無法修改。

 

Figure-2: SSMS下db1資料庫的屬性(Options)

 

 

Figure-2: SSMS下的查詢



 

6. 參考

https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-migrate-restore-database

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、tar命令 tar命令用於打包,解包。 gzip命令用於壓縮,解壓縮。 bzip2命令用於壓縮,解壓縮。 這三個是在linux中常用的,還有一些不常用的。 tar打包: tar解包: gzip壓縮tar打包: gzip解壓縮tar解包: bzip2壓縮tar打包: bzip2解壓縮tar解包: ...
  • 一、grep命令 grep(global search regular expression(RE) and print out the line,全面搜索正則表達式並把行列印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。 grep的工作方式是這樣的,它在一個或多 ...
  • 一、cp命令 Linux中的複製命令。 複製文件: 複製目錄: 二、mv命令 mv命令可以作為Linux中的剪切命令,也可以給文件或者文件夾重命名。 剪切文件: 剪切文件夾: 文件重命名: 文件夾重命名: 三、註意 cp文件夾時需要-r參數,mv文件夾時不需要-r參數。 ...
  • 電腦最重要的功能單元之一是Memory。Memory是眾多存儲單元的集合,為了使CPU準確地找到存儲有某個信息的存儲單元,必須為這些單元分配一個相互區別的“身份證號”,這個“身份證號”就是地址編碼。在嵌入式處理器內,集成了多種類型的Memory,通常,我們稱同一類型的Memory為一個Memory ...
  • 一、軟鏈接 相當於windows的快捷方式,當源文件不存在時,軟鏈接失效。 創建軟鏈接: 刪除源文件,軟鏈接失效: 二、硬鏈接 創建硬鏈接: 刪除源文件,硬鏈接仍然可用: 三、總結 鏈接是指向文件名,當指向的文件名字刪除的時候,就找不到源文件了。硬鏈接是指向文件本身,刪除一個文件名字,還是可以找到源 ...
  • 一、yum安裝 1.1 修改yum源 1.2 添加內核參數 預設配置下,在 CentOS 使用 Docker 可能會碰到下麵的這些警告信息: 1.3 添加內核配置參數以啟用這些功能 然後重新載入 sysctl.conf 即可 1.4 建立docker用戶 1.5 鏡像加速 對於使用 systemd  ...
  • 一、pwd命令 顯示整個路徑名: 二、cd命令 切換到其他路徑(相對路徑方式): 切換到其他路徑(絕對路徑方式): 三、根目錄 在linux中,'/'斜杠代表根目錄: 四、家目錄 在linux中,'~'波浪線代表家目錄: 五、上一次所在目錄: 在linux中,'-'橫杠快捷切換到上次所在的路徑: 六 ...
  • 一、ls命令 用於查看目錄下的文件信息。 ls 當前目錄下都有哪些文件: -l選項,顯示當前目錄下文件的詳細信息: -a選項,顯示當前目錄下所有文件,包括隱藏文件(名字以'.'開頭): -al選項,顯示當前目錄下所有文件的詳細信息: -alh,顯示當前目錄下所有文件的詳細信息,文件的大小易讀: 指定 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...