Oprava: Fn_get_sql funkce vrátí text SQL popisovač v systémové tabulce Sysprocesses

Překlady článku Překlady článku
ID článku: 325607 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje opravu hotfix funkční pro SQL Server 2000 implementuje následující změny:
  • Opravy hotfix vytvoří nové fn_get_sql systémové tabulky hodnotou funkci.
  • Oprava hotfix přidá tyto tři nové sloupce konec hlavní sysprocesses systémové tabulky:
    • sql_handle(binární)
    • stmt_start(int)
    • stmt_end(int)

  • Opravy hotfix vytvoří nové příznak trasování, příznak trasování 2861.

Řešení

Tento problém vyřešíte získat nejnovější aktualizaci service pack pro 2000 Microsoft SQL Server. Další informace naleznete následujícím článku znalostní databáze Microsoft Knowledge Base:
290211Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2000
Poznámka: Následující oprava hotfix byla vytvořena před vydáním Microsoft SQL Server 2000 Service Pack 3.

Soubor hotfix

Je oprava hotfix pro SQL Server 2000, které implementuje funkce fn_get_sql.

Obraťte se na odbornou opravu získat. Anglická verze této opravy hotfix má následující (nebo pozdější) atributy souborů. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v ovládacím panelu Datum a čas.
   Date         Time      Version    Size              File name
   -----------------------------------------------------------------

   07/01/2002   4:50 PM   8.00.652   7,285 kilobytes   Sqlservr.exe
				
Poznámka: Vzhledem k závislostem souborů může nejnovější oprava hotfix nebo funkce, která obsahuje soubory také obsahovat další soubory.

Důležité: Pokud chcete, aby funkce tuto opravu, musíte použít sestavení Sqlservr.exe později než nebo rovno 8.00.652 a, musíte spustit Sp2_qfe_serv_uni.sql souboru, který je součástí této opravy. Další informace naleznete Readme.txt souboru, který je součástí souborů oprava.

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku.Tento problém byl poprvé opraven v Microsoft SQL Server 2000 Service Pack 3.

Další informace

Zde je definici a syntaxi funkce tabulky hodnotou systému fn_get_sql.

fn_get_sql

Vrátí text SQL označovány pro zadaný popisovač.

SYNTAXE

fn_get_sql ([@ SqlHandle =] SqlHandle)

Arguments

[@ SqlHandle =] SqlHandle

Popisovač binární hodnota. SqlHandle je binary(20) s žádný výchozí.

Vrácený tabulek

Zmenšit tuto tabulkuRozšířit tuto tabulku
Název sloupceTyp datPopis
DBIDsmallintDatabáze ID. NULL z ad-hoc příkazy SQL.
objectidintID databázového objektu. NULL z ad-hoc SQL příkazů.
číslosmallintČíslo v postupu seskupení Pokud seskupeny. 0 pro položky, které nejsou postupy. NULL z ad-hoc příkazy SQL.
šifrovanéBitOznačuje, pokud je zašifrována objektu:
0 = Šifrované
1 = Šifrováno
TexttextSQL text. NULL z šifrované objektů.

Poznámky

Fn_get_sql je hodnotou tabulce funkce systému, který vrátí SQL text pro zadaný SQLHANDLE. Platné SQLHANDLE můžete získat ze sloupce sql_handle systémové tabulky sysprocesses.

Pokud předat popisovač již existuje v mezipaměti fn_get_sql vrátit sadu výsledků prázdné. Předat neplatný popisovač přeruší dávky a zobrazí následující chybová zpráva:
Server: Zpráva 569, 16 úroveň 1 Stav procedur fn_get_sql 12 řádek popisovač předán fn_get_sql byl neplatný.
SQL Server nelze mezipaměti některé příkazy Transact-SQL, například hromadné operace příkazů a příkazů s řetězcové literály větší než 8 KB. Úchyty tyto příkazy nejsou získat prostřednictvím funkce fn_get_sql.

Sloupec textu je filtrován pro text může obsahovat hesla. Prostudujte si téma "Omezení trasování" v SQL Server Books Online podrobnosti o zabezpečení související s uložené procedury, které jsou sledovány.

Permissions: (Oprávnění:)

Funkce fn_get_sql lze spustit pouze členové pevné role serveru sysadmin.

PŘÍKLADY

