Korrupt database? Attach uten log-fil?

Jeg får ofte henvendelser fra DBA’er med “korrupte” databaser hengende i modus “Restoring”, selv om de mener at de ikke har utført en restore. Ofte er logfilen ødelagt eller fjernet. Les løsningene under, så vet du at det finnes håp hvis du ender opp i en slik situasjon.

1. Den mest naturlige årsaken er at du gjør en restore eller ikke fullførte din forrige restore riktig
Løsning:
Fullfør restore av log-backups eller kjør RESTORE DATABASE WITH RECOVERY for å få database online. Alternativt, gjør en restore på nytt.

2. Hvis du mangler backup og log-filen, og mener at databasen ble lukket på forsvarlig måte, så kan du attache en mdf-fil (data) uten å ha ldf-filen (log)
Løsning:
CREATE DATABASE TestDb ON (FILENAME = N’E:\FilenDin.mdf’) FOR ATTACH_REBUILD_LOG

3. Hvis du mangler backup og databasen er korrupt pga “servercrash” gjerne kombinert med “tomt for diskplass”
Løsning:

Les mer >>

SQL Server 2012

Nyeste versjon av SQL Server tidligere kjent som “Denali” ble i Seattle forrige uke offisielt lansert som SQL Server 2012. SQL Server 2012 er nå til test i CTP3, og lansering skjer i Q1 2012.
http://www.microsoft.com/sqlserver/en/us/future-editions.aspx

Følg med på samhandle.no for mer informasjon om nyhetene i SQL Server 2012.

SQL Server 2008 SP3 ble også lansert i oktober
http://www.microsoft.com/download/en/details.aspx?id=27594&WT.mc_id=aff-n-in-loc–pd

TSQL: Hvilke spørringer tar mest tid?

Microsoft SQL Server vil forsøke å gi deg en optimal kjøring basert på SQL Servers innebygde statistikk. Statistikken inneholder informasjon om antall rader og innhold, slik at vi f.eks. bruker hensiksmessige indekser. Manglende oppdaterte statistikk gir dårligere ytelse. “Planen” som SQL Server bruker for å kjøre spørringen kalles en execution plan. Du kan se planlagt brukte execution plan i SQL Server Management studio ved å trykke ctrl + L.

For å se de mest tidkrevende execution plans, kjør spørringen under når “noe” går tregt i en database uten at vet akkurat hva:

--Andreas Munch, Skill 2011
WITH QPLAN AS
(
SELECT TOP 20 SUM(QS.TOTAL_WORKER_TIME) AS TOTAL_CPU_TIME,
SUM(QS.EXECUTION_COUNT) AS TOTAL_EXECUTION_COUNT,
SUM(QS.TOTAL_WORKER_TIME)/SUM(QS.EXECUTION_COUNT) AS EACHEXECUTION,
COUNT(*) AS NUMBER_OF_STATEMENTS, SQL_TEXT.TEXT,
QS.PLAN_HANDLE FROM SYS.DM_EXEC_QUERY_STATS QS CROSS APPLY
SYS.DM_EXEC_SQL_TEXT(SQL_HANDLE) AS SQL_TEXT
GROUP BY SQL_TEXT.TEXT,QS.PLAN_HANDLE
ORDER BY SUM(QS.TOTAL_WORKER_TIME) DESC
)
SELECT * from QPLAN CROSS APPLY sys.dm_exec_query_plan(QPLAN.PLAN_HANDLE)

TSQL: Har du overflødige indekser?

På samhandle.no i går så fortalte jeg hvordan man kan kandidater til nye indekser. Jeg bruker et tilsvarende script for å finne redundante indekser som bør slettes. Indekser kan forbedre ytelsen også på inserts og updates, men det kan være en grei regel å indeksere tyngst der data sjelden endres. Spøringen under lister indekser som primært kun blir endret. Sletting kan spare plass og forbedre ytelsen.

-- Andreas Munch, Skill 2011
-- Overflødige indekser
SELECT
DB_NAME(dm_ius.database_id) [Database], o.name AS ObjectName
, i.name AS IndexName, i.index_id AS IndexID
 Les mer >>

TSQL: Mangler du indekser?

Det finnes ikke funksjonalitet i SQL Server som automatisk gir deg optimale indekser. Det krever kjennskap til SQL Server, brukerne og underliggende data.

Men det finnes litt hjelp å få i sys.dm_db_missing_index-tabellene som ble innført i SQL Server 2005. Jeg bruker ofte spørringen under for å komme i gang. Impact over 5000 er gode kandidater. Høyere indeks = mer relevant.

