TopplistanDatorerDetaljer för "SQL Server på svenska"

SQL Server på svenska

SQL Server på svenska
Svensk blogg om SQL Server, skriven på svenska. Kodexempel, fördjupande förklaringar och reflexioner av nyheter inom SQL Server-världen.

Artiklar

2008
2008-06-17 10:24:00
Det har varit tyst härifrån ett tag. Det beror på att min fritid ägnas i större utsträckning till att umgås med min bebis och min sambo (kloka val) och att jag begränsar min fritid genom att arbeta mycket (inget val..). Snart har jag semester följt av föräldraledighet. 10 veckor tillsammans med sambon, följt av ett halvår med 80% föräldraledighet. Skönt! Men lite bloggande blir det nog under den här tiden. Jag håller på att installera SQL Server 2008 och Visual Studio Express 2008, och återkommer med lite rapporter om både SQL Server 2008 och om interaktionen mellan VS2008 Express och SQL Server. Jag har ett projekt i huvudet, som i korthet går ut på att skriva om Bloggvänstern så att den BARA körs under SQL Server. Det är vansinnigt, men kunde vara kul att prova på. Självklart blir det CLR för en stor del av slanten. Det blir inte Bloggvänstern som sådant i första hand som ska köras i SQL Server, utan det blir en mer generell Bloggportal-applikation. Om det här projektet verkli...
Varför jag inte skulle använda unika index med ignorerade dublett
2008-05-16 15:55:00
Nyligen stötte jag på en fråga som lyder: Hur skriver jag en stored procedure för att göra en insert bara om det inte redan finns en rad med de värden jag försöker göra insert med. Mitt svar är: Använd IF NOT EXISTS(SELECT * FROM tabellen where kolumn1 = @kolumn1 AND kolumn2 = @kolumn2 [..] AND kolumnN = @kolumnN Den som ställde frågan stötte på syntaktiska problem, och återkom med beskedet: Jag har löst det. Jag skapade ett icke-klustrat unikt index med alternativet WITH IGNORE_DUP_KEY Såhär alltså: CREATE UNIQUE NONCLUSTERED INDEX UQI_tabellen_all ON tabellen(kolumn1, kolumn2, [..], kolumnN) WITH IGNORE_DUP_KEY Fiffigt. Då behöver man inte programmera sin kontroll. Man kan bara göra en insert, och om en identisk rad redan finns så händer ingenting. Eller nästan ingenting iallafall. Sanningen är att SQL Server kastar ifrån sig en varning: "Duplicate key was ignored". Men det är ingenting jag i de flesta fall märker i min ADO.NET-kod. Där tror jag att...
Mer om: Design , Optimering
Att jämföra exakt och ungefärligt
2008-04-30 11:11:00
Via en bloggpost från Adam Machanic har jag deltagit i en tävling om ett exemplar av Expert SQL Server 2005 Development. Frågan från Adam är: Givet att du har två tabeller, som skapats med scriptet nedan: USE TempDB GO CREATE TABLE b1 (blat1 CHAR(5) NOT NULL) CREATE TABLE b2 (blat2 VARCHAR(200) NOT NULL) GO INSERT b1 SELECT LEFT(AddressLine1, 5) AS blat1 FROM AdventureWorks.Person.Address INSERT b2 SELECT AddressLine1 AS blat2 FROM AdventureWorks.Person.Address GO Hur kan man skriva om nedanstående fråga så att den blir snabbare (den tar ungefär sex minuter på min PC): SELECT * FROM b1 JOIN b2 ON b2.blat2 LIKE b1.blat1 + '%' Inga objekt-ändringar är tillåtna, dvs ingen indexering av tabellerna får göras. Lösningen är att göra exakta jämförelser istället för ungefärliga. Dvs att använda "="-operatorn istället för "LIKE"-operatorn. Varför? Jo, därför att "LIKE"-operatorn gör att vi måste använda oss av en "NESTED LOOP" för att jämföra raderna. Dvs SQL Servers Query Pr...
Mer om: Optimering
Vaddå klusterindex?
2008-04-30 11:11:00
Fler än en gång har jag försökt att grundläggande förklara lite grann om index i SQL Server (och egentligen alla andra databaser, det funkar ju faktiskt rätt lika). Det som flest har svårt att förstå är det här med klustrade och icke-klustrade index. Många undrar vad som är skillnaden, och många undrar vilket index som är bästa kandidaten att använda som klustrat index. Här tänkte jag försöka sammanfatta vad jag brukar svara. Vad är det? Ett klustrat index är ett index som lagras tillsammans med datat för en tabell. Det gör att datat självt är sorterat, vilket kan vara användbart emellanåt. Den bästa jämförelsen jag känner till är en telefonkatalog. I en telefonkatalog finns sidor, som vi kan jämföra med data-pages i SQL Server. Varje telefonnummer kan jämföras med en rad i en tabell i SQL Server. Telefonnumren är sorterade efter Efternamn, Förnamn. På samma sätt funkar ett klustrat index. Datat på varje data-page är sorterat efter det klustrade indexet som finns på tabellen. ...
Mer om: Optimering
Installation av SQL Server 2005 hänger sig
2008-04-30 11:11:00
När man installerar SQL Server 2005 kan man få problem med att installationen verkar "hänga sig" medan den gör "Setting File Security". Tittar man i loggen är det sista den gör något i stil med "Write_sqlFileSDDL". I själva verket har inte installationen hängt sig. Den tar bara EXTREMT lång tid på sig att hoppa till nästa steg. Problemet beskrivs av Microsoft i en KB-artikel (http://support.microsoft.com/kb/910070) som Active Directory-relaterat. Om domänen har många trust-relationer med andra domäner kan det ta lång tid att göra uppslag i katalogen. Det verkar stämma med min erfarenhet. Jag har stött på problemet då jag installerat SQL Server 2005 på maskiner som ingår i ett stort Active Directory, spritt över flera kontor, med ibland så långsam uppkoppling som 128kbit/s. Det finns en Hotfix att hämta från Microsoft. Det finns också en "Workaround" listad i samma KB-artikel, som funkade bra för mig. Den går ut på att helt enkelt inaktivera nätverkskortet en stund, så att SQL Se...
Mer om: Installation
Undvik SQL Injection med parametriserade frågor!
2008-04-30 11:11:00
När du programmerar mot en databas ifrån .NET - undvik att skicka in parametrar i koden på det här viset: Dim s As String = TextBox1.Text Dim cmd As New SqlClient.SqlCommand("SELECT * FROM tabell WHERE kolumn='" & s & "'", cn) Dim dr As SqlClient.SqlDataReader = cmd.ExecuteReader() Det kan nämligen leda till SQL Injection. Vad det innebär? Jo, att en illvillig användare anropar din sida med skadlig SQL-kod, genom att i TextBox1 skriva in SQL-kommandon. Tänk dig att en användare skriver in följande i TextBox1: '; DROP DATABASE minDatabas;SELECT 'You suck! Vad skulle hända då? Jo, det som skulle hända är att det du egentligen vill göra - nämligen att välja från tabellen "tabell" körs, med en tom sträng som WHERE-villkor för kolumnen "kolumn". Därefter skulle kommandot "DROP DATABASE minDatabas" köras, dvs databasen minDatabas skulle tas bort ifrån SQL Server. Slutligen skulle kommandot "SELECT 'You suck!'" köras. Och det är ju INTE vad vi vill ska hända....
Mer om: Säkerhet
Försök och fånga
2008-04-30 11:11:00
En för mig välkommen nyhet som introducerades i SQL Server 2005 är felhantering genom TRY/CATCH. Innan TRY/CATCH såg felhantering typiskt ut något i den här stilen (lite förenklat):   --create table tabell (fält varchar(10)) DECLARE @error int SET @error=0 BEGIN TRAN INSERT INTO tabell (fält) VALUES('abcde12345abcde12345') SET @error=@@error IF @error>0 BEGIN       PRINT @error       ROLLBACK TRAN       GOTO PROC_EXIT END INSERT INTO tabell (fält) VALUES('abcdefghijabcdefghij') SET @error=@@error IF @error>0 BEGIN       PRINT @error       ROLLBACK TRAN       GOTO PROC_EXIT END INSERT INTO tabell (fält) VALUES('12345678901234567890') SET @error=@@error IF @error>0 BEGIN       PRINT @error       ROLLBACK TRAN       GOTO PROC_EX...
Lagra filer i SQL Server
2008-04-30 11:11:00
En fråga jag får ganska ofta är om det är möjligt att lagra binära filer i SQL Server, och i så fall hur det går till. Ja, det är möjligt att lagra binära filer. Det är till och med ganska lätt. Därmed inte sagt att det alltid är en bra idé. Diskussioner om HUR man lagrar bilder i SQL Server brukar spåra ur i en religiös diskussion om det är en bra idé eller inte. Vissa hävdar att det alltid är bättre att lagra en sökväg i SQL Server, och själva filen i filsystemet. Själv försöker jag vara lite mer pragmatisk, och lagrar filer direkt i en SQL Server-databas när det är en bra idé att göra det. Vill man ha versionshantering av sina filer är det perfekt att lagra dem direkt i databasen. För att nämna ett användningsområde. Jag har i mitt jobb byggt en bild-databas, med cirka 12000 högupplösta bilder, som även lagras i ett antal lågupplösta format. Versionshantering är inbyggd, så varje gång en bild laddas upp sparas den som en ny version, och alla gamla versioner finns kvar. Det...
Pingtest
2008-04-30 11:11:00
Jag har haft lite problem med pingar från bloggen, och testar därför ett inlägg för att se om Nyligen, Twingly, Technorati och de andra bloggsökmotorerna blir pingade.
Ny blogg - SQL Server på svenska
2008-04-30 11:11:00
Jag brukar då och då läsa och svara på frågor om Microsoft SQL Server i olika nätforum. Nu har jag startat en blogg där jag kommer att skriva om SQL Server på svenska. Det finns gott om både bloggar och andra resurser om SQL Server, men (nästan) allt är på engelska, samtidigt som det finns väldigt många systemutvecklare i Sverige, som sysslar med bland annat SQL Server. Jag tror att jag kan ha en hel del att dela med mig av, eftersom jag de senaste 8-9 åren jobbat med applikationsutveckling mot SQL Server, och med drift av SQL Server. Bloggen använder sig av dasBlog som motor (www.dasblog.info) Intressant? Andra bloggar om SQL Server, Bloggar, Databaser
31511 bloggar i topplistan.
Statistiken nollställs varje vecka.


Kontakta Oss