Udostępnij za pośrednictwem


Tokeny w krokach zadania

SQL ServerAgent umożliwia użycie tokenów w Transact-SQL zadanie krok skryptów.Tokeny podczas pisania czynności zadanie zapewnia elastyczność tego samego, zapewnienia zmiennych podczas pisania programów.Po wstawieniu token w skrypcie krok zadanie SQL Server Agent zamienia token przy uruchomieniu czas, przed wykonaniem kroku zadanie przez Transact-SQL podsystemu.

Ważna informacjaWażne:

Począwszy od SQL Server 2005 Service Pack 1, SQL Server Agent zadanie krok token składni zmieniony.W wyniku makro escape musi towarzyszyć teraz wszystkie tokeny w czynności zadania, inaczej tych kroków zadanie nie powiedzie się.Za pomocą makra ewakuacji i aktualizowania programu SQL Server czynności zadanie agenta wykorzystujących tokeny są opisane w poniższych sekcjach "przy użyciu tokenów zrozumienia," "SQL Server Tokenów agenta i makra," i "Do użycia makr, aktualizowanie czynności zadania". Ponadto SQL Server 2000 składnię, której kwadratowych wywoływanie SQL Server tokeny krok zadanie agenta (na przykład "[DATE]") został zmieniony.Należy teraz należy umieścić nazwy tokenu w nawiasach i umieść znak dolara ($) na początku token składni.Na przykład:

$(ESCAPE_Nazwa makra(DATE))

Opis tokeny

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Każdy użytkownik systemu Windows z uprawnieniami do zapisu w dzienniku zdarzeń systemu Windows można uzyskać dostęp do czynności zadanie, które są uaktywniane przez SQL Server alerty agenta lub alerty WMI.Aby uniknąć tego zagrożenia zabezpieczeń SQL Server tokeny Agent, które mogą być używane w zadaniach uaktywniona przez alerty są wyłączone domyślnieTokeny te są: A-DBN, A-SVR, A-ERR, A-SEV, A-MSG., and WMI(właściwość).

Jeśli trzeba użyć tych tokenów, najpierw upewnij się że tylko członkowie zaufane grupy zabezpieczeń systemu Windows, takich jak grupy Administratorzy mają uprawnienia do zapisu w dzienniku zdarzeń komputera, gdzie SQL Server rezyduje.Następnie kliknij prawym przyciskiem myszy Agenta programu SQL Server Object Explorer wybierz Właściwościi na Systemu ostrzegania strona wybierz Zamień wszystkie tokeny zadanie odpowiedzi na alerty włączyć te tokeny.

SQL ServerAgent zastępowania tokenu jest proste i skuteczne: SQL Server Agent zastępuje dokładnie literał ciąg wartość dla tokenu.Wszystkie tokeny są przypadek-poufne.Czynności zadanie muszą to uwzględniać i poprawnie oferta tokeny użyć lub przekonwertować ciąg zastępujący poprawny 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 dodaje się makr z A dbn token.Przy uruchomieniu czas, A dbn token zostanie zastąpione nazwę odpowiedniej bazy danych.Makro escape wypływa pojedyncze znaki cudzysłowu, które mogą przypadkowo przekazywane w ciąg zastępowania tokenu.SQL Server Agent zamieni dwa znaki pojedynczego cudzysłowu w ciąg końcowy jeden pojedynczy cudzysłów.

Na przykład, jeśli ciąg przekazany do zastępowania tokenu jest AdventureWorks2008R2'SELECT @@VERSION --, polecenie wykonywane przez SQL Server będzie krok zadanie agenta:

PRINT N'Current database name is AdventureWorks2008R2''SELECT @@VERSION --' ;

W tym przypadek wstawionego instrukcja SELECT @@VERSION, nie wykonać.Zamiast tego dodatkowego pojedynczego cudzysłowu powoduje, że serwer analizy składni instrukcja wstawionego jako ciąg.Jeśli ciąg zastępujący tokenu nie zawiera pojedynczy cudzysłów, żadne znaki są wyjściowym i krok zadanie zawierające token wykonuje się zgodnie z przeznaczeniem.

