Za pomocą narzędzia sqlcmd

The sqlcmd utility is a Microsoft Win32 wiersz polecenia utility for ad hoc, interactive execution of Transact-SQL statements and scripts and for automating Transact-SQL wykonywanie skryptów tasks. Aby użyć SQLCMD interaktywnie, lub aby utworzyć pliki skryptów mają być wykonywane za pomocą SQLCMD, użytkownicy muszą zrozumieć Transact-SQL. The sqlcmd utility is typically used in the following ways:

  • Interakcyjne wprowadzania przez użytkowników Transact-SQL instrukcje w sposób podobny do pracy w wiersz polecenia. Wyniki są wyświetlane w wiersz polecenia.Aby otworzyć okno wiersza polecenia, kliknij przycisk Rozpocznij, click Wszystkie programy, point to Akcesoria, a następnie kliknij przycisk Wiersz polecenia.W wiersz polecenia wpisz: SQLCMD , a po nim listę żądane opcje.Aby uzyskać pełną listę opcji, które są obsługiwane przez SQLCMD, see sqlcmd Utility.

  • Użytkownicy przesyłają SQLCMD zadanie, albo przez określenie pojedynczego Transact-SQL Instrukcja, lub wskazuje plik tekstowy, który zawiera narzędzie Transact-SQL instrukcje do wykonać. Dane wyjściowe są zazwyczaj kierowane do pliku tekstowego, ale mogą być wyświetlane również w wiersz polecenia.

  • Tryb SQLCMD in SQL Server Management Studio Edytor kwerend.

  • SQL Server Management Objects (obiekty SMO)

  • Zadania programu SQL Server Agent CmdExec.

Zazwyczaj sqlcmd używane opcje

Najczęściej używane są następujące opcje:

  • The server option (-S) that identifies the instance of Microsoft SQL Server to which sqlcmd connects.

  • (Opcje) uwierzytelnianie-E, -U, and -P) Określ, poświadczenia tego SQLCMD używa do łączenia się z wystąpienie SQL Server.

    Uwaga

    The -E option is the default and does not have to be specified.

  • Dane wejściowe opcji)-Q, -q, and -i) które identyfikacji lokalizacji dane wejściowe SQLCMD.

  • (Opcja wyjścia-o) które określa plik, w których SQLCMD jest umieszczenie jej danych wyjściowych.

Nawiązywanie połączenia z sqlcmd narzędzie

Oto typowe zastosowania SQLCMD narzędzia:

  • Nawiązywanie połączenia z wystąpienie domyślne przy użyciu uwierzytelnianie systemu Windows, aby interaktywnie uruchomić Transact-SQL instrukcje:

    sqlcmd -S <ComputerName>
    

    Uwaga

    W poprzednim przykładzie -E ponieważ jest to domyślna i nie jest określonySQLCMD łączy się z wystąpienie domyślne przy użyciu uwierzytelnianie systemu Windows.

  • Nawiązywanie połączenia z wystąpienie nazwane przy użyciu uwierzytelnianie systemu Windows, aby interaktywnie uruchomić Transact-SQL instrukcje:

    sqlcmd -S <ComputerName>\<InstanceName>
    

    lub

    sqlcmd -S .\<InstanceName>
    
  • Nawiązywanie połączenia z wystąpienie nazwane przy użyciu uwierzytelnianie systemu Windows i określając pliki wejściowe i wyjściowe:

    sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>
    
  • Nawiązywanie połączenia z wystąpienie domyślne na komputerze lokalnym przy użyciu uwierzytelnianie systemu Windows, wykonywanie kwerendy i posiadające SQLCMD będą nadal działać po zakończeniu kwerendy:

    sqlcmd -q "SELECT * FROM AdventureWorks.Person.Contact"
    
  • Podłączanie do domyślnego wystąpienie na komputerze lokalnym przy użyciu uwierzytelnianie systemu Windows, wykonywanie kwerendy, kierowanie dane wyjściowe do pliku i posiadające SQLCMD wyjścia po zakończeniu kwerendy:

    sqlcmd -Q "SELECT * FROM AdventureWorks.Person.Contact" -o MyOutput.txt
    
  • Nawiązywanie połączenia przy użyciu nazwanego wystąpienie SQL Server Uwierzytelnianie, aby interaktywnie uruchomić Transact-SQL instrukcje, z SQLCMD monitowania o hasło:

    sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>
    

    Uwaga

    Aby wyświetlić listę opcji, które są obsługiwane przez SQLCMDUruchom narzędzie : sqlcmd -?.