Informace vrácené funkcí fn_get_sql je podobný příkazu DBCC INPUTBUFFER. Použití funkce fn_get_sql v situacích, kde je omezena jako například DBCC INPUTBUFFER:
  • Při události mít více než 255 znaků.
  • Když máte vrátit nejvyšší aktuální úroveň vnoření uložené procedury. Například máte dvě uložené procedury s názvem sp_1 a sp_2. Sp_1 uloženy volání procedur sp_2 uložené procedury a získat popisovač z tabulky systému sysprocessessp_2 spuštěna, vrátí funkce fn_get_sql informace o sp_2. Navíc fn_get_sql funkce vrátí celé uložené procedury na nejvyšší úrovni aktuální vnoření.
Funkce fn_get_sql správci databáze slouží k diagnostice problému procesy. Po správce identifikuje problém procesu serveru ID (SPID), správce můžete načíst SQLHANDLE SPID a pak volání funkce fn_get_sql s úchyt a posuny počáteční a koncové určit text SQL problém SPID. Například:
DECLARE @Handle binary(20)
SELECT @Handle = sql_handle FROM sysprocesses WHERE spid = 52
SELECT * FROM ::fn_get_sql(@Handle) 
				
také pomocí můžete funkci fn_get_sql nepřetržitě sledovat server. Například klient nástroj, který pravidelně načítá SQLHANDLE a výkazu zahájení a ukončení Odsadí z tabulky systému sysprocesses. Nástroj udržuje mezipaměť textu SQL s popisovačem SQL jako jedinečný klíč a výsledky funkce fn_get_sql jako hodnotu. Pro každý řádek v tabulce řádků sysprocesses systému Nástroj vyhledá text v jeho svou mezipaměti na základě SQLHANDLE. Pokud text není v mezipaměti na nástroj, nástroj pak volání funkce fn_get_sql získat text a uložení v mezipaměti.

Trasování příznak 2861

Příznak trasování 2861 pokyn SQL Server k zachovat nulové náklady plány v mezipaměti, SQL Server by obvykle není mezipaměti (například dotazy jednoduché ad-hoc, sadu příkazů, potvrzení transakce a ostatním uživatelům).
  • Pokud příznak trasování 2861 zapnuta, můžete funkce fn_get_sql vrátit textu SQL mají nulové náklady plány aktivit. Pokud příznak trasování 2861 vypnut, nemůže funkce fn_get_sql vrátit textu SQL pro aktivity s plány nulové náklady.
  • Ve výchozím příznak trasování 2861 je vypnuto použít tuto opravu.

Poznámky

Počet objektů v mezipaměti postup zvýšit při zapnuté příznak trasování 2861. Protože jsou další objekty tak malá, uvidíte malé zvýšení v paměti, zabírá podle postupu mezipaměti.

SQL Server 2000 má efektivní algoritmus najít žádné existující plán spuštění pro libovolný zadaný příkaz SQL. Z důvodu zvýšení počtu objektů uložených v mezipaměti postup je však možné, že čas potřebný pro relační stroj vyhledávání existujícího plánu může snížit a negativně ovlivnit výkon systému.

V systémech, kde velikost databáze je mnohem větší než velikost paměti, systém je obvykle pod některé tlaku očekávané paměti. Pokud je tlak paměti, paměti je vyžadována pro jiné objekty, proces lazywriter navrátit objektů v mezipaměti postup. Tato velikost mezipaměti postup bude vázat a bude minimalizovat potenciální nepříznivě vliv této změny.

Však systémech velikost paměti, která je větší než velikost databáze v systému není obecně pod tlak paměti. Proto není objekty uvolnit z mezipaměti postup z důvodu potřeb paměti a může narůstat velikost mezipaměti postup bodu, kde jej bude nepříznivě ovlivnit výkon.

Pokud Poznámka nepříznivě vliv na výkon systému, postupujte takto:
  1. Příznak trasování 2861 vypnout.
  2. Spusťte příkaz DBCC FREEPROCCACHE Query Analyzer. Nemáte restartujte službu SQL Server.

Vlastnosti

ID článku: 325607 - Poslední aktualizace: 27. září 2005 - Revize: 5.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2000 Standard Edition
Klíčová slova: 
kbmt kbhotfixserver kbqfe kbsqlserv2000sp3fix kbfix kbinfo kbsqlserv2000presp3fix KB325607 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:325607

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com