Debugowania użycie tokenów w czynności zadania, użyć instrukcji drukowania takich jak PRINT N'$(ESCAPE_SQUOTE(SQLDIR))' i zapisać zadanie krok wyjście do pliku lub tabela.Użyj Zaawansowane strona Właściwości krok zadania okno dialogowe, aby określić zadanie krok wyjściowy plik lub tabela.

SQL ServerTokeny agenta i makra

W poniższych tabelach listę i opis makra i tokeny, SQL Server obsługuje agenta.

SQL ServerTokeny Agent

Token

Opis

(A-DBN)

Nazwa bazy danych.Zadanie jest uruchamiane przez alert, wartość nazwy bazy danych automatycznie zamienia ten token w kroku zadania.

(A SVR)

Nazwa serwera.Zadanie jest uruchamiane przez alert, wartość nazwa serwera automatycznie zamienia ten token w kroku zadania.

(A-ERR)

Numer błędu.Zadanie jest uruchamiane przez alert, wartość numer błędu automatycznie zamienia ten token w kroku zadania.

(A TAP)

Waga błędu.Zadanie jest uruchamiane przez alert, wartość błędu ważności 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ąpienia.Dla wystąpienie domyślne token ten będzie miał nazwa wystąpienie domyślne: MSSQLSERVER.

(JOBID)

Identyfikator zadania.

(STAN)

Nazwa komputera.

(MSSA)

Nazwa usługa SQLServerAgent wzorca.

(OSCMD)

Prefiks używany do uruchamiania programu CmdExec zadanie kroki.

(SQLDIR)

Katalog, w którym SQL Server jest zainstalowany.Domyślnie ta wartość jest C:\Program Files\Microsoft SQL Server\MSSQL.

(STEPCT)

Licznik Czas tego kroku została wykonana (z wyłączeniem ponownych prób).Można za pomocą polecenia krok wymusić zakończenie wieloetapowym pętli.

(STEPID)

Identyfikator kroku.

(SRVR)

Nazwa komputera z systemem SQL Server.Jeśli SQL Server jest wystąpienie nazwane wystąpienie, obejmuje nazwę instancji.

(CZAS)

Bieżącą czas (w formacie HHMMSS).

(STRTTM)

Czas (w formacie HHMMSS) zadanie rozpoczął wykonywanie.

(STRTDT)

Data (w formacie RRRRMMDD) zadanie rozpoczął wykonywanie.

(WMI(property))

Dla zadań, które są uruchamiane w odpowiedzi na alerty WMI, wartość właściwość określonej przez property.Na przykład $(WMI(DatabaseName)) zawiera wartość DatabaseName właściwość zdarzenie WMI, która spowodowała alert do uruchomienia.

SQL ServerAgent Escape makra

Escape makra

Opis

$(ESCAPE_SQUOTE (token_name))

