今天給大家介紹sqlcmd用法筆記,,希望對大家能有所幫助!sqlcmd是一個 Microsoft Win32 命令提示實用工具,,可以通過該命令工具實現(xiàn)SQL語句、腳本的執(zhí)行,,并且可以實現(xiàn)腳本任務的自動化,。腳本文件如果超過80兆,,是不能夠直接在查詢編輯器執(zhí)行的,,會直接溢出報錯,當然如果你的腳本文件超過幾十兆,,很有可能會造成SQLServer查詢編輯器卡死,、無響應。這個問題可以使用sqlcmd命令來解決,。2.2 確保系統(tǒng)部署的穩(wěn)定,、準確我們在進行系統(tǒng)部署的時候,由于業(yè)務邏輯的調(diào)整,,經(jīng)常會有好幾十個腳本文件需要執(zhí)行,,為了保證腳本執(zhí)行不出差錯,可以通過sqlcmd命令,。來進行腳本文件到線上環(huán)境的部署,。這樣可以提高系統(tǒng)部署的質(zhì)量、準確,。[{ { -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]使用專用管理員連接 (DAC) 登錄 SQL Server。此類型連接用于排除服務器故障,。此連接僅適用于支持 DAC 的服務器計算機,。如果 DAC 不可用,sqlcmd 會生成錯誤消息并退出,。-A 選項和-G 選項不支持同時使用,。該開關(guān)供客戶端用于將其配置為隱式表示信任服務器證書且無需驗證,。此選項等價于 ADO.NET 選項 trustservercertificate = true。啟動 sqlcmd 時會發(fā)出一個 USE db_name 語句用來指定要操作的數(shù)據(jù)庫名稱,。此選項用來設置 sqlcmd 腳本變量 SQLCMDDBNAME,。此參數(shù)指定初始數(shù)據(jù)庫。默認為您的登錄名的默認數(shù)據(jù)庫屬性,。如果數(shù)據(jù)庫不存在,,則生成錯誤消息且 sqlcmd退出。指定在你嘗試連接到服務器時 sqlcmd 登錄 ODBC 驅(qū)動程序的超時時間(以秒為單位),。此選項設置 sqlcmd 腳本變量 SQLCMDLOGINTIMEOUT,。登錄到 sqlcmd 的默認超時時間為 8 秒。當使用 -G 選項連接到 SQL 數(shù)據(jù)庫或 SQL 數(shù)據(jù)倉庫并使用 Azure Active Directory 進行身份驗證時,,建議超時值至少為 30 秒,。登錄超時必須是介于 0 和 65534 之間的數(shù)字。如果提供的值不是數(shù)值或不在此范圍內(nèi),, sqlcmd 將生成錯誤消息,。當值設置為 0 時,則允許無限制等待,。使用信任連接而不是用戶名和密碼登錄 SQL Server服務,。默認情況下,如果未指定 -E ,, sqlcmd 將使用信任連接選項,。-E 選項會忽略可能的用戶名和密碼環(huán)境變量設置,例如 sqlcmdpassword,。如果將 -E 選項與 -U 選項或 -P 選項一起使用,,將生成錯誤消息。將列加密設置設為 Enabled,。有關(guān)詳細信息,,請參閱 Always Encrypted。僅支持存儲在 Windows 證書存儲中的主密鑰,。-g 開關(guān)至少需要 sqlcmd 版本 13.1,。若要確定你的版本,請執(zhí)行 sqlcmd -?,。當連接到 SQL 數(shù)據(jù)庫或 SQL 數(shù)據(jù)倉庫時,,客戶端將使用此開關(guān)指定該用戶使用 Azure Active Directory 身份驗證來進行身份驗證。此選項設置 sqlcmd 腳本變量 SQLCMDUSEAAD = true,。-G 開關(guān)至少需要 sqlcmd 版本 13.1,。若要確定你的版本,請執(zhí)行 sqlcmd -?,。有關(guān)詳細信息,,請參閱 使用 Azure Active Directory 身份驗證連接到 SQL 數(shù)據(jù)庫或 SQL 數(shù)據(jù)倉庫,。-A 選項不支持使用-G 選項。選項僅適用于 Azure SQL 數(shù)據(jù)庫 和 Azure 數(shù)據(jù)倉庫,。工作站的名稱,。此選項設置 sqlcmd 腳本變量 SQLCMDWORKSTATION。工作站名稱列出在 sys.sysprocesses 目錄視圖的 hostname 列中,,并且可使用存儲過程 sp_who返回,。如果不指定此選項,則默認為當前計算機名稱,。此名稱可用來標識不同的 sqlcmd 會話。連接到服務器時聲明應用程序工作負荷類型,。目前唯一支持的值是 ReadOnly。如果未指定 -K ,,sqlcmd 實用工具將不支持連接到 AlwaysOn 可用性組中的次要副本,。有關(guān)詳細信息,請參閱活動次要副本:可讀次要副本(AlwaysOn 可用性組)在連接到 SQL Server 可用性組或 SQL Server 故障轉(zhuǎn)移群集實例的可用性組偵聽程序時,,應始終指定 -M,。-M 將為(當前)活動服務器提供更快的檢測和連接。如果不指定 –M ,,則 -M 處于關(guān)閉狀態(tài),。有關(guān)詳細信息 [!包括ssHADR,,創(chuàng)建和配置的可用性組的(SQL Server),,故障轉(zhuǎn)移群集和 Alwayson 可用性組 (SQL Server),并活動次要副本:可讀次要副本 (Alwayson 可用性組),。用戶指定的密碼。密碼是區(qū)分大小寫的,。如果使用了 -U 選項而未使用 -P 選項,,并且未設置 SQLCMDPASSWORD 環(huán)境變量,則 sqlcmd 會提示用戶輸入密碼,。我們不建議使用 null 密碼,,但您可以通過連續(xù)雙引號一對用于參數(shù)值指定 null 密碼:如果將 -P 選項與 -E 選項一起使用,,將生成錯誤消息,。如果 -P 選項后有多個參數(shù),將生成錯誤消息并退出程序,。-S [協(xié)議:]server[\instance_name] [,,* *端口]指定要連接的 SQL Server 實例,。它設置 sqlcmd 腳本變量 SQLCMDSERVER。指定 server_name 可連接到該服務器計算機上的 SQL Server 默認實例,。指定要連接到該服務器計算機上 SQL Server 命名實例的 server_name [ \instance_name ],。如果不指定服務器,sqlcmd 將連接到本地計算機上 SQL Server 的默認實例,。從網(wǎng)絡上的遠程計算機執(zhí)行 sqlcmd 時,,此選項是必需的。登錄名或包含的數(shù)據(jù)庫用戶名,。對于包含的數(shù)據(jù)庫用戶,,必須提供數(shù)據(jù)庫名稱選項 (-d)。sqlcmd -U someuser -P s0mep@ssword -z a_new_p@a$$w0rdsqlcmd -U someuser -P s0mep@ssword -Z a_new_p@a$$w0rd格式:sqlcmd -S 服務器名稱 -U 帳戶 -P 密碼示例:sqlcmd -S "127.0.0.1" -U "sa" -P "sa"格式:sqlcmd -S 服務器名稱 -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語句
|