sql >> Databáze >  >> RDS >> Sqlserver

Známý problém?:Uložená procedura serveru SQL Server 2005 se nedokončí s parametrem

Zkuste zamaskovat vstupní parametr.

Předpokládám, že rekompilace nefunguje kvůli zadané výchozí hodnotě (EDIT :Nebo parametr odeslaný při prvním volání) je sniffován v době kompilace. Takže rekompilace nemá žádný účinek.

Viděl jsem obrovský rozdíl mezi odhadovanými plány jednoduše změnou výchozího nastavení z řekněme nuly na NULL nebo bez něj.

ALTER PROCEDURE [usp_debug_mightwork]
    @DATA_DT_ID AS int = 20081130
AS
BEGIN
    DECLARE @IDATA_DT_ID AS int
    SET @IDATA_DT_ID = @DATA_DT_ID
    -- Stuff here that depends on IDATA_DT_ID
END

Myslím, že tento článek vysvětluje...

EDIT:

Nový odkaz na plány dotazů a parametry . Je to stále parametr sniffing, zda je zadána výchozí hodnota nebo ne.

Související článek o konstantách a plánech



  1. Použijte Plink ke spuštění příkazu (Oracle SQL dotaz) na vzdáleném serveru přes SSH

  2. Schéma databáze pro zasílání zpráv více uživatelům

  3. Jak se mohu připojit k webové databázi Oracle pomocí Java?

  4. Jak volat uložené procedury pomocí EntityFramework?