Hur du skapar ett skript som krävs för databasen metadata till att skapa en statistik-databas i SQL Server

Introduktion

Frågeoptimeringen i Microsoft SQL Server används följande typer av information för att bestämma en optimal frågeplan:

  • Databasmetadata

  • Miljö för maskinvara

  • Sessionsläge för databas

Du måste vanligtvis simulera dessa samma typer av information om du vill återskapa beteendet av Frågeoptimeringen i ett testsystem.

Microsoft Customer Support Services kan be dig att generera ett skript av databasmetadata. Microsoft Customer Support Services använder skriptet av databasmetadata för att undersöka problemet optimering. Den här artikeln beskrivs stegen för att generera skriptet statistik. I artikeln beskrivs också hur Frågeoptimeringen använder informationen.

Mer Information

Om du använder SQL Server 2005, innan du gör om du vill generera skriptet, kontrollera att SQL Server Management Studio är versionen av SQL Server 2005 Service Pack 2 eller senare. Om du använder tidigare versioner av SQL Server Management Studio i SQL Server 2005 innehåller Skriptguiden alla nödvändiga alternativ för åtgärderna i denna artikel ska fungera korrekt.

Skriptet hela databasen

När du skapar en databas med statistik bara klona kanske det enklare och mer tillförlitlig skript för hela databasen i stället för enskilda objekt-skript. När du har skript hela databasen får du följande förmåner:

  • Du kan undvika problem med saknade beroende objekt som krävs för att återskapa problemet.

  • Du kräver betydligt färre steg för att markera objekt som behövs.

Obs! Om du skapar ett skript för en databas och metadata för databasen innehåller tusentals objekt, förbrukar scripting processen betydande processorresurser. Vi rekommenderar att du skapar skriptet under lågtrafik. Eller du kan använda det andra alternativet för att generera skript för enskilda objekt.

Gör så här för skript varje databas som refereras av frågan:

  1. Öppna SQL Server Management Studio.

  2. I Object Explorer, expandera databaseroch leta upp den databas som du vill att skript.

  3. Högerklicka på databasen, peka på uppgifteroch klicka sedan på Generera skript.

  4. Kontrollera att rätt databas är markerat i guiden skript. Markera kryssrutan skript alla objekt i den valda databasen och klicka sedan på Nästa.

  5. Ändra följande inställningar i dialogrutan Välj alternativ från standardvärdet till det värde som anges i följande tabell.

    Skript

    Värde att välja

    ANSI-utfyllnad

    SANT

    Fortsätt vid fel-skript

    SANT

    Skapa skript för beroende objekt

    SANT

    Inkludera villkor systemnamn

    SANT

    Skriptet sortering

    SANT

    Skapa skriptet databas

    SANT

    Skript-inloggningar

    SANT

    Nivå skriptbehörighet för objektet

    SANT

    Skriptet statistik

    Skriptet statistik och histogram

    Skript-index

    SANT

    Skriptet utlösare

    SANT

    Obs! Alternativet Skript inloggningar och alternativet Skriptbehörighet objektet nivå kan inte krävas om schemat innehåller objekt som ägs av inloggningar än dbo.

  6. Klicka på Nästa.

  7. Klicka på alternativet för skript till fil och ange ett filnamn.

  8. Klicka på Slutför.

Enskilda objekt i skriptet

Du kan endast enskilda objekt för skript som refereras av en viss fråga i stället för skript i hela databasen. Dock om inte alla objekt i databasen har skapats med hjälp av instruktionen med SCHEMABINDING kan beroendeinformation i tabellen sys.depends system inte alltid korrekt. Den här felaktigheter kan orsakas av något av följande problem:

  • Detta skript inte skript beroende objekt.

  • Detta skript kan skriptobjekt i fel ordning. Om du vill köra skriptet måste du redigera det genererade skriptet manuellt.

Därför rekommenderar vi inte att du skript enskilda objekt, såvida inte databasen innehåller många objekt och skript skulle annars tar för lång tid. Om du måste använda skriptet enskilda objekt, gör du följande:

  1. Expandera databaseri SQL Server Management Studio och leta upp den databas som du vill att skript.

  2. Högerklicka på databasen, peka på Skript databas som, peka på Skapa om du villoch klicka sedan på filen.

  3. Ange ett filnamn och klicka sedan på Spara.

    Att kommer skriptbaserade databasbehållare core. Den här behållaren innehåller filer, filgrupper, databas och egenskaper.

  4. Högerklicka på databasen, peka på uppgifteroch klicka sedan på Generera skript.

  5. Kontrollera att rätt databas är markerad och klicka sedan på Nästa.

  6. Ändra följande inställningar i dialogrutan Välj alternativ från standardvärdet till det värde som anges i följande tabell.

    Skript

    Värde att välja

    ANSI-utfyllnad

    SANT

    Fortsätt vid fel-skript

    SANT

    Inkludera villkor systemnamn

    SANT

    Skapa skript för beroende objekt

    SANT

    Skriptet sortering

    SANT

    Skript-inloggningar

    SANT

    Nivå skriptbehörighet för objektet

    SANT

    Skriptet statistik

    Skriptet statistik och histogram

    Skriptet använda databas

    SANT

    Skript-index

    SANT

    Skriptet utlösare

    SANT

    Obs! Alternativet Skript inloggningar och alternativet Skriptbehörighet objektet nivå kan inte krävas om schemat innehåller objekt som ägs av inloggningar än dbo.

  7. Välja objekttyper i dialogrutan Välj databas objekttyper som refererar till den problematiska frågan.

    Till exempel om frågan endast refererar till tabeller, markera tabeller. Om frågan refererar till en vy, Välj vyer och tabeller. Om den problematiska frågan använder en användardefinierad funktion, Välj funktioner.

  8. Klicka på Nästanär du har valt alla de typer av objekt som refereras av frågan.

  9. En dialogruta visas för varje databas-objekttyp som du valt i steg 7. Välj specifika tabeller, vyer, funktioner eller andra databasobjekt i respektive dialogruta och klicka sedan på Nästa.

  10. Klicka på alternativet för skript till fil och ange samma namn som du angav i steg 3.

  11. Klicka på Slutför för att starta skript.