Interaktywne instrukcji języka Transact-SQL uruchomiony przez sqlcmd korzystanie

Można użyć SQLCMD narzędzie interakcyjne wykonać Transact-SQL instrukcje w oknie wiersz polecenia. Aby interaktywnie uruchomić Transact-SQL instrukcje przy użyciu SQLCMD, uruchomić narzędzie bez korzystania z -Q, -q, -Z, or -i opcje, aby określić dowolne dane wejściowe, plików lub kwerendy.Na przykład:

sqlcmd -S <ComputerName>\<InstanceName>

Kiedy polecenie jest wykonywane bez plików wejściowych lub kwerendy, SQLCMD łączy określonego wystąpienie SQL Server a następnie wyświetla nowy wiersz z 1> następuje migającego znaku podkreślenia, o nazwie SQLCMD wiersza.The 1 signifies that this is the first line of a Transact-SQL instrukcja, and the sqlcmd prompt is the point at which the Transact-SQL instrukcja will start when you type it in.

Na SQLCMD wiersza, można wpisać obu Transact-SQL instrukcje i SQLCMD poleceń, takich jak PRZEJDŹ DO and ZAKOŃCZ.Każdy Transact-SQL Instrukcja jest umieszczana w buforze, zwanej pamięcią podręczną instrukcji. Instrukcje te są wysyłane do SQL Server Po wpisaniu PRZEJDŹ DO polecenie i naciśnij klawisz ENTER.Aby zakończyć SQLCMD, type ZAKOŃCZ or ZAMKNIJ na początku nowego wiersza.

Aby wyczyścić pamięć podręczną instrukcja, należy wpisać : RESETOWANIE.Wpisywanie ^ C causes SQLCMD , aby zakończyć.^ C można również zatrzymać wykonywanie instrukcja pamięci podręcznej po PRZEJDŹ DO wydano polecenie.

Transact-SQL instrukcje, które zostały wprowadzone podczas sesja interakcyjnych mogą być edytowane przez wprowadzenie : ED polecenie a SQLCMD wiersza.Będzie edytora otwarte i, po zakończeniu edycji Transact-SQL Instrukcja i zamknięcia edytora, zweryfikowanej Transact-SQL Instrukcja będą wyświetlane w oknie wiersza polecenia. Enter GOto run therevised Transact-SQL statement.

Podane ciągi

Characters that are enclosed in quotation marks are used without any additional preprocessing, except that quotations marks can be inserted into a string by entering two consecutive quotation marks.SQL Server treats this character sequence as one quotation mark.(Jednak tłumaczenie występuje na serwerze,.) wykonywanie wykonywanie skryptów zmienne zostaną nie rozwinięte, gdy pojawiają się w ciąg.

Na przykład:

sqlcmd

PRINT "Length: 5"" 7'"

GO

Here is the result set.

Length: 5" 7'

Ciągi, które ogniwa wielu linii

SQLCMD obsługuje skrypty, których zdefiniowano ciągi, które obejmują wiele wierszy.Na przykład następujące SELECT Instrukcja obejmuje wiele wierszy, ale jest wykonywane po naciśnięciu klucz ENTER po wpisaniu jeden ciąg znaków GO.

SELECT First line

FROM Second line

WHERE Third line

GO

Interaktywne sqlcmd przykład

Jest to przykładowe informacje wyświetlane po uruchomieniu SQLCMD interaktywnie.

Po otwarciu okna wiersz polecenia, jest jeden wiersz podobny do:

C:\> _

Oznacza to, że folder C:\ jest to folder bieżący, a jeśli zostanie podana nazwa pliku, system Windows podejmie próbę wyszukania pliku w tym folderze.

Typ SQLCMD do łączenia się z domyślnym wystąpienie SQL Server na komputerze lokalnym, a zawartość wiersz polecenia będą okna:

C:\>sqlcmd

