Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Zwraca tekst instrukcji SQL dla określonego uchwytu SQL.
Ważne
Ta funkcja zostanie usunięta w przyszłej wersji programu Microsoft SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Zamiast tego użyj sys.dm_exec_sql_text. Aby uzyskać więcej informacji, zobacz sys.dm_exec_sql_text (Transact-SQL).
Transact-SQL konwencje składni
Składnia
sys.fn_get_sql ( SqlHandle )
Argumenty (w programowaniu)
SqlHandle
Czy wartość uchwytu.
SqlHandle jest varbinary(64) bez wartości domyślnej.
Zwrócone tabele
Nazwa kolumny | Typ danych | Opis |
---|---|---|
dbid | smallint | Identyfikator bazy danych. W przypadku instrukcji ad hoc i przygotowanych sql identyfikator bazy danych, w której skompilowano instrukcje. |
identyfikator obiektu | Int | Identyfikator obiektu bazy danych. Jest wartością NULL dla instrukcji SQL ad hoc. |
Liczba | smallint | Wskazuje liczbę grup, jeśli procedury są pogrupowane. 0 = Wpisy nie są procedurami. NULL = instrukcje SQL ad hoc. |
Szyfrowane | bit | Wskazuje, czy obiekt jest zaszyfrowany. 0 = Niezaszyfrowane 1 = Zaszyfrowane |
Tekst | tekst | To tekst instrukcji SQL. Ma wartość NULL dla zaszyfrowanych obiektów. |
Uwagi
Prawidłowy uchwyt SQL można uzyskać z kolumny sql_handle dynamicznego widoku zarządzania sys.dm_exec_requests (Transact-SQL).
Jeśli przekażesz uchwyt, który już nie istnieje w pamięci podręcznej, fn_get_sql zwróci pusty zestaw wyników. Jeśli przekażesz uchwyt, który jest nieprawidłowy, partia zostanie zatrzymana i zostanie zwrócony komunikat o błędzie.
Aparat bazy danych programu SQL Server nie może buforowania niektórych instrukcji Transact-SQL, takich jak instrukcje kopiowania zbiorczego i instrukcje z literałami ciągu, które są większe niż 8 KB. Nie można pobrać dojść do tych instrukcji przy użyciu fn_get_sql.
Kolumna tekstowa zestawu wyników jest filtrowana pod kątem tekstu, który może zawierać hasła. Aby uzyskać więcej informacji na temat procedur składowanych związanych z zabezpieczeniami, które nie są monitorowane, zobacz Filtrowanie śledzenia.
Funkcja fn_get_sql zwraca informacje podobne do polecenia DBCC INPUTBUFFER . Poniżej przedstawiono przykłady użycia funkcji fn_get_sql, ponieważ nie można użyć funkcji DBCC INPUTBUFFER:
Gdy zdarzenia mają więcej niż 255 znaków.
Gdy trzeba zwrócić najwyższy bieżący poziom zagnieżdżania procedury składowanej. Istnieją na przykład dwie procedury składowane o nazwie sp_1 i sp_2. Jeśli sp_1 wywołuje sp_2 i uzyskujesz dojście z dynamicznego widoku zarządzania sys.dm_exec_requests podczas działania sp_2, funkcja fn_get_sql zwraca informacje o sp_2. Ponadto funkcja fn_get_sql zwraca pełny tekst procedury składowanej na najwyższym bieżącym poziomie zagnieżdżania.
Uprawnienia
Użytkownik musi mieć uprawnienia WYŚWIETL STAN SERWERA na serwerze.
Przykłady
Administratorzy baz danych mogą używać funkcji fn_get_sql, jak pokazano w poniższym przykładzie, aby ułatwić diagnozowanie procesów problemów. Po zidentyfikowaniu identyfikatora sesji problemu administrator może pobrać dojście SQL dla tej sesji, wywołać fn_get_sql z dojściem, a następnie użyć przesunięcia początkowego i końcowego, aby określić tekst SQL identyfikatora sesji problemu.
DECLARE @Handle varbinary(64);
SELECT @Handle = sql_handle
FROM sys.dm_exec_requests
WHERE session_id = 52 and request_id = 0;
SELECT * FROM sys.fn_get_sql(@Handle);
GO
Zobacz też
DBCC INPUTBUFFER (Transact-SQL)
sys.sysprocesses (Transact-SQL)
sys.dm_exec_requests (Transact-SQL)