SQLServer知识:sqlcmd用法笔记
今天給大家介紹sqlcmd用法筆記,希望對大家能有所幫助!
1、介紹
sqlcmd是一個 Microsoft Win32 命令提示實用工具,可以通過該命令工具實現(xiàn)SQL語句、腳本的執(zhí)行,并且可以實現(xiàn)腳本任務(wù)的自動化。
2、使用場景
2.1 針對大文件腳本的執(zhí)行
腳本文件如果超過80兆,是不能夠直接在查詢編輯器執(zhí)行的,會直接溢出報錯,當(dāng)然如果你的腳本文件超過幾十兆,很有可能會造成SQLServer查詢編輯器卡死、無響應(yīng)。這個問題可以使用sqlcmd命令來解決。
2.2 確保系統(tǒng)部署的穩(wěn)定、準(zhǔn)確
我們在進(jìn)行系統(tǒng)部署的時候,由于業(yè)務(wù)邏輯的調(diào)整,經(jīng)常會有好幾十個腳本文件需要執(zhí)行,為了保證腳本執(zhí)行不出差錯,可以通過sqlcmd命令。來進(jìn)行腳本文件到線上環(huán)境的部署。這樣可以提高系統(tǒng)部署的質(zhì)量、準(zhǔn)確。
3、sqlcmd參數(shù)詳解
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 參數(shù)說明
登錄相關(guān)選項
-A
使用專用管理員連接 (DAC) 登錄 SQL Server。此類型連接用于排除服務(wù)器故障。此連接僅適用于支持 DAC 的服務(wù)器計算機(jī)。如果 DAC 不可用,sqlcmd 會生成錯誤消息并退出。-A 選項和-G 選項不支持同時使用。
-C
該開關(guān)供客戶端用于將其配置為隱式表示信任服務(wù)器證書且無需驗證。此選項等價于 ADO.NET 選項 trustservercertificate = true。
-d db_name
啟動 sqlcmd 時會發(fā)出一個 USE db_name 語句用來指定要操作的數(shù)據(jù)庫名稱。此選項用來設(shè)置 sqlcmd 腳本變量 SQLCMDDBNAME。此參數(shù)指定初始數(shù)據(jù)庫。默認(rèn)為您的登錄名的默認(rèn)數(shù)據(jù)庫屬性。如果數(shù)據(jù)庫不存在,則生成錯誤消息且 sqlcmd退出。
-l login_timeout
指定在你嘗試連接到服務(wù)器時 sqlcmd 登錄 ODBC 驅(qū)動程序的超時時間(以秒為單位)。此選項設(shè)置 sqlcmd 腳本變量 SQLCMDLOGINTIMEOUT。登錄到 sqlcmd 的默認(rèn)超時時間為 8 秒。當(dāng)使用 -G 選項連接到 SQL 數(shù)據(jù)庫或 SQL 數(shù)據(jù)倉庫并使用 Azure Active Directory 進(jìn)行身份驗證時,建議超時值至少為 30 秒。登錄超時必須是介于 0 和 65534 之間的數(shù)字。如果提供的值不是數(shù)值或不在此范圍內(nèi), sqlcmd 將生成錯誤消息。當(dāng)值設(shè)置為 0 時,則允許無限制等待。
-E
使用信任連接而不是用戶名和密碼登錄 SQL Server服務(wù)。默認(rèn)情況下,如果未指定 -E , sqlcmd 將使用信任連接選項。
-E 選項會忽略可能的用戶名和密碼環(huán)境變量設(shè)置,例如 sqlcmdpassword。如果將 -E 選項與 -U 選項或 -P 選項一起使用,將生成錯誤消息。
-g
將列加密設(shè)置設(shè)為 Enabled。有關(guān)詳細(xì)信息,請參閱 Always Encrypted。僅支持存儲在 Windows 證書存儲中的主密鑰。-g 開關(guān)至少需要 sqlcmd 版本 13.1。若要確定你的版本,請執(zhí)行 sqlcmd -?。
-G
當(dāng)連接到 SQL 數(shù)據(jù)庫或 SQL 數(shù)據(jù)倉庫時,客戶端將使用此開關(guān)指定該用戶使用 Azure Active Directory 身份驗證來進(jìn)行身份驗證。此選項設(shè)置 sqlcmd 腳本變量 SQLCMDUSEAAD = true。-G 開關(guān)至少需要 sqlcmd 版本 13.1。若要確定你的版本,請執(zhí)行 sqlcmd -?。有關(guān)詳細(xì)信息,請參閱 使用 Azure Active Directory 身份驗證連接到 SQL 數(shù)據(jù)庫或 SQL 數(shù)據(jù)倉庫。-A 選項不支持使用-G 選項。
選項僅適用于 Azure SQL 數(shù)據(jù)庫 和 Azure 數(shù)據(jù)倉庫。
-H workstation_name
工作站的名稱。此選項設(shè)置 sqlcmd 腳本變量 SQLCMDWORKSTATION。工作站名稱列出在 sys.sysprocesses 目錄視圖的 hostname 列中,并且可使用存儲過程 sp_who返回。如果不指定此選項,則默認(rèn)為當(dāng)前計算機(jī)名稱。此名稱可用來標(biāo)識不同的 sqlcmd 會話。
-j 將原始錯誤消息輸出到界面上。
-K application_intent
連接到服務(wù)器時聲明應(yīng)用程序工作負(fù)荷類型。目前唯一支持的值是 ReadOnly。如果未指定 -K ,sqlcmd 實用工具將不支持連接到 AlwaysOn 可用性組中的次要副本。有關(guān)詳細(xì)信息,請參閱活動次要副本:可讀次要副本(AlwaysOn 可用性組)
-M multisubnet_failover
在連接到 SQL Server 可用性組或 SQL Server 故障轉(zhuǎn)移群集實例的可用性組偵聽程序時,應(yīng)始終指定 -M。-M 將為(當(dāng)前)活動服務(wù)器提供更快的檢測和連接。如果不指定 –M ,則 -M 處于關(guān)閉狀態(tài)。有關(guān)詳細(xì)信息 [!包括ssHADR,創(chuàng)建和配置的可用性組的(SQL Server),故障轉(zhuǎn)移群集和 Alwayson 可用性組 (SQL Server),并活動次要副本:可讀次要副本 (Alwayson 可用性組)。
-N
此開關(guān)供客戶端用于請求加密連接。
-P password
用戶指定的密碼。密碼是區(qū)分大小寫的。如果使用了 -U 選項而未使用 -P 選項,并且未設(shè)置 SQLCMDPASSWORD 環(huán)境變量,則 sqlcmd 會提示用戶輸入密碼。我們不建議使用 null 密碼,但您可以通過連續(xù)雙引號一對用于參數(shù)值指定 null 密碼:
-P ""
建議使用強(qiáng)密碼。
如果將 -P 選項與 -E 選項一起使用,將生成錯誤消息。
如果 -P 選項后有多個參數(shù),將生成錯誤消息并退出程序。
-S [協(xié)議:]server[\instance_name] [,* *端口]
指定要連接的 SQL Server 實例。它設(shè)置 sqlcmd 腳本變量 SQLCMDSERVER。
指定 server_name 可連接到該服務(wù)器計算機(jī)上的 SQL Server 默認(rèn)實例。指定要連接到該服務(wù)器計算機(jī)上 SQL Server 命名實例的 server_name [ \instance_name ]。如果不指定服務(wù)器,sqlcmd 將連接到本地計算機(jī)上 SQL Server 的默認(rèn)實例。從網(wǎng)絡(luò)上的遠(yuǎn)程計算機(jī)執(zhí)行 sqlcmd 時,此選項是必需的。
-U login_id
登錄名或包含的數(shù)據(jù)庫用戶名。對于包含的數(shù)據(jù)庫用戶,必須提供數(shù)據(jù)庫名稱選項 (-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 登錄服務(wù)器
格式:sqlcmd -S 服務(wù)器名稱 -U 帳戶 -P 密碼
示例:sqlcmd -S "127.0.0.1" -U "sa" -P "sa"
4.2 直接執(zhí)行SQL腳本
格式:sqlcmd -S 服務(wù)器名稱 -U 帳戶 -P 密碼 -d 數(shù)據(jù)庫 -i SQL腳本
示例:sqlcmd -S "127.0.0.1" -U "sa" -P "sa" -d "MyDB" -i "D:\test.sql" --執(zhí)行腳本文件
sqlcmd -S "127.0.0.1" -U "sa" -P "sa" -d "MyDB" -i "select * from UserInfo" -- 直接執(zhí)行sql語句
IT技術(shù)分享社區(qū)
個人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
總結(jié)
以上是生活随笔為你收集整理的SQLServer知识:sqlcmd用法笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: a标签点击事件_DOM事件机制
- 下一篇: SQLServer书写规范梳理