När du har slutfört skript, skicka skriptfilen till en Microsoft-supporttekniker. Microsofts supporttekniker kan också begära följande information:

  • Maskinvarukonfigurationen, antalet processorer och mängden fysiskt minne som finns

  • Ange alternativ som var aktiva när du kör frågan

Obs! Du kanske har redan angett den här informationen genom att skicka en rapport med SQLDiag eller en Profiler för SQL-spårning. Du har också använt en annan metod för att tillhandahålla denna information.

Hur informationen används.

Följande tabeller förklara hur Frågeoptimeringen använder denna information för att välja en frågeplan.

Metadata

Villkor

Frågeoptimeringen används ofta begränsningar för att identifiera contradictions mellan frågan och underliggande schema. Om frågan har till exempel en "var kol = 5"-sats och en begränsningskontroll "Kontrollera (kol < 5)" finns, Frågeoptimeringen vet att inga rader matchar.

Frågeoptimeringen gör liknande typer av avdrag om Nullbarheten. Till exempel har "Där kol är NULL"-sats visat sig vara sant eller FALSKT beroende på Nullbarheten i kolumnen och om kolumnen är från tabellen yttre av en yttre koppling. Förekomsten av SEKUNDÄRNYCKEL begränsningar är bra att bestämma kardinalitet och ordningen rätt koppling. Frågeoptimeringen kan använda Villkorsinformationen att undanröja kopplingar eller förenkla predikat. Dessa ändringar kan ta bort kravet på att komma åt bastabellerna.

Statistik

Den statistiska informationen som innehåller densitet och ett histogram som visar fördelningen av den inledande kolumnen i nyckeln index och statistik. Beroende på vilken typ av predikatet kan Frågeoptimeringen Använd densitet, histogram eller båda för att uppskatta kardinalitet i ett predikat. Aktuell statistik krävs för korrekt kardinalitet uppskattningar. Kardinalitet uppskattningar kan användas som indata för att uppskatta kostnaden för en operator. Du måste därför ha god kardinalitet uppskattningar för att erhålla optimal frågeplaner.

Tabellens storlek (antal rader och sidor)

Frågeoptimeringen använder histogram och densitet för att beräkna sannolikheten att ett visst predikat är SANT eller FALSKT. Den slutliga kardinalitet uppskattningen beräknas genom att sannolikheten multipliceras med antalet rader som returneras av operatorn underordnade. Antalet sidor i tabellen eller index är en faktor för att uppskatta kostnaden för IO. Tabellen används för att beräkna kostnaden för en sökning och är användbar när du uppskattar antalet sidor som ska användas under ett index seek.

Databasalternativ

Flera databasalternativ kan påverka optimering. Alternativ för AUTO_CREATE_STATISTICS och AUTO_UPDATE_STATISTICS påverkar om Frågeoptimeringen skapar nya statistik eller uppdatera statistik som är för gammal. PARAMETERSTYRNING nivå påverkar hur indata frågan är parameterstyrda innan indata frågan överlämnas till Frågeoptimeringen. Parameterstyrning kan påverka kardinalitet uppskattning och kan även förhindra att matcha mot indexerade vyer och andra typer av optimeringar. DATE_CORRELATION_OPTIMIZATION -inställningen medför att optimering ska söka efter samband mellan kolumner. Den här inställningen påverkar uppskattning kardinalitet och kostnad.

Miljö

Ange alternativ för session

ANSI_NULLS inställning påverkas om den "NULL = NULL" uttrycket utvärderas som SANT. Kardinalitet uppskattning för yttre kopplingar kan ändras beroende på den aktuella inställningen. Dessutom kan tvetydigt uttryck också ändras. Exempel på "kol = NULL" uttrycket utvärderas på olika sätt beroende på inställningen. Men den "kol IS NULL"-uttryck tolkas alltid på samma sätt.

Maskinvaruresurser

Kostnaderna för sortering och hash-aktörer är beroende av den relativa mängden minne som är tillgänglig för SQL Server. Exempelvis om storleken på data som är större än cacheminnet Frågeoptimeringen vet att data alltid måste buffras till disk. Om storleken på data som är mycket mindre än cachen är dock åtgärden förväntas ske i minnet. Optimeringar anser också i SQL Server om servern har mer än en processor och parallellitet inte har inaktiverats med hjälp av en "MAXDOP" ledtråd eller konfigurationsalternativ för högsta grad av parallellitet .

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×