Hej, jeg hedder Curt. Jeg er Senior Principal Engineer og arbejder med GSE-teamet.
I denne video viser jeg, hvordan du formindsker en Microsoft SQL Server-databasetransaktionslogfil. Vi gennemgår de forskellige måder at formindske transaktionsloggen på, og hvad du skal gøre, hvis krympeloggen ikke kører som forventet.
Så vi har et par forskellige måder at formindske logfilen på. Vi kan gå ind i SQL Server Management Studio. Gå til databasens egenskaber, og udfør krympeoperationen der, og vi vil demonstrere det først.
Så har vi også operationen med at udføre TSQL ShrinkFile-kommandoen. Den anden ting, vi vil diskutere i denne særlige video, er, hvad der sker, hvis krympefiloperationen ikke kører som forventet, og vi vil diskutere muligheder, du vil tage i så fald Lad os gå videre og komme ind i Studio Management.
Vi skal arbejde med databasen 'AdventureWorks2017', og hvis vi går til 'Opgaver' i databasemenuen og kommer ned til 'Krymp', har vi to forskellige muligheder.
Vi kunne arbejde på databaseniveau, der beskæftiger sig med alle filer i databasen eller beskæftiger sig med specifikke filer, og i dette tilfælde vil vi bestemt gå med specifikke filer. Nu vil du som standard se, at hvis du ser på vores palet her, har vi 'Data', der vises under 'Filtype'.
Vi vil ikke gøre noget med databasefilen, i stedet søger vi at formindske transaktionsloggen, så transaktionsloggen bogstaveligt talt er 'Log' under 'Filtype'. Nu har vi nogle oplysninger om databasen.
Databaseloggen er ret lille, dette er en ny database, og vi ser den størrelse, der er allokeret til transaktionsloggen, og vi ser ledig plads. Ledig plads kan være vigtig, for uden ledig plads kan vi ikke udføre en krympefiloperation på en database.
Der er flere forskellige muligheder. Vi vil ikke gå i detaljer her, men vi har mulighed for at frigive ubrugt plads, som dybest set afkorter transaktionsloggen. Vi kunne køre dette ved blot at klikke på OK, og det ville gå videre og gøre en krympe eller gøre et forsøg på at krympe på den database. I stedet for det vil vi gå videre og se på TSQL-indstillingen til at krympe databasen.
Jeg er lidt doven i dag, så jeg vil gå videre og komme op til 'Script Action to Clipboard', som vil trække transaktionen, TSQL-kommandoen, der ville have været kørt, hvis vi havde klikket OK her.
Jeg vil gå videre og klikke på annuller, og jeg vil gå videre og indsætte TSQL-kommandoen for at lave en krympe på vores AdventureWorks2017-database. Nu, for at gennemgå kommandoen igen, er det en krympefilkommando. Vi har at gøre med AdventureWorks2017-loggen, og vi kan angive, hvor lille loggen skal være.
I dette tilfælde vil vi holde det til standard nul. Hvis du ikke definerer noget her, eller du lader værdien være nul, vil den forsøge at formindske filen til den oprindelige filstørrelse. Vi har indstillingen 'truncateonly', som giver ledig plads i transaktionsloggen tilbage til operativsystemet.
Så mens vi kører det, har vi nu en rapport om, hvad det gjorde og nuværende størrelse. Så det gik videre og reducerede det til omkring en meg, hvilket er fantastisk for os. Meget mere ekstra diskplads givet tilbage til os der. Så en af de ting, vi også vil diskutere i denne video, er, hvad der sker, hvis vi kører krympefil, og den ikke kører med succes.
Den første grund til, at krympefiloperationen ville mislykkes, er fordi der ikke er nok ledig plads i databasen til at udføre krympefilkommandoen. Den første ting, vi vil gøre, er at finde ud af mængden af ledig plads i filen.
Nu så vi det gennem GUI-menuen, hvor vi også kan køre denne særlige kommando imod - nu har vi ændret vores fokus her, vi arbejder med AdventureWorks2019-databasen i stedet. Hvis du kører denne særlige kommando, select-kommandoen, giver den os den mængde ledig plads, der ses i den database.
I øjeblikket ser vi tre megs ledig plads i databasen. Der er to forskellige muligheder, som vi kan bruge til at forsøge at reducere databasen i et tilfælde, hvor vi er løbet tør for ledig plads i den pågældende database. Vi kan ændre indstillingen, gendannelsesindstillingen, for eventyret Works 2019-databasen.
Hvis vi ændrer gendannelsesindstillingen til 'enkel', og vi kører dbcc-krympefilkommandoen, skal den reducere filen ned til en størrelse, der er meget mindre end den oprindelige størrelse. Når vi sætter vores database i simpel tilstand, beskæftiger transaktionsloggen sig med aktive transaktioner, og alt, hvad der ikke er aktivt, skylles ud af loggen.
Vi kan køre netop disse kommandoer. De fleste produktionsdatabaser vil være i fuld gendannelse, så at gå til simpelt giver os mulighed for, eller i det mindste giver os en chance, at køre krympefilkommandoen med succes. Så vi er i simpel tilstand, og endnu en gang er vores scenarie, at vi ikke kunne køre dette med succes.
Efter at have gået til simpel tilstand kører vi synkroniseringskrumpefiloperationen med succes, det giver os oplysningerne om den nye filstørrelse, og det sidste, vi vil gøre i det pågældende tilfælde, er at sætte det tilbage i fuld gendannelsestilstand.
Så på dette tidspunkt har vi taget en uhåndterbar transaktionslogfil med hensyn til at bruge kommandoen shrink file og faktisk bragt den til en tilstand, hvor vi er i stand til at formindske filen, og vi sætter den tilbage i en tilstand, hvor den nu kan sikkerhedskopieres for at sikre, at vi får de nyeste transaktionsoplysninger.
Hermed afsluttes vores demo af, hvordan du formindsker en Microsoft SQL Server-databasetransaktionslog.
Tak, fordi du så med.