Benutzer:

Passwort:

Claus Rothe

Derzeit im Umbau... Dient vor allem meinem privaten Zweck, wer es trotzdem findet, viel Spaß. ;)


Datenbank Blog

2011-02-28: Dateien in ein Feld schreiben

Hier ein simples Script um Dateien in ein Feld zu schreiben. Hierfür sollte man ein Varbinary(Max) oder ein Image Feld nehmen.

insert into Dateien
(Datei, Dateiname, Dateiendung)
SELECT  
Datei.*,
'Dateiname',
'ende'
FROM OPENROWSET 
    (BULK 'c:\temp\Dateiname.ende', SINGLE_BLOB) Datei

Wichtig ist hierbei das die Pfadangabe aus Serversicht angegeben wird. Diese muss auch für den Benutzer unter dem der SQL Server Dienst läuft zugänglich sein!

2011-02-17: Ausführungsplan mal anders

Der Ausführungsplan vom SQL Server gibt einem richtig viele Infos mit auf den Weg. Meist interessiert doch aber nur, wo geht die Zeit wirklich hin, die der Query braucht? Sprich wo muss ich optimieren.
Für die kleine Optimierung empfehlen sich daher mal folgende Set-Befehle auszuprobieren. Dann bekommt man die Ausführungszeiten der einzelnen Schritte seines Querys im Ergebnis mitgeliefert.

SET STATISTICS IO ON
GO
SET STATISTICS TIME ON
GO

2011-02-10: Die Crux mit NULL

Null verursacht immer wieder Probleme bei Abfragen. Das erste Problem ist das der Vergleich zweier NULL Values immer FALSE zurück gibt! Sprich beide Statements liefern FALSE:

[NULL VALUE] = [NULL VALUE]
[NULL VALUE] != [NULL VALUE]

Um diesen ISO-Standard auszuschalten gibt es den folgenden Befehl. Laut Doku von Microsoft soll er in Versionen nach SQL Server 2008 nicht mehr unterstützt werden. In der CTP des SQL Servers 2011 funktioniert dieser Befehl aber weiterhin.

SET ANSI_NULLS OFF


Verkettung von Zeichenfolgen mit NULL
Das nächste Problem mit NULL ist, dass die Verkettung von Zeichenfolgen immer das Ergebnis NULL liefert, wenn eine Zeichenfolge NULL ist.

Select 'Hallo '+ NULL +'Herr'

Ergebnis:

 -------
NULL

(1 Zeile(n) betroffen)

Auch hierfür gibt es einen Set Befehl (Kann auch über Alter Database generell gesetzt werden). Auch dieser Befehl soll laut Microsoft Doku nicht mehr in Zukünftigen Versionen funktionieren. Aber auch dieser Funktioniert noch in SQL Server 2011.

 SET CONCAT_NULL_YIELDS_NULL OFF

Wenn dieser gesetzt ist, liefert das oben aufgeführte Statement folgende s zurück.

 -----------
Hallo Herr

(1 Zeile(n) betroffen) 



NULLIF und COALESCE
Das sind wohl die bevorzugten Befehle um diese Probleme zu umgehen.

Hierzu sei erwähnt, dass NULLIF() auch NULL zurückgeben kann!

NULLIF(Expression1, Expression2)

Wenn Expression1 gleich Expression2 ist, wird NULL zurückgegeben, ansonsten Expression1!

Bei COALESCE wird die erste Expression genommen die nicht NULL ist. Wenn alle Expressions NULL sind, wird allerdings auch NULL zurückgegeben.

COALESCE(Expression1,Expression2[,Expression3,…])

2011-02-09: Der erste Eintrag – Eine GUID prüfen

Ich möchte mal mit einem sehr einfachem Thema Anfangen. Wer häufig Daten aus Fremdsystemen Verarbeitet bekommt auch mal eine GUID als Varchar geliefert und stand vor dem Problem, wie man diese auf ihre Gültigkeit prüft. Da es leider keine Funktion dafür gibt wie isNumeric, muss man sich selbst behelfen. Hier mal eine Möglichkeit, es per Boolschen Ausdruck über die Like Klausel zu lösen:

[GUID in VARCHAR-Feld] like '[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' 


Seite zurück [1] [2] [3] [4] [5] [6]

Impressum

Claus Rothe

Mobil: +49 176 81188859

E-Mail: post@...