SQLServer知識:sqlcmd用法筆記


今天給大家介紹sqlcmd用法筆記,希望對大家能有所幫助!


1、介紹
sqlcmd是一個 Microsoft Win32 命令提示實用工具,可以通過該命令工具實現SQL語句、腳本的執行,並且可以實現腳本任務的自動化。
2、使用場景
2.1 針對大文件腳本的執行
腳本文件如果超過80兆,是不能夠直接在查詢編輯器執行的,會直接溢出報錯,當然如果你的腳本文件超過幾十兆,很有可能會造成SQLServer查詢編輯器卡死、無響應。這個問題可以使用sqlcmd命令來解決。
2.2 確保系統部署的穩定、準確
我們在進行系統部署的時候,由於業務邏輯的調整,經常會有好幾十個腳本文件需要執行,爲了保證腳本執行不出差錯,可以通過sqlcmd命令。來進行腳本文件到線上環境的部署。這樣可以提高系統部署的質量、準確。
3、sqlcmd參數詳解
3.1 語法格式


[{ { -U login_id [ -P password ] } | –E trusted connection }]


[ -N encrypt connection ][ -C trust the server certificate ]
[ -z new password ] [ -Z new password and exit]
[ -S [protocol:]server[\instance_name][,port] ] [ -H wksta_name ] [ -d db_name ]
[ -l login time_out ] [ -A dedicated admin connection]
[ -i input_file ] [ -o output_file ]
[ -f < codepage > | i: < codepage > [ < , o: < codepage > ] ]
[ -u unicode output] [ -r [ 0 | 1 ] msgs to stderr ]
[ -R use client regional settings]
[ -q "cmdline query" ] [ -Q "cmdline query" and exit]
[ -e echo input ] [ -t query time_out ]
[ -I enable Quoted Identifiers ]
[ -v var = "value"...] [ -x disable variable substitution ]
[ -h headers ][ -s col_separator ] [ -w column_width ]
[ -W remove trailing spaces ]
[ -k [ 1 | 2 ] remove[replace] control characters ]
[ -y display_width ] [-Y display_width ]
[ -b on error batch abort] [ -V severitylevel ] [ -m error_level ]
[ -a packet_size ][ -c cmd_end ]
[ -L [ c ] list servers[clean output] ]
[ -p [ 1 ] print statistics[colon format]]
[ -X [ 1 ] ] disable commands, startup script, enviroment variables [and exit]
[ -? show syntax summary]
3.2 參數說明
登錄相關選項
-A
使用專用管理員連接 (DAC) 登錄 SQL Server。此類型連接用於排除服務器故障。此連接僅適用於支持 DAC 的服務器計算機。如果 DAC 不可用,sqlcmd 會生成錯誤消息並退出。-A 選項和-G 選項不支持同時使用。


-C
該開關供客戶端用於將其配置爲隱式表示信任服務器證書且無需驗證。此選項等價於 ADO.NET 選項 trustservercertificate = true。


-d db_name
啓動 sqlcmd 時會發出一個 USE db_name 語句用來指定要操作的數據庫名稱。此選項用來設置 sqlcmd 腳本變量 SQLCMDDBNAME。此參數指定初始數據庫。默認爲您的登錄名的默認數據庫屬性。如果數據庫不存在,則生成錯誤消息且 sqlcmd退出。


-l login_timeout
指定在你嘗試連接到服務器時 sqlcmd 登錄 ODBC 驅動程序的超時時間(以秒爲單位)。此選項設置 sqlcmd 腳本變量 SQLCMDLOGINTIMEOUT。登錄到 sqlcmd 的默認超時時間爲 8 秒。當使用 -G 選項連接到 SQL 數據庫或 SQL 數據倉庫並使用 Azure Active Directory 進行身份驗證時,建議超時值至少爲 30 秒。登錄超時必須是介於 0 和 65534 之間的數字。如果提供的值不是數值或不在此範圍內, sqlcmd 將生成錯誤消息。當值設置爲 0 時,則允許無限制等待。


-E
使用信任連接而不是用戶名和密碼登錄 SQL Server服務。默認情況下,如果未指定 -E , sqlcmd 將使用信任連接選項。


-E 選項會忽略可能的用戶名和密碼環境變量設置,例如 sqlcmdpassword。如果將 -E 選項與 -U 選項或 -P 選項一起使用,將生成錯誤消息。


-g
將列加密設置設爲 Enabled。有關詳細信息,請參閱 Always Encrypted。僅支持存儲在 Windows 證書存儲中的主密鑰。-g 開關至少需要 sqlcmd 版本 13.1。若要確定你的版本,請執行 sqlcmd -?。


