Posts tagged SQL Server
Quickly handle “Exclusive access could not be obtained because the database is use” at restore
Jun 7th
A common error many people face when working in a test environment with SQL Server 2005 / 2008 and wanting to restore a database, is the following: “Exclusive access could not be obtained because the database is use” This error means one or more users or processes are already accessing the database, so you can’t [...]
Post TechDay event Workshop SSDT (SQL Server Data Tools)
Feb 21st
On Saturday 18 February 2012 took in Baarn at VX Company the SSDT (SQL Server Data Tools) event place. This event organized by VX Company and SDN took place after the TechDays! On this Saturday Gert Drapers especially came to give a Deep Dive session about SQL Server Data Tools. To make it even more interesting Gert used the latest build of the tools. During the session a lot of inside information was given about the tools, but also about the way the tools are developed.
SQL Server Maintenance plan – the good, the bad and the ugly
Sep 7th
Een steeds terugkerend pijnpunt bij mijn SQL Server reviews betreft het inrichten van een maintenance plan: ik ben nog geen goede tegen gekomen! Waarom niet, Er zit toch zo’n prachtige maintenance plan wizard in SQL Server Management Studio?! Klopt, maar juist daarom verbaast het me niet dat ik nog geen goede ben tegen gekomen. Want die maak je daar niet mee! Ik zal me nader verklaren.
Groeistuipen van een SQL Server database
Aug 25th
Wanneer een database wordt gecreeerd dan krijgt hij per default de volgende groeiparameters:
- Startgrootte 3MB, automatisch groeien met 1MB per keer
- Startgrootte 1MB, automatisch groeien met 10% per keer
Query optimalisatie mbv indexen
Aug 25th
Elke tabel in een OLTP database zou een clustered index moeten hebben.
Waarom? Een tabel zonder clustered index wordt een heap genoemd, en een heap biedt totaal geen structuur. SQL Server houdt slechts bij welke database pagina’s gealloceerd zijn voor de tabel en kan in principe dus niks anders dan sequentieel langs die database pagina’s lopen. Wanneer non-clustered indexen worden geplaatst bovenop een heap, dan kan SQL Server niet anders dan absolute verwijzingen maken naar de data. Een absolute verwijzing bestaat uit een row-id: filenr+pagenr+slotnr. Als dan vervolgens een update wordt gedaan op een record en dat record past daardoor niet meer op de pagina, dan moet het record verhuizen naar een andere pagina. Om te voorkomen dat SQL Server daardoor de dataverwijzingen in de indexen ook moet aanpassen, wordt er op het oude adres een doorverwijzing gemaakt naar het nieuwe adres; een zogenaamd forwarding record. Dit proces kan zich voor hetzelfde record herhalen
waardoor er na verloop van tijd een lange keten van doorverwijzingen ontstaat. Dit geeft een sub-optimale performance, maar is ook foutgevoelig. Eén keer een schrijffoutje op disk kan de ketting van doorverwijzingen verbreken en omdat er voor de rest geen structuur is, kan dit niet automatisch worden hersteld. Dat betekent meestal verlies van data. Kortom, een heap is prima geschikt als tijdelijke tabel, maar niet voor een tabel die updates te verwerken krijgt.
Wat is een goede clustered index sleutel?
Aug 23rd
Ik doe regelmatig reviews van de SQL Server omgeving bij klanten. Een van de aandachtspunten die telkens terug komt is de keuze van de clustered index sleutel.