Using Tokens in Job Steps
SQL Server Agent umożliwia użycie tokenów w Transact-SQL zadanie krok skryptów. Tokeny podczas pisania etapów zadań zapewnia elastyczność tego samego, zapewniające zmiennych, pisząc programy.Po wstawieniu token w skrypcie kroku zadanie SQL Server Agent zastępuje token przy uruchomieniu czas, przed wykonaniem kroku zadanie przez Transact-SQL podsystem.
Important Note: |
---|
Począwszy od SQL Server 2005 Z dodatkiem usługa Pack 1, SQL Server Agent zadanie krok token składnia zmienione. Opcja "" domyślny"jest uwzględniana wielkość liter.Za pomocą makra anulowania i aktualizacja sieci SQL ServerKroki zadanie agenta tokeny są opisane w poniższych sekcjach, "Korzystanie z tokenów opis," "SQL ServerAgent tokenów i makra, "i"Aktualizacja kroki zlecenia do makra użyj. „ Ponadto SQL Server 2000 Składnia używana nawiasy kwadratowe w celu wyróżnienia SQL ServerAgent zadanie krok tokeny (na przykład "[DATE]") został zmieniony. Musisz teraz należy umieścić nazwy tokenu w nawiasach i umieścić (znak dolara$) na początku token składni. Na przykład: $(ESCAPE_nazwa makra(DATE)) |
Opis, przy użyciu tokenów
Security Note: |
---|
To specjalnej obsługi jest obsługiwany przez zasób Governor w SQL Server. Aby uniknąć tego zagrożenia bezpieczeństwa SQL Server Tokeny agenta, które mogą być używane w zleceniach uaktywniony przez alerty są domyślnie wyłączone. Tworzenie indeksu na tabela partycjonowanaA DBN, A SVR, BŁĄD A, A SEV, A MSG., and WMI)właściwość). Jeśli trzeba użyć tych tokeny, najpierw upewnić, że tylko członkowie zaufanych grup zabezpieczeń systemu Windows, takich jak grupy Administratorzy mają uprawnienia do zapisu w dzienniku zdarzeń komputera, gdzie SQL Server znajduje się. Następnie należy kliknąć prawym przyciskiem myszy Agenta programu SQL Server w Eksploratorze obiektów, zaznacz opcję Właściwości, a na System alertu Wybierz opcję stronieZastępowanie tokenów dla wszystkich zadań odpowiedzi na alerty , aby włączyć te tokeny. |
SQL Server Zastępowania tokenu agenta jest proste i efektywne: SQL Server Agent zastępuje wartość literału dokładne dla tokenu.Wszystkie tokeny uwzględniana jest wielkość liter.Czynności zadanie, należy wziąć to pod uwagę i poprawnie oferta tokenów jest używany lub przekonwertować ciąg zastępujący na prawidłowy typ danych.
Na przykład nazwa bazy danych w kroku zadanie drukowania może użyć następującej instrukcja:
PRINT N'Current database name is $(ESCAPE_SQUOTE(A-DBN))' ;
W tym przykładzie ESCAPE_SQUOTE makra zostanie wstawione z A DBN token.W czasie wykonywania A DBN token zostanie zastąpiona nazwą odpowiedniej bazy danych. Makro anulowania wypływa pojedyncze znaki cudzysłowu, które mogą być przypadkowo przekazywane w ciąg zastępowania tokenu.SQL Server Agent spowoduje zamianę jednego pojedynczy znak cudzysłowu dwa znaki pojedynczego cudzysłowu w ciąg końcowego.
Na przykład jeśli ciąg przekazany do zastąpienia tokenu jest AdventureWorks'SELECT @@VERSION --, polecenie, wykonane przez SQL Server Etap zadanie agenta będzie:
PRINT N'Current database name is AdventureWorks''SELECT @@VERSION --' ;
W tym wypadku instrukcja wstawionego SELECT @@VERSION, nie wykonuje. Zamiast tego należy bardzo pojedynczy znak cudzysłowu powoduje, że serwer dokonać analizy składni instrukcja wstawiony jako ciąg znaków.Jeśli ciąg zastępujący tokenu nie zawiera pojedynczy cudzysłów, żadne znaki nie są zmienione znaczenie za i kroku zadanie zawierające token jest wykonywany zgodnie z przeznaczeniem.
Aby debugować użycie tokenu w czynności zadania, użyj instrukcji wydruku takie jak PRINT N'$(ESCAPE_SQUOTE(SQLDIR))' i zapisać zadanie krok dane wyjściowe do pliku lub tabela. Użycie Zaawansowane stronaWłaściwości krok zadanie okno dialogowe, aby określić plik wyjściowy kroku zadanie lub tabela.
Program SQL Server Agent tokenów i makr
W poniższych tabelach listę i opis tokeny i makra, SQL Server Agent obsługuje.
Program SQL Server Agent tokenów
Token |
Description |
---|---|
(A-DBN) |
Nazwa bazy danych.Jeśli zadanie jest uruchamiane przez alert, wartość nazwy bazy danych automatycznie zamienia ten token w kroku zadania. |
(A-SVR) |
Nazwa serwera.Jeśli zadanie jest uruchamiane przez alert, wartość nazwa serwera automatycznie zamienia ten token w kroku zadania. |
(A-BŁĄD) |
Wyświetla plan kwerend z pełnego uruchomienia-czas szczegółowe informacje o wykonanie instrukcja języka SQL.Jeśli zadanie jest uruchamiane przez alert, wartość numeru błędu automatycznie zamienia ten token w kroku zadania. |
(A-SEV) |
Waga błędu.Jeśli zadanie jest uruchamiane przez alert, wartość wagę błędu automatycznie zamienia ten token w kroku zadania. |
(A-MSG) |
Tekst komunikatu.Zadanie jest uruchamiane przez alert, wartość tekstowa wiadomości automatycznie zamienia ten token w kroku zadania. |
(DATA) |
Bieżąca data (w formacie RRRRMMDD). |
(INST) |
Nazwa wystąpienie.Dla wystąpienie domyślnego token ten jest pusty. |
(IDENTYFIKATOR_ZADANIA) |
Identyfikator zadanie. |
(MACH) |
Nazwa komputera. |
(MSSA) |
Nazwa usługa SQLServerAgent wzorca. |
(OSCMD) |
Prefiks używany do uruchamiania programu CmdExec kroki zadanie. |
(SQLDIR) |
Katalog, w którym SQL Server został zainstalowany. Domyślnie ta wartość jest C:\Program Files\Microsoft SQL Server\MSSQL. |
(STEPCT) |
Licznik Czas tego kroku została wykonana (z wyjątkiem ponownych prób).Można za pomocą polecenia krok Wymuszenie zakończenia wieloetapowym pętli. |
(STEPID) |
Identyfikator kroku. |
(SRVR) |
Operator relacyjny "SQL Server"służy do ograniczania zmian do tych, które wystąpiły po północy poprzedniego dnia. Jeśli SQL Server wystąpienie nazwanego wystąpienie, to zawiera nazwę instancji. |
(CZAS) |
Bieżący czas (w formacie HHMMSS). |
(STRTTM) |
Czas (w formacie HHMMSS) zadanie rozpoczęło się wykonywanie. |
(STRTDT) |
Data (w formacie RRRRMMDD) zadanie rozpoczęło się wykonywanie. |
(WMI) (property)) |
Dla zadań, które działają w odpowiedzi na alerty WMI, wartość określona przez właściwość property. Na przykład $(WMI(DatabaseName)) zawiera wartość NazwaBazyDanych właściwość dla zdarzenie WMI, która spowodowała alert do uruchomienia. |
Makra Escape agenta serwera SQL
Escape makra |
Description |
---|---|
$ (ESCAPE_SQUOTE) (token_name)) |
Wyprowadza znaki pojedynczego cudzysłowu (') w ciąg zastępowania tokenu.Zastępuje jeden pojedynczy znak cudzysłowu dwa pojedyncze cudzysłowy. |
$ (ESCAPE_DQUOTE) (token_name)) |
Wyprowadza dwukrotnie znaki cudzysłowu ("") w ciąg zastępowania tokenu.Zastępuje jeden znak cudzysłowu podwójnego dwa podwójne cudzysłowy. |
$ (ESCAPE_RBRACKET) (token_name)) |
Wypływa prawy nawias (]) w ciąg zastępowania tokenu.Zastępuje jeden prawy nawias kwadratowy dwóch prawym nawiasie kwadratowym. |
$ (ESCAPE_NONE) (token_name)) |
Zastępuje token bez ucieczkom wszystkie znaki w ciąg.To makro zapewnia obsługę zgodności ze starszymi wersjami w środowiskach, gdzie tylko oczekiwanych ciągi zastępcze token z zaufanymi użytkownikami.Aby uzyskać więcej informacji zobacz "Aktualizacja zadanie kroki do użyj makra," w dalszej części tego tematu. |
Aktualizowanie zadanie kroki, aby użyć makra
Zaczyna się od SQL Server 2005 Z dodatkiem usługa Pack 1, nie będzie kroki zadania, które zawierają tokenów bez anulowania makr i zwraca komunikat o błędzie wskazujący kroku zadanie zawiera co najmniej jeden tokeny, które muszą zostać zaktualizowane za pomocą makra, zanim zadanie można uruchomić.
Skrypt jest dostarczana w zestawie Microsoft 915845 Artykuł bazy wiedza Microsoft wiedza Base: Kroki zadanie agenta serwera SQL, które korzystają z tokenów błędów w programie SQL Server 2005 Z dodatkiem usługa Pack 1.You za pomocą tego skryptu wszystkich czynności swoje zadanie, które tokeny należy użyć ESCAPE_NONE makra.Po użyciu tego skryptu, zalecane jest zapoznanie użytkownika kroki zadanie, które tokeny za pomocą możliwie jak najszybciej, a następnie zastąpić ESCAPE_NONE makro z makra uruchamianego anulowania odpowiedni dla kontekstu kroku zadanie.
W poniższej tabela opisano jak token wymiany jest obsługiwany przez SQL Server Agent. Aby włączyć alert token zastąpienia lub wyłączyć, kliknij prawym przyciskiem myszy Agenta programu SQL Server w Eksploratorze obiektów, zaznacz opcję Właściwości, a na alert Systemu strona, zaznacz lub wyczyść Zastępowanie tokenów dla wszystkich odpowiedzi zadania alert s pole wyboru.
Składnia tokenu |
Alert zastępowania tokenu na |
Alert zastępowania tokenu wyłączanie |
---|---|---|
Makro ESCAPE używane |
Wszystkie tokeny w zadaniach pomyślnie zostaną zastąpione. |
Tokeny uaktywniony przez alerty nie są zastępowane.Tokeny te są A DBN, A SVR, BŁĄD A, A SEV, A MSG, and WMI)property).Inne statyczne tokeny są zastępowane pomyślnie. |
Makro ESCAPE, nie używane |
Wszystkie zadania zawierającego elementy się nie powieść. |
Wszystkie zadania zawierającego elementy się nie powieść. |
Przykłady składni token w aktualizacji
A.Tokeny w ciągach znaków innych niż zagnieżdżone
W poniższym przykładzie pokazano, jak zaktualizować prosty skrypt nie zagnieżdżone z anulowania odpowiednie makro.Przed uruchomieniem skryptu aktualizacji, poniższy skrypt zadanie w kroku używa tokenu kroku zadanie drukowania nazwę odpowiedniej bazy danych:
PRINT N'Current database name is $(A-DBN)' ;
Po uruchomieniu skryptu aktualizacji ESCAPE_NONE makro jest wstawione przed A-DBN token. Ponieważ znaki pojedynczego cudzysłowu są używane do ograniczania ciąg drukowania, należy zaktualizować kroku zadanie wstawiając ESCAPE_SQUOTE makra w następujący sposób:
PRINT N'Current database name is $(ESCAPE_SQUOTE(A-DBN))' ;
B.Tokeny w ciągach zagnieżdżone
Ponownie zapisywane, tak w skryptach kroku zadanie w przypadku gdy tokeny są używane w zagnieżdżonej ciągi lub instrukcji, zagnieżdżonych instrukcji powinny być przechowywały jako wielokrotne instrukcje przed wstawieniem makra odpowiednie escape.
Na przykład, rozważmy następujący krok zadanie używa A-MSG token i nie został zaktualizowany za pomocą makra uruchamianego anulowania:
PRINT N'Print ''$(A-MSG)''' ;
Po uruchomieniu skryptu aktualizacji ESCAPE_NONE makro jest wstawiany z tokenem. Jednak w takim przypadek należy ponownie napisać skrypt bez użycia w następujący sposób zagnieżdżania i wstawić ESCAPE_SQUOTE makra w celu prawidłowego escape ogranicznikami, które mogą być przekazywane w ciąg zastępowania tokenu:
DECLARE @msgString nvarchar(max)
SET @msgString = '$(ESCAPE_SQUOTE(A-MSG))'
SET @msgString = QUOTENAME(@msgString,'''')
PRINT N'Print ' + @msgString ;
Należy zwrócić również uwagę w tym przykładzie, że funkcja QUOTENAME ustawia znaku cudzysłowu.
C.Tokeny za ESCAPE_NONE makra
Poniższy przykład stanowi część skryptu, który pobiera job_id z sysjobs Tabela i zastosowań JOBID token do wypełniania @JobID Zmienna, która została zadeklarowana wcześniej w skrypcie jako typ danych binarnych. Należy zauważyć, że ponieważ ograniczników nie są wymagane w przypadku typów danych binarnych, ESCAPE_NONE makro jest używana z JOBID token. Nie należy aktualizować ten krok zadanie po uruchomieniu skryptu aktualizacji.
SELECT * FROM msdb.dbo.sysjobs
WHERE @JobID = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID))) ;