一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

SQL SERVER 2008 sqlcmd 實(shí)用工具

 maoj66 2015-04-22

SQL SERVER 2008 sqlcmd 實(shí)用工具

sqlcmd (c:\Program Files\Microsoft SQL Server\100\Tools\Binn)實(shí)用工具是一個(gè) Microsoft Win32 命令提示實(shí)用工具,用于 Transact-SQL 語句和腳本的即席、交互執(zhí)行以及 Transact-SQL 腳本撰寫任務(wù)的自動(dòng)化。若要以交互方式使用 sqlcmd,或要生成可使用 sqlcmd 運(yùn)行的腳本文件,用戶需要了解 Transact-SQL。通常以下列方式使用 sqlcmd 實(shí)用工具:
  • 用戶以交互方式輸入 Transact-SQL 語句,輸入方式與在命令提示符下輸入的方式類似。結(jié)果將顯示在命令提示符處。若要打開命令提示符窗口,依次單擊“開始”、“所有程序”,指向“附件”,然后單擊“命令提示符”。在命令提示符處,鍵入 sqlcmd,后面跟隨所需的一系列選項(xiàng)。有關(guān) sqlcmd 支持的選項(xiàng)的完整列表,請參閱sqlcmd 實(shí)用工具。

  • 用戶通過下列方式提交 sqlcmd 作業(yè):指定要執(zhí)行的單個(gè) Transact-SQL 語句,或?qū)?shí)用工具指向要執(zhí)行的 Transact-SQL 語句所在的文本文件。輸出通常定向到一個(gè)文本文件,但也可以顯示在命令提示符處。

  • SQL Server Management Studio 查詢編輯器中的 SQLCMD 模式。

  • SQL Server 管理對象 (SMO)

  • SQL Server 代理 CmdExec 作業(yè)。

最常用的選項(xiàng)如下:

  • 服務(wù)器選項(xiàng)(-S),用于標(biāo)識 sqlcmd 連接到的 MicrosoftSQL Server 實(shí)例。

  • 身份驗(yàn)證選項(xiàng)(-E、-U-P),用于指定 sqlcmd 連接到 SQL Server 實(shí)例所使用的憑據(jù)。

    注意 注意

    -E 選項(xiàng)為默認(rèn)選項(xiàng),毋須指定。

  • 輸入選項(xiàng)(-Q-q-i),用于標(biāo)識 sqlcmd 輸入的位置。

  • 輸出選項(xiàng)(-o),用于指定 sqlcmd 輸出所在的文件。

以下是 sqlcmd 實(shí)用工具的常見用法:

  • 使用 Windows 身份驗(yàn)證連接到默認(rèn)實(shí)例,以交互方式運(yùn)行 Transact-SQL 語句:

    sqlcmd -S 
    
    注意注意

    上述示例中,未指定 -E,因?yàn)樗悄J(rèn)選項(xiàng),而且 sqlcmd 使用 Windows 身份驗(yàn)證連接到默認(rèn)實(shí)例。

  • 使用 Windows 身份驗(yàn)證連接到命名實(shí)例,以交互方式運(yùn)行 Transact-SQL 語句:

    sqlcm -S 

    或者

    sqlcmd -S .
  • 使用 Windows 身份驗(yàn)證連接到命名實(shí)例,并指定輸入和輸出文件:

    sqlcmd -S \ -i  -o 
    
  • 使用 Windows 身份驗(yàn)證連接到本地計(jì)算機(jī)上的默認(rèn)實(shí)例,執(zhí)行查詢,并在查詢運(yùn)行完畢后使 sqlcmd 保持運(yùn)行狀態(tài):

    sqlcmd -q "SELECT * FROM AdventureWorks.Person.Contact"
    
  • 使用 Windows 身份驗(yàn)證連接到本地計(jì)算機(jī)上的默認(rèn)實(shí)例,執(zhí)行查詢,將輸出定向到某個(gè)文件,并在查詢運(yùn)行完畢后使 sqlcmd 退出:

    sqlcmd -Q "SELECT * FROM AdventureWorks.Person.Contact" -o MyOutput.txt
    
  • 使用 SQL Server 身份驗(yàn)證連接到命名實(shí)例,以交互方式運(yùn)行 Transact-SQL 語句,并由 sqlcmd 提示輸入密碼:

    sqlcmd -U MyLogin -S 
    注意注意

    若要查看 sqlcmd 實(shí)用工具所支持選項(xiàng)的列表,請運(yùn)行:sqlcmd -?。