1> _

Oznacza to, że zostało nawiązane połączenie z wystąpienie SQL Server i sqlcmd jest teraz gotowa do przyjęcia Transact-SQL instrukcje i sqlcmd polecenia. Migającego znaku podkreślenia po 1> to sqlcmd monit, wskazującą położenie, w którym będą wyświetlane instrukcje i polecenia, należy wpisać. Teraz wpisz USE AdventureWorks , a następnie naciśnij klawisz ENTER, a następnie wpisz PRZEJDŹ DO , a następnie naciśnij klawisz ENTER.Będą zawartość okna wiersz polecenia:

sqlcmd

USE AdventureWorks;

GO

Here is the result set.

Changed database context to 'AdventureWorks'.

1> _

Naciskając klawisz ENTER po wprowadzeniu USE AdventureWorks zasygnalizować sqlcmd Aby rozpocząć nowy wiersz. Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks statement to the instance of SQL Server.sqlcmd then returned a message to indicate that the USE statement completed successfully and displayed a new 1> prompt as a signal to enter a new statement or command.

W poniższym przykładzie pokazano zawiera okna wiersz polecenia należy wpisać SELECT Instrukcja, GO Aby wykonać SELECT, a EXIT Aby zakończyć sqlcmd:

sqlcmd

USE AdventureWorks;

GO

SELECT TOP (5) ContactID, FirstName, LastName

FROM Person.Contact;

GO

Here is the result set.

ContactID FirstName LastName

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

1 Syed Abbas

2 Catherine Abel

3 Kim Abercrombie

4 Humberto Acevedo

5 Pilar Ackerman

(5 rows affected)

1> EXIT

C:\>

Wiersze po wierszu 3> GO dane wyjściowe są SELECT Instrukcja. Po wygenerowaniu danych wyjściowych, sqlcmd Resetuje sqlcmd wiersz i wyświetla 1>. Po wprowadzeniu EXIT w wierszu 1>, okna wiersz polecenia wyświetla się tym samym wierszu, został on po pierwszym otwarciu. To oznacza, że sqlcmd został zakończony swojej sesja. Możesz zamknąć okno wiersz polecenia, wpisując inną EXIT polecenie.

Uruchamiać pliki skryptów języka Transact-SQL sqlcmd korzystanie

Można użyć SQLCMD do wykonywania plików skryptów bazy danych.Pliki wykonywanie wykonywanie skryptów to pliki tekstowe, które zawierają kombinację Transact-SQL instrukcje, SQLCMD poleceń i wykonywanie wykonywanie skryptów zmiennych.For more information about how to script variables, see Using sqlcmd with Scripting Variables.sqlcmd works with the statements, commands, and scripting variables in a script file in a manner similar to how it works with statements and commands that are entered interactively.Podstawową różnicą jest to, że SQLCMD odczytuje za pośrednictwem pliku wejściowego bez przerwy, zamiast oczekiwania użytkownika, aby wprowadzić instrukcje, polecenia i wykonywanie wykonywanie skryptów zmiennych.

Tworzenie plików skrypt bazy danych na różne sposoby:

  • Interakcyjne tworzenia i debugowania zestaw Transact-SQL instrukcje w SQL Server Management Studio, a następnie zapisać zawartość okna kwerendy jako plik skryptu.

  • Można utworzyć plik tekstowy, który zawiera Transact-SQL instrukcje przy użyciu edytora tekstów, takim jak Notatnik.

Przykłady

A.Uruchamianie skryptu przy użyciu sqlcmd

Uruchom program Notatnik i wpisz następujące polecenie Transact-SQL instrukcje:

USE AdventureWorks;

GO

SELECT TOP (5) ContactID, FirstName, LastName

FROM Person.Contact;

GO

Utwórz folder o nazwie MyFolder a następnie Zapisz skrypt jako plik MyScript.sql w folderze C:\MyFolder. Wprowadź następujące polecenie w wiersz polecenia Uruchom skrypt i wprowadzane dane wyjściowe MyOutput.txt w MyFolder:

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

Umożliwia wyświetlanie zawartości MyOutput.txt w programie Notatnik zostanie wyświetlony poniżej:

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.Przy użyciu dedykowanego połączenia administracyjnego sqlcmd

