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.

Advertisements

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

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s