您可以使用 sqlcmd 實(shí)用工具以交互方式在命令提示符窗口中執(zhí)行 Transact-SQL 語句。若要使用 sqlcmd 以交互方式執(zhí)行 Transact-SQL 語句,請?jiān)谖词褂?-Q、-q、-Z-i 選項(xiàng)指定任何輸入文件或查詢的情況下運(yùn)行實(shí)用工具。例如:

sqlcmd -S \

在未指定輸入文件或查詢的情況下執(zhí)行命令時(shí),sqlcmd 連接到 SQL Server 的指定實(shí)例,然后顯示一個(gè)新行,其中包含 1> 并且后面跟著一個(gè)閃爍的下劃線(稱為 sqlcmd 提示符)。1 表示這是 Transact-SQL 語句的第一行,而 sqlcmd 提示符則是您鍵入 Transact-SQL 語句的起點(diǎn)。

sqlcmd 提示符中,可以鍵入 Transact-SQL 語句和 sqlcmd 命令,如 GOEXIT。每個(gè) Transact-SQL 語句放在稱為“語句緩存”的緩沖區(qū)中。鍵入 GO 命令并按 Enter 鍵后,這些語句將發(fā)送到 SQL Server。若要退出 sqlcmd,請?jiān)谛滦虚_始處鍵入 EXIT 或 QUIT。

若要清除語句緩存,請鍵入 :RESET。鍵入 ^C 將使 sqlcmd 退出。在發(fā)出 GO 命令后,還可以用 ^C 停止語句緩存的執(zhí)行。

通過在 sqlcmd 提示符中輸入 :ED 命令,可以編輯交互式會話中輸入的 Transact-SQL 語句。編輯器將打開,編輯 Transact-SQL 語句并關(guān)閉編輯器后,修改后的 Transact-SQL 語句將顯示于命令窗口中。輸入 GO以運(yùn)行修改后的 Transact-SQL 語句。

用引號引起來的字符無需任何額外的預(yù)處理即可使用。例外,輸入兩個(gè)連續(xù)的引號可以將引號插入字符串中,SQL Server 將這種字符序列視作一個(gè)引號。(但在服務(wù)器上會進(jìn)行轉(zhuǎn)換。)當(dāng)腳本變量出現(xiàn)在字符串中時(shí),不會展開它們。

例如:

sqlcmd

PRINT "Length: 5"" 7'"

GO

下面是結(jié)果集。

Length: 5" 7'

sqlcmd 支持包含跨多行的字符串的腳本。例如,下面的 SELECT 語句跨多行,但鍵入 GO 并按 Enter 鍵后,將執(zhí)行單個(gè)字符串。

SELECT First line

FROM Second line

WHERE Third line

GO

本示例說明了以交互方式運(yùn)行 sqlcmd 的過程。

打開命令提示符窗口時(shí),出現(xiàn)如下一行內(nèi)容:

C:\> _

這表示文件夾 C:\ 為當(dāng)前文件夾,如果您指定文件名,則 Windows 將在此文件夾中查找這個(gè)文件。

鍵入 sqlcmd 連接到本地計(jì)算機(jī)上的 SQL Server 默認(rèn)實(shí)例,命令提示符窗口的內(nèi)容為:

C:\>sqlcmd

1> _

這表示您已連接到 SQL Server 的實(shí)例,并且 sqlcmd 現(xiàn)在已可以接受 Transact-SQL 語句和 sqlcmd 命令。1> 后閃爍的下劃線是 sqlcmd 提示符,它標(biāo)明了所鍵入語句和命令的顯示位置?,F(xiàn)在,鍵入 USE AdventureWorks 并按 Enter 鍵,然后鍵入 GO 并按 Enter 鍵。命令提示符窗口的內(nèi)容如下:

sqlcmd

