Przy użyciu polecenie sqlcmd, narzędzie
Polecenie sqlcmd narzędzie jest Microsoft Win32 narzędzie wiersz polecenia dla ad hoc, interakcyjne wykonanie Transact-SQL instrukcji i wykonywanie skryptów i automatyzowanie Transact-SQL wykonywanie skryptów zadania.Aby użyć polecenie sqlcmd interaktywnie, lub do tworzenia plików skryptów, należy uruchomić przy użyciu polecenie sqlcmd, użytkownicy muszą zrozumieć Transact-SQL.Polecenie sqlcmd narzędzie jest zazwyczaj używany w następujący sposób:
Użytkownik interakcyjnie wprowadzić Transact-SQL instrukcji w sposób podobny do pracy w wiersz polecenia.Wyniki są wyświetlane w wiersz polecenia.Aby otworzyć okno wiersza polecenia, kliknij Start, kliknij Wszystkie programy, wskaż Akcesoria, a następnie kliknij przycisk wiersza polecenia.W wiersz polecenia wpisz: polecenie sqlcmd następuje lista żądane opcje.Aby uzyskać pełną listę opcji, które są obsługiwane przez polecenie sqlcmd, zobacz Narzędzie sqlcmd.
Użytkownicy przesłać polecenie sqlcmd albo przez określenie pojedynczego zadanie Transact-SQL instrukcja, wykonać, lub wskazując z pliku tekstowego, zawierającego narzędzie Transact-SQL instrukcja do wykonać.Dane są zazwyczaj kierowane do pliku tekstowego, ale także mogą być wyświetlane w wiersz polecenia.
Tryb polecenie SQLCMD w SQL Server Management Studio Edytor kwerend.
SQL Server Management Objects (obiekty SMO)
Zadania programu SQL Server Agent CmdExec.
Zazwyczaj opcje używane polecenie sqlcmd
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 uwierzytelniania (-E, - U, i -P), określ poświadczenia, polecenie sqlcmd używa do łączenia się z wystąpienie SQL Server.
Ostrzeżenie
-E opcja jest domyślnie i nie musi być określony.
Opcje wprowadzania (-Q, - q, i -i), określenie lokalizacji danych wejściowych do polecenie sqlcmd.
Opcja wyjścia (-o), określa plik, w którym polecenie sqlcmd jest umieszczenie swojej produkcji.
Łączenie z polecenie sqlcmd, narzędzie
Oto typowe zastosowania polecenie sqlcmd narzędzia:
Podłączanie do wystąpienie domyślne przy użyciu uwierzytelniania systemu Windows, aby interaktywnie uruchomić Transact-SQL sprawozdania:
sqlcmd -S <ComputerName>
Ostrzeżenie
W poprzednim przykładzie -E nie jest określony, ponieważ jest on domyślnie i polecenie sqlcmd łączy do wystąpienie domyślne przy użyciu uwierzytelniania systemu Windows.
Łączenie z wystąpienie nazwane za pomocą uwierzytelniania systemu Windows, aby interaktywnie uruchomić Transact-SQL sprawozdania:
sqlcmd -S <ComputerName>\<InstanceName>
lub
sqlcmd -S .\<InstanceName>
Nawiązywanie połączeń przy użyciu uwierzytelniania systemu Windows i określając pliki wejściowe i wyjściowe wystąpienie nazwane:
sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt>
Podłączanie do wystąpienie domyślne na komputerze lokalnym za pomocą uwierzytelniania systemu Windows, wykonywanie kwerendy i posiadające polecenie sqlcmd będą nadal działać po zakończeniu kwerendy:
sqlcmd -q "SELECT * FROM AdventureWorks2008R2.Person.Person"
Podłączanie do wystąpienie domyślne na komputerze lokalnym za pomocą uwierzytelniania systemu Windows, wykonywanie kwerendy, kierowanie dane wyjściowe do pliku i posiadające polecenie sqlcmd Zamknij po zakończeniu kwerendy:
sqlcmd -Q "SELECT * FROM AdventureWorks2008R2.Person.Person" -o MyOutput.txt
Łączenie z wystąpienie nazwane za pomocą SQL Server uwierzytelniania interaktywnie uruchomić Transact-SQL oświadczeń, z polecenie sqlcmd monitowania o hasło:
sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>
Ostrzeżenie
Aby wyświetlić listę opcji, które są obsługiwane przez polecenie sqlcmd uruchomić narzędzie: sqlcmd -?.
Interakcyjne instrukcji języka Transact-SQL uruchomiony przez polecenie sqlcmd za pomocą
Można użyć polecenie sqlcmd narzędzie interakcyjne do wykonać Transact-SQL instrukcji w oknie wiersza polecenia.Interakcyjne wykonać Transact-SQL instrukcji przy użyciu polecenie sqlcmd, uruchom narzędzie bez korzystania z -Q, - q, -Z, lub -i wprowadzania opcje, aby określić dowolne pliki lub kwerend.Na przykład:
sqlcmd -S <ComputerName>\<InstanceName>
Gdy polecenie jest wykonywane bez plików wejściowych lub kwerend, polecenie sqlcmd łączy do określonego wystąpienie SQL Server , a następnie wyświetla nowy wiersz z 1> następuje migającego znaku podkreślenia, o nazwie polecenie sqlcmd wierszu.1 Oznacza, że jest to pierwszy wiersz Transact-SQL instrukcja oraz polecenie sqlcmd jest opcja Monituj punktu, w którym Transact-SQL instrukcja rozpocznie się podczas wpisywania cali
W polecenie sqlcmd Monituj, zarówno wpisz Transact-SQL sprawozdań i polecenie sqlcmd poleceń, takich jak Przejdź i EXIT.Każdy Transact-SQL instrukcja jest umieszczany w buforze wywoływana instrukcja pamięci podręcznej.Instrukcje te są wysyłane do SQL Server po Przejdź polecenie i naciśnij klawisz ENTER.Aby zakończyć polecenie sqlcmd, typ ZAMKNĄĆ lub QUIT na początku nowego wiersza.
Aby wyczyścić pamięć podręczną instrukcja, wpisz : resetowanie.Wpisując ^ C powoduje polecenie sqlcmd , aby zakończyć.^ C można również zatrzymać wykonywanie instrukcja pamięci podręcznej po Przejdź wydano polecenie.
Transact-SQLinstrukcje zawarte w sesja interaktywnej można edytować wprowadzając : ED polecenia i polecenie sqlcmd wierszu.Będzie Edytor otwarte i, po zakończeniu edycji Transact-SQL instrukcja i zamknięcia edytora zweryfikowanej Transact-SQL instrukcja pojawią się w oknie polecenia.Enter GO to run the revised 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.) Zmienne skryptów nie będą rozszerzane pojawiające się w ciąg.
Na przykład:
sqlcmd
PRINT "Length: 5"" 7'";
GO
Oto zestaw wyników.
Length: 5" 7'
Ciągi, obejmujące wiele wierszy
polecenie SQLCMD obsługuje skrypty, w których ciągi, obejmujące wiele wierszy.Na przykład, następujący SELECT instrukcja zajmują wiele wierszy, ale jest jeden ciąg znaków wykonywane po naciśnięciu klawisza ENTER klucz po wpisaniu GO.
SELECT First line
FROM Second line
WHERE Third line;
GO
Polecenie interaktywne sqlcmd przykład
Jest to przykład to, co widać po uruchomieniu polecenie sqlcmd interaktywnie.
Po otwarciu okna wiersza polecenia jest jeden wiersz podobny do:
C:\> _
Oznacza to, że folder C:\ jest bieżący folder, a jeśli zostanie określona nazwa pliku systemu Windows będzie szukał pliku w tym folderze.
Typ polecenie sqlcmd do łączenia się z wystąpienie domyślne SQL Server na komputerze lokalnym i zawartość wiersza polecenia będą okna:
C:\>sqlcmd
1> _
Oznacza to, że został podłączony do wystąpienie SQL Server i sqlcmd jest teraz gotowy do zaakceptowania Transact-SQL sprawozdań i sqlcmd polecenia.Migającego znaku podkreślenia po 1> jest sqlcmd , wskazującą położenie, jaką instrukcje i polecenia, należy wpisać będzie wyświetlany monit.Teraz, wpisz AdventureWorks2008R2 użycie i naciśnij klawisz ENTER, a następnie wpisz Przejdź i naciśnij klawisz ENTER.Zawartość okna wiersza polecenia będzie:
sqlcmd
USE AdventureWorks2008R2;
GO
Oto zestaw wyników.
Changed database context to 'AdventureWorks2008R2'.
1> _
Naciskając klawisz ENTER po wprowadzeniu USE AdventureWorks2008R2 zasygnalizowane sqlcmd , aby rozpocząć nowy wiersz.Pressing ENTER, after you type GO, signaled sqlcmd to send the USE AdventureWorks2008R2 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 zawiera okna wiersza polecenia należy wpisać SELECT instrukcja, GO wykonać SELECTi EXIT zamknięcie sqlcmd:
sqlcmd
USE AdventureWorks2008R2;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Oto zestaw wyników.
BusinessEntityID FirstName LastName
----------- -------------------------------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
1> EXIT
C:\>
Wiersze po 3> GO dane wyjściowe są SELECT instrukcja.Po wygenerowaniu wyjście, sqlcmd resetuje sqlcmd wiersz i wyświetla 1>.Po wprowadzeniu EXIT w wierszu 1>, w tym samym wierszu, czy przy pierwszym otwarciu go wyświetla okna wiersza poleceniaWskazuje, że sqlcmd zakończył sesja.Możesz zamknąć okno wiersza polecenia, wpisując inną EXIT polecenia.
Przez polecenie sqlcmd korzystanie z systemem plików skryptów języka Transact-SQL
Można użyć polecenie sqlcmd wykonać skrypt bazy danych pliki.Pliki wykonywanie skryptów to pliki tekstowe zawierające mieszankę Transact-SQL instrukcji, polecenie sqlcmd polecenia i wykonywanie skryptów zmiennych.For more information about how to script variables, see Polecenie sqlcmd przy użyciu skryptów zmiennych.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.Główna różnica jest polecenie sqlcmd czyta plik wejściowy bez wstrzymywania zamiast czekać na użytkownikowi wprowadzenie instrukcji, poleceń i wykonywanie skryptów zmiennych.
Istnieją różne sposoby tworzenia skrypt bazy danych plików:
Można interakcyjnie budowanie i debugowanie zestaw Transact-SQL instrukcji w SQL Server Management Studio, a następnie zapisać jako plik skryptu. zawartość okna kwerendy
Można utworzyć plik tekstowy, który zawiera Transact-SQL instrukcji przy użyciu edytora tekstów, takiego jak Notatnik.
Przykłady
A.Uruchamianie skryptu przy użyciu polecenie sqlcmd
Uruchom Notatnik i wpisz następujący Transact-SQL sprawozdania:
USE AdventureWorks2008R2;
GO
SELECT TOP (3) BusinessEntityID, FirstName, LastName
FROM Person.Person;
GO
Utwórz folder o nazwie MyFolder , a następnie zapisać jako plik skryptu MyScript.sql w folderze C:\MyFolder.Wprowadź następujące 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
Podczas wyświetlania zawartości MyOutput.txt w Notatniku, będzie wyglądał następująco:
Changed database context to 'AdventureWorks2008R2'.
BusinessEntityID FirstName LastName
---------------- ----------- -----------
1 Syed Abbas
2 Catherine Abel
3 Kim Abercrombie
(3 rows affected)
B.Polecenie sqlcmd przy użyciu dedykowanego połączenia administracyjnego
W poniższym przykładzie sqlcmd jest używany do łączenia się z serwerem wystąpił problem z blokowaniem za pomocą dedykowanego połączenia administracyjnego (DAC).
C:\>sqlcmd -S ServerName -A
1> SELECT blocked FROM sys.dm_exec_requests WHERE blocked <> 0;
2> GO
Oto zestaw wyników.
spid blocked
------ -------
62 64
(1 rows affected)
Użyj sqlcmd do zakończenia procesu blokującego.
1> KILL 64;
2> GO
C.Przy użyciu polecenie sqlcmd do wykonać procedura składowana
W poniższym przykładzie pokazano, jak wykonać procedura składowana przy użyciu sqlcmd.Utwórz następującą procedura składowana.
USE AdventureWorks2008R2;
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.Person
WHERE FirstName = @FirstName
AND LastName = @LastName;
SET NOCOUNT OFF
W sqlcmd monit, wprowadź następujący:
C:\sqlcmd
1> :Setvar FirstName Gustavo
1> :Setvar LastName Achong
1> EXEC dbo.ContactEmailAddress $(Gustavo),$(Achong)
2> GO
EmailAddress
-----------------------------
gustavo0@adventure-works.com
D.Dla konserwacji bazy danych przy użyciu polecenie sqlcmd
Poniższy przykład pokazuje sposób używania sqlcmd do zadań konserwacji bazy danych.Tworzenie C:\BackupTemplate.sql z następującego kodu.
USE master;
BACKUP DATABASE [$(db)] TO DISK='$(bakfile)';
W sqlcmd monit, wprowadź następujący:
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.Przy użyciu polecenie sqlcmd wykonać kodu w wielu wystąpień
Następujący kod w pliku zawiera skrypt, który łączy dwa wystąpienia.Obwieszczenie GO przed połączeniem drugi wystąpienie.
:CONNECT <server>\,<instance1>
EXEC dbo.SomeProcedure
GO
:CONNECT <server>\,<instance2>
EXEC dbo.SomeProcedure
GO
E.Zwracanie danych wyjściowych XML
Poniższy przykład pokazuje, jak dane wyjściowe XML zwracany jest niesformatowany, w sposób ciągły.
C:\>sqlcmd -d AdventureWorks2008R2
1> :XML ON
1> SELECT TOP 3 FirstName + ' ' + LastName + ', '
2> FROM Person.Person
3> GO
Syed Abbas, Catherine Abel, Kim Abercrombie,
F.W pliku skryptu systemu Windows przy użyciu polecenie sqlcmd
A polecenie sqlcmdpolecenia, takie jak sqlcmd -i C:\InputFile.txt -o C:\OutputFile.txt, mogą być wykonywane w pliku .bat, wraz z 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ć cztery następujące 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
G.Przy użyciu polecenie sqlcmd do zestaw szyfrowania bazy danych SQL Azure
A polecenie sqlcmdmogą być wykonywane w połączeniu z SQL Azure danych na określenie szyfrowanie i certyfikat zaufania.Two sqlcmd options are available:
-N przełącznik jest używany przez klient do żądania połączenia szyfrowanego.This option is equivalent to the ADO.net option ENCRYPT = true.
Przełącznik –C jest używany przez klient skonfigurować niejawnie zaufania certyfikat serwera i nie sprawdza poprawności.This option is equivalent to the ADO.net option TRUSTSERVERCERTIFICATE = true.
SQL Azure Usługa nie obsługuje wszystkich SET Opcje dostępne na wystąpienie programu SQL Server.Następujące opcje sygnalizować błąd, gdy odpowiednie SET jest opcja zestaw do ON lub OFF:
ZESTAW ANSI_DEFAULTS
ZESTAW ANSI_NULLS
ZESTAW REMOTE_PROC_TRANSACTIONS
ZESTAW ANSI_NULL_DEFAULT
Ustaw następujące opcje nie generują wyjątki, ale nie mogą być używane.Zostały zaniechane:
SET CONCAT_NULL_YIELDS_NULL
ZESTAW SPOWODOWAŁYBY
ZESTAW QUERY_GOVERNOR_COST_LIMIT
Składnia
Następujące przykłady odnoszą się do przypadków, gdy SQL Server macierzystego dostawcy klienta ustawienia obejmują: ForceProtocolEncryption = False, Trust Server Certificate = No
Połącz przy użyciu poświadczenia systemu Windows i szyfrowania komunikacji:
SQLCMD –E –N
Połącz przy użyciu poświadczenia systemu Windows i zaufania certyfikat serwera:
SQLCMD –E –C
Połącz przy użyciu poświadczenia systemu Windows, szyfrowania komunikacji i zaufania certyfikat serwera:
SQLCMD –E –N –C
Następujące przykłady odnoszą się do przypadków, gdy SQL Server macierzystego dostawcy klienta ustawienia obejmują: ForceProtocolEncryption = True, TrustServerCertificate = Yes.
Połącz przy użyciu poświadczenia systemu Windows, szyfrowania komunikacji i zaufania certyfikat serwera:
SQLCMD –E
Połącz przy użyciu poświadczenia systemu Windows, szyfrowania komunikacji i zaufania certyfikat serwera:
SQLCMD –E –N
Połącz przy użyciu poświadczenia systemu Windows, szyfrowania komunikacji i zaufania certyfikat serwera:
SQLCMD –E –T
Połącz przy użyciu poświadczenia systemu Windows, szyfrowania komunikacji i zaufania certyfikat serwera:
SQLCMD –E –N –C
Jeśli dostawca określa ForceProtocolEncryption = True , a następnie włączone szyfrowanie nawet jeśli Encrypt=No w połączeniu z ciąg.