轉:http://blog.csdn.net/leamonjxl/article/details/6428753
和往常一樣,我們先使用 /?來看看sqlcmd的啟動參數們:
C:Documents and Settingschenxie.IFLYTEK>sqlcmd.exe /?
Microsoft (R) SQL Server 命令行工具
版本 9.00.1399.06 NT INTEL X86
版權所有 (c) Microsoft Corporation。保留所有權利。
用法: Sqlcmd[-U 登錄 ID][-P 密碼]
[-S 服務器][-H 主機名][-E 可信連接]
[-d 使用數據庫名稱] [-l 登錄超時值][-t 查詢超時值]
[-h 標題][-s 列分隔符][-w 屏幕寬度]
[-a 數據包大小][-e 回顯輸入][-I 允許帶引號的標識符]
[-c 命令結束][-L[c] 列出服務器[清除輸出]]
[-q "命令行查詢"][-Q "命令行查詢" 并退出]
[-m 錯誤級別][-V 嚴重級別][-W 刪除尾隨空格]
[-u unicode 輸出][-r[0|1] 發送到 stderr 的消息]
[-i 輸入文件][-o 輸出文件][-z 新密碼]
[-f <代碼頁> | i:<代碼頁>[,o:<代碼頁>]] [-Z 新建密碼并退出]
[-k[1|2] 刪除[替換]控制字符]
[-y 可變長度類型顯示寬度]
[-Y 固定長度類型顯示寬度]
[-p[1] 打印統計信息[冒號格式]]
[-R 使用客戶端區域設置]
[-b 出錯時中止批處理]
[-v 變量 = "值"...][-A 專用管理連接]
[-X[1] 禁用命令、啟動腳本、環境變量[并退出]]
[-x 禁用變量情況]
[-? 顯示語法摘要]
呵呵,和osql沒什么變化吧。下面我將仔細解釋每個參數和它們的使用方法。
下面是這些參數的詳細解釋(注意,區分大小寫):
1.首先是登陸方面的:
如果 –U -P –S都是空,比如直接在CMD下打 sqlcmd或sqlcmd.exe將使用本地賬戶嘗試連接本地數據庫
-U login_id
用戶登錄 ID。登錄 ID 區分大小寫。
如果 -U 選項和 -P 選項均未指定,sqlcmd 將嘗試使用 Microsoft Windows 身份驗證模式進行連接。身份驗證基于運行 sqlcmd 的用戶的 Windows 帳戶。
如果 -U 選項與 -E 選項(在本主題的后面詳細說明)一起使用,將生成錯誤消息。如果 –U 選項后有多個參數,將生成錯誤消息并退出程序。
-P passWord
用戶指定的密碼。密碼是區分大小寫的。如果未使用 -P 選項,并且未設置 SQLCMDPASSWORD 環境變量,則 sqlcmd 會提示用戶輸入密碼。如果在命令提示符的末尾使用 -P 選項而不帶密碼,sqlcmd 將使用默認密碼 (NULL)。
通過向控制臺打印密碼提示,可以顯示密碼提示,如下所示:
Password: |
隱藏用戶輸入,這意味著將不會顯示任何輸入的內容,光標保留原位不動。
如果將 -P 選項與 -E 選項一起使用,將生成錯誤消息。
如果 –P 選項后有多個參數,將生成錯誤消息并退出程序。
-E
使用可信連接而不是用戶名和密碼登錄 SQL Server。默認情況下,sqlcmd 將使用可信連接選項。
-E 選項會忽略可能的用戶名和密碼環境變量設置,例如 SQLCMDPASSWORD。如果將 -E 選項與 -U 選項或 -P 選項一起使用,將生成錯誤消息。
-S server_name [ instance_name ]
指定要連接的 SQL Server 的實例。它設置 sqlcmd 腳本變量 SQLCMDSERVER
指定 server_name 將連接到該服務器中 SQL Server 的默認實例。指定 server_nameinstance_name 將連接到該服務器中 SQL Server 的命名實例。如果未指定服務器,sqlcmd 將連接到本地計算機上的 SQL Server 的默認實例。從網絡上的遠程計算機執行 sqlcmd 時,此選項是必需的。
如果在啟動 sqlcmd 時未指定用戶名,SQL Server 將檢查并使用 SQLCMDSERVER 環境變量。如果未指定服務器,則使用工作站名稱。
-H wksta_name
工作站的名稱。此選項設置 sqlcmd 腳本變量 SQLCMDWORKSTATION。該工作站名稱在 sys.PRocesses 目錄視圖的 hostname 列中列出,并可使用存儲過程 sp_who 返回。如果未指定此選項,則使用當前計算機名稱。此名稱可用來標識不同的 sqlcmd 會話。
2.連接設置:
-l time_out
指定 sqlcmd 到 OLE DB 訪問接口的登錄超時時間。此選項設置 sqlcmd 腳本變量 SQLCMDLOGINTIMEOUT。登錄 sqlcmd 的默認超時時間為 8 秒。登錄超時設定必須是介于 0 和 65534 之間的數字。如果提供的值不是數值或不在此范圍內,sqlcmd 將生成錯誤消息。該值為 0 時,則允許無限制等待。
-t time_out
指定命令(或 SQL 語句)超時的時間。此選項設置 sqlcmd 腳本變量 SQLCMDSTATTIMEOUT。如果未指定 time_out 值,則命令將不會超時。登錄 time_out 必須是介于 1 和 65535 之間的數字。如果提供的值不是數值或不在此范圍內,則 sqlcmd 將生成錯誤消息。
注:實際的超時值可能會與指定的 time_out 值相差幾秒。幾秒,不是幾毫秒,別看錯了。
-d db_name
啟動 sqlcmd 時發出一個USE db_name 語句。此選項設置 sqlcmd 腳本變量 SQLCMDDBNAME。它指定初始數據庫。如果數據庫不存在,則生成錯誤消息且 sqlcmd 退出
-A
使用專用管理員連接 (DAC) 登錄到 SQL Server。此類型連接用于排除服務器故障。這只適用于支持 DAC 的服務器。如果 DAC 不可用,sqlcmd 會生成錯誤消息,然后退出。很好的東西,下面會詳細介紹。
-I
將 SET QUOTED_IDENTIFIER 連接選項設置為 ON。默認情況下,將其設定為 OFF。這與SQL Server的默認設置不同,SQL是設置默認是ON的。
小帖士:QUOTED_IDENTIFIER,分隔符使用設置。
SET QUOTED_IDENTIFIER 為 ON(默認值)時,由雙引號分隔的所有字符串都被解釋為對象標識符。(比如 Select * from [USER],或Select * from “USER”,這里USER就被視為非系統保留字)
因此,加引號的標識符不必符合 Transact-SQL 標識符規則。它們可以是保留關鍵字,并且可以包含 Transact-SQL 標識符中通常不允許的字符。不能使用雙引號分隔文字字符串表達式,而必須用單引號括住文字字符串。如果單引號 (') 是文字字符串的一部分,則可以由兩個單引號 (") 表示。當對數據庫中的對象名使用保留關鍵字時,SET QUOTED_IDENTIFIER 必須為 ON。
當 SET QUOTED_IDENTIFIER 為 OFF 時,表達式中的文字字符串可以由單引號或雙引號分隔。如果文字字符串由雙引號分隔,則可以在字符串中包含嵌入式單引號,如省略號。
在SQL操作的時候具體,默認值為ON還是OFF請查SQLServer2005的聯機手冊,上面有詳細描述。
3.顯示設置:
-h headers
指定要在列標題之間打印的行數。系統默認為每組查詢結果打印一次標題。此選項設置 sqlcmd 腳本變量 SQLCMDHEADERS。使用 -1 指定不能打印標題。如果使用 -1,則在參數和設置之間沒有空格(可以是 -h-1,但不能是 -h -1)。任何無效的值都將導致 sqlcmd 生成錯誤消息,然后退出。
-w column_width
指定用于輸出的屏幕寬度。此選項設置 sqlcmd 腳本變量 SQLCMDCOLWIDTH。該列寬必須是介于 8 和 65536 之間的數字。如果指定的列寬不在此范圍內,則 sqlcmd 將生成錯誤消息。默認寬度為 80 個字符。在輸出行超出指定的列寬時,將轉到下一行。
-e
將輸入腳本打印到標準輸出設備 (stdout)。
-r [ 0 | 1]
將錯誤消息輸出重定向到屏幕 (stderr)。如果未指定參數或指定參數為 0,則僅重定向嚴重級別為 17 或更高的錯誤消息。如果指定參數為 1,則將重定向所有消息輸出(包括 PRINT)。
-k [ 1 | 2 ]
刪除輸出中的所有控制字符,例如制表符和換行符。這會在返回數據時保留列格式。如果指定了 1,則控制字符被一個空格替代。如果指定了 2,則連續的控制字符被一個空格替代。
-p [ 1 ]
打印每個結果集的性能統計信息。以下示例是性能統計信息的格式:
Network packet size (bytes): n x xact[s]: Clock Time (ms.): totalt1avgt2 (t3 xacts per sec.) |
其中
x = SQL Server 處理的事務數。
t1 = 所有事務的總時間。
t2 = 單個事務的平均時間。
t3 = 每秒的平均事務數。
所有時間均以毫秒表示。
如果指定了可選參數 1,則統計信息的輸出格式為以冒號分隔的格式,此格式可以由腳本輕松導入到電子表格中或進行處理。
如果可選參數是除 1 之外的任何值,則將生成錯誤并且 sqlcmd 將退出。
-o output_file
標識從 sqlcmd 接收輸出的文件。
如果指定了 -u,則 output_file 以 Unicode 格式存儲。包含空格的文件名必須用引號引起來。如果文件名無效,將生成一個錯誤消息,并且 sqlcmd 將退出。sqlcmd 不支持向同一文件并發寫入多個 sqlcmd 進程。文件輸出將損壞或不正確。
-u
指定無論 input_file 為何種格式,output_file 都以 Unicode 格式進行存儲。
4.查詢配置:
-q " query "
啟動 sqlcmd 時執行查詢,但是在查詢完成時不退出 sqlcmd。將查詢用引號引起來,如下例所示。(建議不要使用這個,如果是寫批處理命令或是程序自動執行,請用下面那個)
在命令提示符下,鍵入(不要在查詢中使用 GO 終止符):
sqlcmd -d AdventureWorks-q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%'" |
如果與此選項同時指定了 -b,sqlcmd 在遇到錯誤時將退出。
-Q " query "
執行查詢并立即退出 sqlcmd,類上。(建議不要使用這個,除非是寫批處理命令或是程序自動執行)
如果與此選項同時指定了 -b,sqlcmd 在遇到錯誤時將退出。
-i input_file[,input_file2...]
標識包含一批 SQL 語句或存儲過程的文件。可以指定要按順序讀取和處理的多個文件。文件名之間不要使用任何空格。sqlcmd 將首先檢查所有指定的文件是否都存在。如果有一個或多個文件不存在,sqlcmd 將退出。
-b
指定錯誤發生時 sqlcmd 退出并返回一個 DOS
新聞熱點
疑難解答