USE AdventureWorks;

GO

下面是結(jié)果集。

Changed database context to 'AdventureWorks'.

1> _

輸入 USE AdventureWorks 后按 Enter 鍵,即向 sqlcmd 發(fā)出換行信號。鍵入 GO, 后按 Enter 鍵,即向 sqlcmd 發(fā)出信號將 USE AdventureWorks 語句發(fā)送到 SQL Server 的實(shí)例。sqlcmd 隨后返回一條消息,指示 USE 語句已成功完成并顯示新的 1> 提示符作為輸入新語句或命令的信號。

下面的示例說明了鍵入 SELECT 語句和 GO 執(zhí)行 SELECT 以及鍵入 EXIT 退出 sqlcmd 時(shí)命令提示符窗口包含的內(nèi)容:

sqlcmd

USE AdventureWorks;

GO

SELECT TOP (5) ContactID, FirstName, LastName

FROM Person.Contact;

GO

下面是結(jié)果集。

ContactID FirstName LastName

----------- -------------------------------------------------- -----------

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

4 Humberto Acevedo

5 Pilar Ackerman

(5 rows affected)

1> EXIT

C:\>

行 3> GO 后的幾行內(nèi)容為 SELECT 語句的輸出。生成輸出后,sqlcmd 重置 sqlcmd 提示符并顯示 1>。在 1> 行輸入 EXIT 后,命令提示符窗口顯示第一次打開時(shí)顯示的行。它指示 sqlcmd 已退出會話?,F(xiàn)在可以再鍵入一個(gè) EXIT 命令關(guān)閉命令提示符窗口。

可以使用 sqlcmd 執(zhí)行數(shù)據(jù)庫腳本文件。腳本文件是一些文本文件,它們同時(shí)包含 Transact-SQL 語句、sqlcmd 命令和腳本變量。有關(guān)如何使用腳本變量的詳細(xì)信息,請參閱將 sqlcmd 與腳本變量結(jié)合使用。sqlcmd 與腳本文件中語句、命令和腳本變量的配合方式類似于它與交互輸入的語句和命令的配合方式。主要區(qū)別在于 sqlcmd 從輸入文件連續(xù)讀取內(nèi)容,而不是等待用戶輸入語句、命令和腳本變量。

可以通過幾種不同的方式創(chuàng)建數(shù)據(jù)庫腳本文件:

  • 可以在 SQL Server Management Studio 中以交互方式生成和調(diào)試一組 Transact-SQL 語句,然后將“查詢”窗口中的內(nèi)容另存為腳本文件。

  • 可以使用記事本等文本編輯器創(chuàng)建包含 Transact-SQL 語句的文本文件。

A. 使用 sqlcmd 運(yùn)行腳本

啟動(dòng)記事本并鍵入以下 Transact-SQL 語句:

USE AdventureWorks;

GO

SELECT TOP (5) ContactID, FirstName, LastName

FROM Person.Contact;

GO

創(chuàng)建一個(gè)名為 MyFolder 的文件夾,然后將腳本另存為文件夾 C:\MyFolder 中的文件 MyScript.sql。在命令提示符處輸入以下命令運(yùn)行腳本,并將輸出放入 MyFolder 的 MyOutput.txt 中:

sqlcmd -i C:\MyFolder\MyScript.sql -o C:\MyFolder\MyOutput.txt

在記事本中查看 MyOutput.txt 的內(nèi)容時(shí),將看到以下內(nèi)容:

Changed database context to 'AdventureWorks'.

ContactID FirstName LastName

----------- ----------- -----------

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

4 Humberto Acevedo

5 Pilar Ackerman

(5 rows affected)

B. 通過專用管理連接使用 sqlcmd

在下面的示例中,sqlcmd 通過專用管理員連接 (DAC) 連接到一臺具有阻塞問題的服務(wù)器。

C:\>sqlcmd -S ServerName -A

1> SELECT blocked FROM sys.dm_exec_requests WHERE blocked <> 0;

2> GO

下面是結(jié)果集。

spid blocked

------ -------

62 64

(1 rows affected)

使用 sqlcmd 結(jié)束阻塞進(jìn)程。

1> KILL 64;