W poniższym przykładzie sqlcmd Służy do łączenia się z serwerem wystąpił problem z blokowania przy użyciu połączenia dedykowane administratora (DAC).

C:\>sqlcmd -S ServerName -A

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

2> GO

Here is the result set.

spid blocked

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

62 64

(1 rows affected)

Użycie sqlcmd Aby zakończyć proces blokowania.

1> KILL 64;

2> GO

C.Wykonaj procedura przechowywana przy użyciu sqlcmd

W poniższym przykładzie pokazano, jak wykonać procedura przechowywana przy użyciu sqlcmd. Utwórz następującą procedura przechowywana.

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

Na sqlcmd monit, wpisz następujące wyrażenie:

C:\sqlcmd

1> :Setvar FirstName Gustavo

1> :Setvar LastName Achong

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

2> GO

EmailAddress

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

gustavo0@adventure-works.com

D.Za pomocą sqlcmd dla konserwacji bazy danych

W poniższym przykładzie przedstawiono sposób użycia sqlcmd zadania konserwacji bazy danych. Tworzenie C:\BackupTemplate.sql w poniższym kodzie.

USE master;

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

Na sqlcmd monit, wpisz następujące wyrażenie:

C:\ >sqlcmd

1> :connect <server>

Sqlcmd: Successfully connected to server <server>.

1> :setvar db msdb

1> :setvar bakfile c:\msdb.bak

1> :r c:\BackupTemplate.sql

2> GO

Changed database context to 'master'.

Processed 688 pages for database 'msdb', file 'MSDBData' on file 2.

Processed 5 pages for database 'msdb', file 'MSDBLog' on file 2.

BACKUP DATABASE successfully processed 693 pages in 0.725 seconds (7.830 MB/sec)

E.Za pomocą sqlcmd wykonać kodu w wielu wystąpień

Następujący kod w pliku zawiera skrypt, który łączy się z dwóch wystąpień.Ogłoszenie GO przed połączeniem drugiej instancji.

:CONNECT <server>\,<instance1>

EXEC dbo.SomeProcedure

GO

:CONNECT <server>\,<instance2>

EXEC dbo.SomeProcedure

GO

E.Zwraca dane wyjściowe XML

W poniższym przykładzie pokazano, w jaki sposób dane wyjściowe XML zwracana jest niesformatowany, w postaci ciągłego strumienia.

C:\>sqlcmd -d AdventureWorks

1> :XML ON

1> SELECT TOP 4 FirstName + ' ' + LastName + ', '

2> FROM Person.Contact

3> GO

Gustavo Achong, Catherine Abel, Kim Abercrombie, Humberto Acevedo,

F.Za pomocą sqlcmd w pliku skryptu systemu Windows

A SQLCMDpolecenie, takie jak sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, mogą być wykonywane w pliku bat wraz z języka VBScript. In this case, do not use interactive options.sqlcmd must be installed on the computer that is executing the .bat file.

Najpierw należy utworzyć następujące cztery pliki:

  • C:\badscript.SQL

    SELECT batch_1_this_is_an_error
    GO
    SELECT 'batch #2'
    GO
    
  • C:\goodscript.SQL

    SELECT 'batch #1'
    GO
    SELECT 'batch #2'
    GO
    
  • C:\returnvalue.SQL

    :exit(select 100)
    @echo off
    C:\windowsscript.bat
    @echo off
    
    echo Running badscript.sql
    sqlcmd -i badscript.sql -b -o out.log
    if not errorlevel 1 goto next1
    echo == An error occurred 
    
    :next1
    
    echo Running goodscript.sql
    sqlcmd -i goodscript.sql -b -o out.log
    if not errorlevel 1 goto next2
    echo == An error occurred 
    
    :next2
    echo Running returnvalue.sql
    sqlcmd -i returnvalue.sql -o out.log
    echo SQLCMD returned %errorlevel% to the command shell
    
    :exit
    

Następnie w wiersz polecenia Uruchom C:\windowsscript.bat:

C:\>windowsscript.bat

Running badscript.sql

== An error occurred

Running goodscript.sql

Running returnvalue.sql

SQLCMD returned 100 to the command shell