MSG 8624: The query processor could not produce a query plan

Érdekes hibába futottunk bele már nem először: adott egy INSERT szkript, ami nagyon nem akar lefutni, az alábbi hibával örvendezteti meg a gazdáját:

Msg 8624, Level 16, State 1, Line 13
Internal Query Processor Error: The query processor could not produce a query plan. For more information, contact Customer Support Services.

Na ez az, amire az ember azt mondja, hogy könyörgöm, ez csak egy sima insert, mi ebben olyan nehéz? Úgy tűnik, hogy a probléma az idegen kulcsok és a persisted oszlopok környékén lehet, legalábbis erre utal az alábbi két Connect bug:

A hiba évek óta ismert, de azért még mindig sikerül reprodukálni, tessék csak szavazni rá, hátha egyszer megjavítják.

Szerencsére van workaround (én nem hívnám megoldásnak, de működik):

SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON

Az utolsó csak akkor kell, ha az adatbázis 80-as kompatibilitási módban van.

Remélem sikerült ezzel megkímélni másokat is pár órányi debuggolástól.

One thought on “MSG 8624: The query processor could not produce a query plan

  1. nyelvész

    Én nem tudo mióta, de nálam ez az alap:

    — A kiemelten fontosak
    ALTER DATABASE [$(D2_ceg_dbname)] SET AUTO_CLOSE ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET RECOVERY FULL
    ALTER DATABASE [$(D2_ceg_dbname)] SET READ_WRITE
    ALTER DATABASE [$(D2_ceg_dbname)] SET MULTI_USER

    — Required SET Options for Filtered Indexes
    ALTER DATABASE [$(D2_ceg_dbname)] SET ANSI_NULLS ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET ANSI_PADDING ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET ANSI_WARNINGS ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET ARITHABORT ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET CONCAT_NULL_YIELDS_NULL ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET NUMERIC_ROUNDABORT OFF
    ALTER DATABASE [$(D2_ceg_dbname)] SET QUOTED_IDENTIFIER ON

    — A továbbiak névsorrendben
    ALTER DATABASE [$(D2_ceg_dbname)] SET ANSI_NULL_DEFAULT OFF
    ALTER DATABASE [$(D2_ceg_dbname)] SET AUTO_CREATE_STATISTICS ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET AUTO_UPDATE_STATISTICS ON
    ALTER DATABASE [$(D2_ceg_dbname)] SET CURSOR_CLOSE_ON_COMMIT OFF
    ALTER DATABASE [$(D2_ceg_dbname)] SET CURSOR_DEFAULT LOCAL
    ALTER DATABASE [$(D2_ceg_dbname)] SET RECURSIVE_TRIGGERS OFF
    ALTER DATABASE [$(D2_ceg_dbname)] SET PAGE_VERIFY TORN_PAGE_DETECTION

    –Dátumformátumot nem tudjuk adatbázisszinten beállítani, ezt a szkriptek elején kiadhatjuk:
    set dateformat ymd

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s