2> GO

C. 使用 sqlcmd 執(zhí)行存儲過程

下面的示例說明如何使用 sqlcmd 執(zhí)行存儲過程。創(chuàng)建以下存儲過程。

USE AdventureWorks;

IF OBJECT_ID ( ' dbo.ContactEmailAddress, 'P' ) IS NOT NULL

DROP PROCEDURE dbo.ContactEmailAddress;

GO

CREATE PROCEDURE dbo.ContactEmailAddress

(

@FirstName nvarchar(50)

,@LastName nvarchar(50)

)

AS

SET NOCOUNT ON

SELECT EmailAddress

FROM Person.Contact

WHERE FirstName = @FirstName

AND LastName = @LastName;

SET NOCOUNT OFF

在 sqlcmd 提示符下,輸入以下內(nèi)容:

C:\sqlcmd

1> :Setvar FirstName Gustavo

1> :Setvar LastName Achong

1> EXEC dbo.ContactEmailAddress $(Gustavo),$(Achong)

2> GO

EmailAddress

-----------------------------

gustavo0@adventure-works.com

D. 使用 sqlcmd 進(jìn)行數(shù)據(jù)庫維護(hù)

下面的示例說明了如何將 sqlcmd 用于數(shù)據(jù)庫維護(hù)任務(wù)。使用以下代碼創(chuàng)建 C:\BackupTemplate.sql。

USE master;

BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';

在 sqlcmd 提示符下,輸入以下內(nèi)容:

C:\ >sqlcmd

1> :connect

Sqlcmd: Successfully connected to server <SERVER>. <\/SPAN><\/P> <P><SPAN>1> :setvar db msdb<\/SPAN><\/P> <P><SPAN>1> :setvar bakfile c:\msdb.bak<\/SPAN><\/P> <P><SPAN>1> :r c:\BackupTemplate.sql<\/SPAN><\/P> <P><SPAN>2> GO<\/SPAN><\/P> <P><SPAN>Changed database context to 'master'.<\/SPAN><\/P> <P><SPAN>Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.<\/SPAN><\/P> <P><SPAN>Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.<\/SPAN><\/P> <P><SPAN>BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)<\/SPAN><\/P> <P><SPAN> <H3>E. 使用 sqlcmd 對多個(gè)實(shí)例執(zhí)行代碼<\/H3> <DIV>某文件中的以下代碼表示一個(gè)連接到兩個(gè)實(shí)例的腳本。請注意連接到第二個(gè)實(shí)例之前的 GO。<\/DIV> <DIV>:CONNECT <server>\,<instance1><\/DIV> <DIV>EXEC dbo.SomeProcedure<\/DIV> <DIV>GO<\/DIV> <DIV>:CONNECT <server>\,<instance2><\/DIV> <DIV>EXEC dbo.SomeProcedure<\/DIV> <DIV>GO<\/DIV> <DIV> <\/DIV> <H3 class=subHeading>E. 返回 XML 輸出<\/H3> <DIV>下面的示例說明了如何以連續(xù)流返回未格式化的 XML 輸出。<\/DIV> <DIV>C:\>sqlcmd -d AdventureWorks<\/DIV> <DIV>1> :XML ON<\/DIV> <DIV>1> SELECT TOP 4 FirstName + ' ' + LastName + ', '<\/DIV> <DIV>2> FROM Person.Contact<\/DIV> <DIV>>3> GO<\/DIV> <DIV>Gustavo Achong, Catherine Abel, Kim Abercrombie, Humberto Acevedo, <\/DIV> <DIV> <\/DIV> <H3>F. 在 Windows 腳本文件中使用 sqlcmd<\/H3> <DIV>在 .bat 文件中<STRONG>sqlcmd<\/STRONG> 命令(如 sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, )可以與 VBScript 一起執(zhí)行。此時(shí),不要使用交互選項(xiàng)。執(zhí)行 .bat 文件的計(jì)算機(jī)上必須安裝<STRONG>sqlcmd<\/STRONG>。<\/DIV> <DIV>首先,創(chuàng)建以下四個(gè)文件:<\/DIV> <DIV>  C:\badscript.sql<\/DIV> <DIV>  SELECT batch_1_this_is_an_error <\/DIV> <DIV>  GO <\/DIV> <DIV>  SELECT 'batch #2' <\/DIV> <DIV>  GO <\/DIV> <DIV> <\/DIV> <DIV>  C:\goodscript.sql<\/DIV> <DIV>  SELECT 'batch #1' <\/DIV> <DIV>  GO <\/DIV> <DIV>  SELECT 'batch #2' <\/DIV> <DIV>  GO <\/DIV> <DIV> <\/DIV> <DIV>  C:\returnvalue.sql<\/DIV> <DIV>  :exit(select 100) <\/DIV> <DIV>  @echo off <\/DIV> <DIV>  C:\windowsscript.bat <\/DIV> <DIV>  @echo off <\/DIV> <DIV> <\/DIV> <DIV>  echo Running badscript.sql <\/DIV> <DIV>  sqlcmd -i badscript.sql -b -o out.log <\/DIV> <DIV>  if not errorlevel 1 goto next1 <\/DIV> <DIV>  echo == An error occurred <\/DIV> <DIV> <\/DIV> <DIV>  :next1 <\/DIV> <DIV> <\/DIV> <DIV>  echo Running goodscript.sql <\/DIV> <DIV>  sqlcmd -i goodscript.sql -b -o out.log <\/DIV> <DIV>  if not errorlevel 1 goto next2 <\/DIV> <DIV>  echo == An error occurred <\/DIV> <DIV> <\/DIV> <DIV>  :next2 <\/DIV> <DIV>  echo Running returnvalue.sql <\/DIV> <DIV>  sqlcmd -i returnvalue.sql -o out.log <\/DIV> <DIV>  echo SQLCMD returned %errorlevel% to the command shell <\/DIV> <DIV> <\/DIV> <DIV>  :exit <\/DIV> <DIV> <\/DIV> <DIV>然后,在命令提示符處運(yùn)行 C:\windowsscript.bat:<\/DIV> <DIV>C:\>windowsscript.bat<\/DIV> <DIV>Running badscript.sql<\/DIV> <DIV>== An error occurred<\/DIV> <DIV>Running goodscript.sql<\/DIV> <DIV>Running returnvalue.sql<\/DIV> <DIV>SQLCMD returned 100 to the command shell<\/DIV> <DIV> <\/DIV> <DIV> 參考文章:http://msdn.microsoft.com/zh-cn/library/ms180944(v=sql.100).aspx<H3><\/H3><\/SERVER><\/SPAN><\/P><\/DIV><\/DIV>

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲av又爽又色又色| 欧美日韩国产另类一区二区| 国产成人精品在线播放| 欧美日韩精品人妻二区三区| 国产精品日韩欧美一区二区| 成人日韩视频中文字幕| 欧美日韩乱码一区二区三区| 内射精品欧美一区二区三区久久久 | 亚洲国产成人精品一区刚刚| 亚洲精品中文字幕熟女| 大香蕉伊人一区二区三区| 国产精品第一香蕉视频| 91久久精品在这里色伊人| 欧美黑人精品一区二区在线| 日韩人妻欧美一区二区久久| 麻豆蜜桃星空传媒在线观看| 国产欧美日韩精品一区二区| 色丁香一区二区黑人巨大| 欧美韩日在线观看一区| 人体偷拍一区二区三区| 日本淫片一区二区三区| 人妻久久这里只有精品| 成人日韩视频中文字幕| 亚洲性日韩精品一区二区| 真实国产乱子伦对白视频不卡 | 91精品国产综合久久福利| 加勒比系列一区二区在线观看| 日韩精品视频香蕉视频| 久久这里只有精品中文字幕| 日本本亚洲三级在线播放| 色一欲一性一乱—区二区三区| 国产三级欧美三级日韩三级| 丰满少妇被猛烈插入在线观看| 欧美激情视频一区二区三区| 国产成人国产精品国产三级 | 欧美视频在线观看一区| 亚洲一区二区亚洲日本| 91天堂素人精品系列全集| 国产精品美女午夜视频| 国产精品午夜视频免费观看| 国产精品流白浆无遮挡|