Wyprowadza znaki pojedynczego cudzysłowu (') w ciąg zastępowania tokenu.Zamienia jeden pojedynczy cudzysłów dwa znaki pojedynczego cudzysłowu.

$(ESCAPE_DQUOTE (token_name))

Wyprowadza dwukrotnie znaki cudzysłowu (") w ciąg zastępowania tokenu.Zamienia jeden cudzysłów podwójny cudzysłów.

$(ESCAPE_RBRACKET (token_name))

Wypływa prawe nawiasy ([]) w ciąg zastępowania tokenu.Zamienia jeden nawias dwóch prawe nawiasy.

$(ESCAPE_NONE (token_name))

Zamienia token bez ucieczce wszystkie znaki w ciąg.To makro jest dostarczany do obsługi zgodności z poprzednimi wersjami w środowiskach, gdzie ciągów zastępczych token są oczekiwane tylko z zaufanymi użytkownikami.Aby uzyskać więcej informacji zobacz "Aktualizacja zadania kroki do użycia makr" w dalszej części tego tematu.

Aktualizowanie zadania kroki, aby użyć makr

Począwszy od SQL Server 2005 Service Pack 1 czynności zadanie zawierające tokenów bez anulowania makra będzie się niepowodzeniem i zwraca komunikat o błędzie wskazujący krok zadanie zawiera jeden lub więcej tokeny, które muszą zostać zaktualizowane makro przed zadanie można Uruchom.

Skrypt jest dostarczany z Microsoft bazy wiedzy Knowledge Base artykuł 915845: Niepowodzenie czynności zadanie agenta serwera SQL, używających tokenów w programie SQL Server 2005 Z dodatkiem Service Pack 1.Ten skrypt umożliwia aktualizowanie wszystkich czynności zadanie używające tokenów z ESCAPE_NONE makro.Po użyciu tego skryptu, zaleca się przeglądanie etapów zadanie, które tokeny należy użyć możliwie najszybciej i zastąpić ESCAPE_NONE makro z makro escape właściwe dla kontekstu krok zadanie.

W poniższej tabela opisano jak token zastępczy jest obsługiwany przez SQL Server agenta.Do zastępowania tokenu alert należy włączyć lub wyłączyć, kliknij prawym przyciskiem myszy sql Server Agent Object Explorer wybierz Właściwościi na System alert strona, zaznacz lub wyczyść Zamień wszystkie tokeny zadanie odpowiedzi na alerty pole wyboru.

Składnia token

Alert zastępowania tokenu na

Alert zastępowania tokenu off

ESCAPE używane makra

Pomyślnie otrzymuje wszystkie tokeny zadań.

Tokeny uaktywniona przez alerty nie są zastępowane.These tokens are A-DBN, A-SVR, A-ERR, A-SEV, A-MSG, and WMI(property).Inne statyczne tokeny zastępuje się pomyślnie.

Makro EWAKUACJI, nie używane

Nie wszystkie zadania zawierające tokenów.

Nie wszystkie zadania zawierające tokenów.

Przykłady składni token w aktualizacji

A.Tokeny-zagnieżdżone ciągów

Poniższy przykład ilustruje aktualizowane prosty skrypt zagnieżdżone escape odpowiednie makro.Przed uruchomieniem skryptu aktualizacji, poniższy skrypt krok zadania tokena zadanie krok wydrukować nazwę odpowiedniej bazy danych:

PRINT N'Current database name is $(A-DBN)' ;

Po uruchomieniu skryptu aktualizacji ESCAPE_NONE makro dodaje się przed A-DBN token.Pojedyncze cudzysłowy są używane do ograniczania ciąg wydruku, należy zaktualizować krok zadanie, wstawiając ESCAPE_SQUOTE makro w następujący sposób:

PRINT N'Current database name is $(ESCAPE_SQUOTE(A-DBN))' ;

B.Tokeny ciągów zagnieżdżonych

W skryptach krok zadanie, gdzie tokeny są używane w zagnieżdżonych ciągi lub oświadczenia zagnieżdżonych instrukcji powinny być przepisany wielokrotne instrukcje przed wstawieniem makra właściwe escape.

Na przykład, rozważmy krok zadanie następujące używa A-MSG token i nie został zaktualizowany za pomocą makra escape:

PRINT N'Print ''$(A-MSG)''' ;

Po uruchomieniu skryptu aktualizacji ESCAPE_NONE dodaje się makr z tokenu.Jednakże w takim przypadek należy ponownie napisać skrypt bez użycia następująco zagnieżdżanie i wstawić ESCAPE_SQUOTE makro poprawnie 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 też zauważyć w tym przykładzie, że funkcja QUOTENAME ustawia znaku cudzysłowu.

C.Tokeny z makra ESCAPE_NONE

Poniższy przykład stanowi część skryptu, który pobiera job_id z sysjobs tabela i zastosowań JOBID tokenu, aby wypełnić @JobID zmienną, który został uznany wcześniej w skrypcie jako typ danych binarnych.Należy zauważyć, że ponieważ ograniczników nie są wymagane dla typów danych binarnych, ESCAPE_NONE makro jest używany z JOBID token.Nie trzeba aktualizować ten krok zadanie po uruchomieniu skryptu aktualizacji.

SELECT * FROM msdb.dbo.sysjobs

WHERE @JobID = CONVERT(uniqueidentifier, $(ESCAPE_NONE(JOBID))) ;

Zobacz także

Odwołanie