-G
當連接到 SQL 數據庫或 SQL 數據倉庫時,客戶端將使用此開關指定該用戶使用 Azure Active Directory 身份驗證來進行身份驗證。此選項設置 sqlcmd 腳本變量 SQLCMDUSEAAD = true。-G 開關至少需要 sqlcmd 版本 13.1。若要確定你的版本,請執行 sqlcmd -?。有關詳細信息,請參閱 使用 Azure Active Directory 身份驗證連接到 SQL 數據庫或 SQL 數據倉庫。-A 選項不支持使用-G 選項。
選項僅適用於 Azure SQL 數據庫 和 Azure 數據倉庫。


-H workstation_name
工作站的名稱。此選項設置 sqlcmd 腳本變量 SQLCMDWORKSTATION。工作站名稱列出在 sys.sysprocesses 目錄視圖的 hostname 列中,並且可使用存儲過程 sp_who返回。如果不指定此選項,則默認爲當前計算機名稱。此名稱可用來標識不同的 sqlcmd 會話。


-j 將原始錯誤消息輸出到界面上。


-K application_intent
連接到服務器時聲明應用程序工作負荷類型。目前唯一支持的值是 ReadOnly。如果未指定 -K ,sqlcmd 實用工具將不支持連接到 AlwaysOn 可用性組中的次要副本。有關詳細信息,請參閱活動次要副本:可讀次要副本(AlwaysOn 可用性組)


-M multisubnet_failover
在連接到 SQL Server 可用性組或 SQL Server 故障轉移羣集實例的可用性組偵聽程序時,應始終指定 -M。-M 將爲(當前)活動服務器提供更快的檢測和連接。如果不指定 –M ,則 -M 處於關閉狀態。有關詳細信息 [!包括ssHADR,創建和配置的可用性組的(SQL Server),故障轉移羣集和 Alwayson 可用性組 (SQL Server),並活動次要副本:可讀次要副本 (Alwayson 可用性組)。


-N
此開關供客戶端用於請求加密連接。


-P password
用戶指定的密碼。密碼是區分大小寫的。如果使用了 -U 選項而未使用 -P 選項,並且未設置 SQLCMDPASSWORD 環境變量,則 sqlcmd 會提示用戶輸入密碼。我們不建議使用 null 密碼,但您可以通過連續雙引號一對用於參數值指定 null 密碼:


-P ""
建議使用強密碼。
如果將 -P 選項與 -E 選項一起使用,將生成錯誤消息。
如果 -P 選項後有多個參數,將生成錯誤消息並退出程序。
-S [協議:]server[\instance_name] [,* *端口]
指定要連接的 SQL Server 實例。它設置 sqlcmd 腳本變量 SQLCMDSERVER。
指定 server_name 可連接到該服務器計算機上的 SQL Server 默認實例。指定要連接到該服務器計算機上 SQL Server 命名實例的 server_name [ \instance_name ]。如果不指定服務器,sqlcmd 將連接到本地計算機上 SQL Server 的默認實例。從網絡上的遠程計算機執行 sqlcmd 時,此選項是必需的。
-U login_id
登錄名或包含的數據庫用戶名。對於包含的數據庫用戶,必須提供數據庫名稱選項 (-d)。
-z new_password
更改密碼:
sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rd
-Z new_password
更改密碼並退出:
sqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd
4、sqlcmd 示例說明
4.1 登錄服務器
格式:sqlcmd -S 服務器名稱 -U 帳戶 -P 密碼
示例:sqlcmd -S "127.0.0.1" -U "sa" -P "sa"
4.2 直接執行SQL腳本
格式:sqlcmd -S 服務器名稱 -U 帳戶 -P 密碼 -d 數據庫 -i SQL腳本
示例:sqlcmd -S "127.0.0.1" -U "sa" -P "sa" -d "MyDB" -i "D:\test.sql" --執行腳本文件
sqlcmd -S "127.0.0.1" -U "sa" -P "sa" -d "MyDB" -i "select * from UserInfo" -- 直接執行sql語句


IT技術分享社區


個人博客網站:https://programmerblog.xyz


文章推薦 程序員效率:畫流程圖常用的工具 程序員效率:整理常用的在線筆記軟件 遠程辦公:常用的遠程協助軟件,你都知道嗎? 51單片機程序下載、ISP及串口基礎知識 硬件:斷路器、接觸器、繼電器基礎知識





本文分享自微信公衆號 - IT技術分享社區(gh_a27c0758eb03)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章