--Andreas Munch, Skill 2011
SELECT [Impact] = cast((avg_total_user_cost * avg_user_impact)
* (user_seeks + user_scans) as bigint),
[Table] = [statement],
[CreateIndexStatement] = 'CREATE INDEX [Mulig_Index_' +
OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) + '_' Les mer >>

Plasser SQL Server filene dine på riktig volum

Datafiler(mdf, ndf) og logfiler (ldf) som brukes av SQL Server har ulike behov rundt IO. TempDB og logfiler er typisk mer skrive-intensive, mens arkiverte data og data som rapporteres ofte er mer lese-intensive. Dette er et utgangspunkt, men ingen fasit.

Jeg har ofte avdekket at IO er flaskehals i større grad enn f.eks. CPU og minne. Spørringen under lister opp alle filer og forbruk av IO. Resultatet er relativt og det er derfor vanskelig å si om IO faktisk er en flaskehals, men du vil om ikke annet se om du har plassert filene dine på riktig volum.

--Andreas Munch, Skill
SELECT DB_NAME(DbId) [Database],  physical_name, (Size*8)/1024 MBSize,
BytesRead, BytesWritten, IoStallMS, IoStallReadMS, IoStallWriteMS,
NumberReads, NumberWrites FROM ::fn_virtualfilestats(NULL,NULL)
INNER JOIN sys.master_files ON database_id = DbId AND FILE_ID = FileId

Restore SQL – 5 minutter tilbake…

Litt teknisk, men veldig nyttig…

  1. Ta en logbackup av [DatabasenDin]
  2. Sett [DatabasenDin] i single user
  3. Kast ut alle brukere. Finn ut hvem som bruker basen med sp_who. Kast ut brukere med f.eks. “kill 275” for å drepe prosess 275
  4. Ta en restore fra en full backup. Husk NORECOVERY
    RESTORE DATABASE [DatabasenDin] FROM  DISK = N’D:\DatabasenDin.bak’ WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  REPLACE,  STATS = 10
  5. (Hent eventuelle logbackup som er etter den fulle)
    RESTORE LOG [DatabasenDin] FROM  DISK = N’D:\DatabasenDin_Mellomste.trn’ WITH  FILE = 1,  NORECOVERY,  NOUNLOAD,  STATS = 10
  6. Hent nyeste logbackup fra #1. StopAt ønsket klokkeslett som i dette tilfelle er 2010-12-08 kl 15:20:00
    RESTORE LOG [DatabasenDin] FROM  DISK = N’D:\DatabasenDin_Siste.trn’ WITH  FILE = 1,  NOUNLOAD,  STATS = 10,  STOPAT = N’2010-12-08T15:20:00′

Andreas Munch

Automatisk oppdatering av Sharepoint-lister

Å hente eller redigere data direkte i en Sharepoint-database er en løsning vi lenge er blitt frarådet. Løsningen er tilpasset kode eller en oppgradering til en Sharepoint versjon som støtter “Business Connectivity Services” eller “Business Data Catalog”, men selv med Enterprise versjon så er ikke dette alltid “rett ut av boksen”.

En mindre kjent variant er å bruke SQL Server 2008 Integration Services (SSIS). Du får en rask og stabil løsning, og enkel management for IT-avdelingen hvis den mot alle odds skulle feile. CodePlex har laget “SharePoint List Source and Destination” som gjør jobben enklere for deg.

http://sqlsrvintegrationsrv.codeplex.com/releases/view/17652

Les mer >>

Microsoft SQL Server 2008 R2 lansert

Har lekt en stund med beta-versjoner av R2 nå, og endelig er SQL Server 2008 R2 klar for nedlasting. Mye spennende nyheter rundt Business Intelligence spesielt Power Pivot og store endringer for de som jobber med Reporting Services.

SQL Server

Office 2010 og Sharepoint 2010 ble lansert som RTM 22.04.10.

Andreas Munch

Demo av Office og Sharepoint 2010

Microsoft har lagt ut to virtuelle maskiner (demoer) som kan brukes til å evaluere Office 2010 og Sharepoint 2010 for Windows Server.

Den ene virtuelle maskinen inneholder følgende forhåndskonfigurert programvare:

Den andre inkluderer følgende:

 

Filene kan lastes ned fra microsoft.com. Maskinene krever Windows Server 2008 R2, Windows Server 2008 R2 Enterprise eller Windows Server 2008 R2 Standard. Videre må Hyper-V role være aktivert, og selve PC-en må ha en prosessor som støtter Intel VT eller AMD-V. Les mer på microsoft.com.

Kilde: Bink.nu

Next Page →