mssql-scripter 工具介紹

mssql-scripter 工具介紹

更新於 發佈於 閱讀時間約 9 分鐘

安裝工具

需先安裝 Python 3

pip install mssql-scripter

參數說明

僅列出有使用到的參數及說明,其餘可參考 github:mssql-scripter 

-S , --server           DB伺服器名稱

-d , --database DB名稱

-U , --user 登入DB的使用者名稱
如果不輸入,預設使用 Windows Authentication 登入

-P , --password 登入DB的密碼
可以透過設置環境變數 MSSQL_SCRIPTER_PASSWORD 設定,避免明文

-f , --file-path T-SQL 語法儲存路徑

--file-per-object 由預設將所有指令匯出成1個.sql檔,
改為將每個物件的操作個別匯出成.sql檔。

--data-only 由預設只產出 CREATE schema 的腳本語法,
改為只產出 INSERT 所有資料的腳本語法。

--schema-and-data 由預設只產出 CREATE schema 的腳本語法,
改為產出包含 CREATE schema 和 INSERT 所有資料的腳本語法。

--script-create 編寫物件 CREATE 語句的腳本。

--script-drop 編寫物件 DROP 語句的腳本。

--script-drop-create 編寫物件包含 CREATE 和 DROP 語句的腳本。

--target-server-version 指定輸出的 T-SQL 語法要相容於哪個 SQL Server 版本
2005, 2008, 2008R2, 2012, 2014, 2016, vNext, AzureDB, ...

--exclude-types 要從腳本中排除的指定類型的資料庫物件。

--check-for-existence 在刪除或更改之前檢查具有給定名稱的物件是否存在,
或者在創建之前檢查具有給定名稱的物件不存在。

--exclude-use-database 不生成 USE [DATABASE] 語句。

--display-progress 顯示 mssql-scripter 執行進度

情境範例

情境 1

      1. 使用 Windows (AD) 驗證登入
        位址:192.168.xxx.xxx
      2. 編寫 T-SQL 語法
        資料庫:DBName
        條件:僅含結構描述
      3. 將 T-SQL 語法儲存
        檔名:schema.sql
mssql-scripter -S '192.168.xxx.xxx' -d 'DBName' > 'schema.sql'


情境 2

      1. 使用 SQL Server 驗證登入
        位址:192.168.xxx.xxx
        名稱:admin
        密碼:S{L5ENHnD~ZD
      2. 編寫「僅含資料」的 T-SQL 語法
        資料庫:DBName
        條件:僅含資料
      3. 將 T-SQL 語法儲存
        路徑:D:\mssql-scripter\data.sql
mssql-scripter -S '192.168.xxx.xxx' -U 'admin' -P 'S{L5ENHnD~ZD' -d 'DBName' --data-only -f 'D:\mssql-scripter\data.sql'
註:可透過設置 MSSQL_SCRIPTER_PASSWORD 環境變數來避免密碼明文
SET MSSQL_SCRIPTER_PASSWORD='S{L5ENHnD~ZD'
mssql-scripter -S '192.168.xxx.xxx' -U 'admin' -d 'DBName' --data-only -f 'D:\mssql-scripter\data.sql'


情境 3

      1. 使用 Windows (AD) 驗證登入
        位址:192.168.xxx.xxx
      2. 編寫 T-SQL 語法
        資料庫:DBName
        條件1:含結構描述
        條件2:每個物件 1 個檔案
      3. 將 T-SQL 語法儲存
        路徑:D:\mssql-scripter\data
      4. 顯示執行進度
mssql-scripter -S '192.168.xxx.xxx' -d 'DBName' --schema-and-data --file-per-object -f 'D:\mssql-scripter\data' --display-progress
註1:--file-per-object 將每個物件個別建立檔案,可作為資料庫版控用途
註2:-f 給定的資料夾路徑要確保沒有任何檔案存在,否則無法執行


情境 4

      1. 使用 Windows (AD) 驗證登入
        位址:192.168.xxx.xxx
      2. 編寫 T-SQL 語法
        資料庫:DBName
        條件1:含結構描述與資料
        條件2:每個物件 1 個檔案
        條件3:包含 DROP 與 CREATE 語句
        條件4:排除 DATABASE 類型的物件
        條件5:避免產生 USE [DBName] 語句
      3. 將 T-SQL 語法儲存
        路徑:D:\mssql-scripter\data_
      4. 顯示執行進度
mssql-scripter -S '192.168.xxx.xxx' -d 'DBName' --schema-and-data --file-per-object -f 'D:\mssql-scripter\data_' --script-drop-create --exclude-types 'DATABASE' --exclude-use-database --display-progress


情境 5

      1. 使用 Windows (AD) 驗證登入
        位址:192.168.xxx.xxx
      2. 編寫 T-SQL 語法
        資料庫:DBName
        條件1:含結構描述與資料
        條件2:每個物件 1 個檔案
        條件3:包含 DROP 與 CREATE 語句
        條件4:DROP 與 CREATE 語句加入是否存在要刪除物件的判斷
        條件5:排除 DATABASE 類型的物件
        條件6:避免產生 USE [DBName] 語句
      3. 將 DROP T-SQL 語法儲存
        路徑:D:\mssql-scripter\app_v1\drop
      4. 將 CREATE T-SQL 語法儲存
        路徑:D:\mssql-scripter\app_v1\create
mssql-scripter -S '192.168.xxx.xxx' -d 'DBName' --schema-and-data --file-per-object -f 'D:\mssql-scripter\app_v1\drop' --script-drop --check-for-existence --exclude-types 'DATABASE' --exclude-use-database
mssql-scripter -S '192.168.xxx.xxx' -d 'DBName' --schema-and-data --file-per-object -f 'D:\mssql-scripter\app_v1\create' --script-create --check-for-existence --exclude-types 'DATABASE' --exclude-use-database

參考資料

    1. github:mssql-scripter 
    2. 介紹好用工具:mssql-scripter (自動將完整資料庫匯出成 T-SQL 的神器) 
avatar-img
UN的知識庫
0會員
1內容數
第一次嘗試寫知識、資訊分享型的部落格 不確定效果如何,請大家多多包涵!
留言
avatar-img
留言分享你的想法!