Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Wykonywanie T-SQL w zadaniu

Termin Definicja
Wykonywanie T-SQL w zadaniu

Wykonywanie T-SQL w zadaniu to najczęstszy typ kroku SQL Server Agent, uruchamiający polecenia bazodanowe.

Rola kroku T-SQL w SQL Server Agent

Wykonywanie T-SQL w zadaniu jest typem kroku dostępnego w zadaniu usługi SQL Server Agent. Taki krok uruchamia instrukcje Transact-SQL na wskazanej instancji aparatu Database Engine. Zadanie może składać się z jednego kroku albo z wielu kroków wykonywanych według określonej kolejności. Każdy krok ma własną nazwę, polecenie, bazę danych, konto wykonawcze oraz reguły przejścia po sukcesie lub błędzie.

W oknie właściwości kroku administrator wybiera typ Transact-SQL script (T-SQL), wskazuje bazę danych i wpisuje pojedynczą instrukcję, blok instrukcji albo odwołanie do skryptu zapisanym w pliku. Polecenie jest wykonywane przez silnik SQL Server, dlatego jego poprawność zależy od składni T-SQL, uprawnień konta oraz obiektów dostępnych w wybranej bazie. Sam SQL Server Agent nie interpretuje instrukcji jako poleceń systemu Windows.

Zakres instrukcji i kontekst wykonania

Krok może wykonywać między innymi zapytania SELECT, modyfikacje danych za pomocą INSERT, UPDATE i DELETE, polecenia administracyjne, procedury składowane oraz instrukcje obsługujące transakcje. W praktyce często umieszcza się w nim wywołanie procedury składowanej, na przykład procedury przygotowującej dane raportowe lub porządkującej tabele robocze. Jeżeli polecenie zawiera kilka instrukcji, ich działanie powinno być zaplanowane z uwzględnieniem kolejności i ewentualnych zależności między obiektami.

Wybrana baza danych określa domyślny kontekst, w którym są rozwiązywane nazwy obiektów. Odwołanie bez prefiksu schematu, takie jak SELECT * FROM Orders, może więc oznaczać inny obiekt niż podobne polecenie uruchomione w SSMS po ręcznym przełączeniu bazy. Bezpieczniej jest stosować pełne nazwy, na przykład dbo.Orders, oraz jawnie wskazywać bazę w konfiguracji kroku. Instrukcja USE może zmienić kontekst w obrębie wykonywanego skryptu, ale nie zastępuje prawidłowego ustawienia bazy zadania.

Obsługa błędów, wyników i kolejności kroków

SQL Server Agent zapisuje wynik wykonania kroku jako sukces albo niepowodzenie, a konfiguracja zadania może określać dalsze działanie: zakończenie zadania, przejście do następnego kroku, ponowienie próby lub przejście do wskazanego kroku. Sam fakt wykonania polecenia nie oznacza, że operacja biznesowa zakończyła się poprawnie. Skrypt może zakończyć się komunikatem ostrzegawczym, zwrócić nieoczekiwany wynik albo częściowo zmienić dane, jeśli nie zastosowano odpowiedniej kontroli transakcji.

W skryptach wieloinstrukcyjnych warto jawnie sprawdzać wartości ERROR_NUMBER(), ERROR_MESSAGE() i powiązane funkcje w bloku TRY...CATCH. Dla operacji, które powinny wykonać się w całości, stosuje się transakcję z BEGIN TRANSACTION, COMMIT oraz ROLLBACK. Trzeba jednak pamiętać, że nie każda instrukcja może być bezpiecznie objęta wspólną transakcją, a długie transakcje blokują zasoby i mogą zwiększać liczbę oczekujących sesji. Warto też ustawić limit czasu kroku i liczbę ponowień adekwatnie do charakteru operacji.

Uprawnienia i diagnostyka wykonania zadania

Krok T-SQL działa z uprawnieniami przypisanymi do wykonującego go kontekstu. Znaczenie mają członkostwo konta w rolach serwera, role bazy danych, uprawnienia do tabel, widoków, procedur i innych obiektów, a także własność procedur oraz mechanizmy łańcucha własności. Uprawnienia administratora użyte tylko po to, aby „naprawić” błąd kroku, mogą ukryć rzeczywistą przyczynę i rozszerzyć zakres dostępu bardziej, niż wymaga tego skrypt.

Analizę problemu rozpoczyna się od historii zadania w SQL Server Agent. Należy sprawdzić nazwę kroku, czas rozpoczęcia, czas zakończenia, komunikat błędu, wybraną bazę, ustawienia ponawiania oraz zależności od wcześniejszych kroków. Następnie porównuje się ten kontekst z ręcznym uruchomieniem kontrolnego zapytania, używając tego samego loginu lub konta proxy, o ile konfiguracja na to pozwala. Błędy typu „obiekt nie istnieje”, „odmowa uprawnień”, przekroczenie limitu czasu i blokowanie przez inną transakcję wskazują na różne klasy przyczyn, dlatego nie powinny być traktowane jako jeden ogólny błąd SQL.

Podczas diagnostyki środowiska serwerowego należy również zweryfikować, czy zadanie wskazuje właściwą instancję SQL Server, czy harmonogram nie uruchamia kilku równoległych kopii oraz czy poprzedni krok przekazuje oczekiwany stan do kolejnego. Szczególnej uwagi wymagają skrypty zależne od daty, strefy czasowej, poziomu zgodności bazy i ustawień sesji, ponieważ te same instrukcje mogą dawać inne rezultaty po zmianie konfiguracji instancji lub bazy danych.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę