Informationen über Parameter von Stored Procedures mit T-SQL

Zu Dokumentationszwecken kann es dann und wann mal nützlich sein, zu wissen, welche Funktion und/oder Stored Procedure welche Parameter verlangt, welche Typ diese Parameter haben usw, usw... mehr »

JOIN Stolperfallen Teil 1

Gelegentlich fragt man sich, ob man wirklich so oft auf die Tastatur hämmern muß, oder ob man sich nicht das eine oder andere Zeichen oder Wort sparen kann. Klingt bekannt? Nun, zumindest mir geht es so. Generell ist das auch so in Ordnung, nur… mehr »

Maximale Anzahl von Verweisen auf Fremdschlüsseltabellen pro Tabelle

Was soll denn diese Frage? Ein Blick in BOL in die Spezifikationen der maximalen Kapazität sagt einem sofort, daß SQL Server 2000 253 Verweise auf Fremdschlüsseltabellen pro Tabelle haben kann. So, damit wäre diese Frage ja schon beantwortet. Fertig,… mehr »

Nichtnumerische Zeichen aus einem String entfernen

Das Problem hat wahrscheinlich jeder schon einmal gehabt. Man stellt Importanforderungen auf, und die Anwender kümmern sich nicht darum und liefern anstelle von sauber getrennten Strings und Zahlen einen bunten Mischmasch aus beidem. mehr »

n Datensätze pro Gruppierung anzeigen

Zugegeben ist das Subjekt nicht sehr treffend, aber im Moment fällt mir kein Besseres ein. Gestern stellte jemand auf SQL Server Central.com die Frage, wie man zu jedem Namen mehr als ein Datum anzeigen kann. Genauer gesagt, die beiden aktuellsten… mehr »

Foreign Key Constraints löschen

Das nachfolgende Skript löscht alle existierenden Einschränkungen für die angegebene Tabelle. Will man alle Einschränkungen der aktuellen Datenbank löschen, muss man einfach nur die WHERE Zeile auskommentieren oder entfernen. mehr »

Trigger umgehen

Gleich vorwegschicken möchte ich, daß dieser Beitrag nicht zur Nachahmung oder zum Einsatz in Produktivsystemen gedacht ist. Vielmehr eher als reine Spielerei mit dem, was möglich ist. Also, kann die Ausführung eines Triggers umgangen werden? Einfache… mehr »

Unterschiede zwischen ISNULL und COALESCE

Es gibt keine Unterschiede zwischen ISNULL und COALESCE. Diese Meinung kann man recht häufig in Online Communities lesen. Der einzige Unterschied zwischen beiden ist, daß ISNULL SQL Server spezifisch ist, während COALESCE ANSI-SQL Standard ist. Auch… mehr »

In welcher Reihenfolge gibt SELECT * die Spalten zurück

Vielleicht hat sich der Eine oder Andere schon mal gefragt, wieso und warum SQL Server bei einem SELECT * Statement die Spalte in der Art und Weise zurückgibt, in der es geschieht. Zum Beispiel: CREATE TABLE #test ( col1 CHAR , col2 INT , col3 FLOAT… mehr »

Abfolge von Triggern ändern

Die nachfolgenden Informationen gelten nur für AFTER Trigger, nicht für INSTEAD OF Trigger. Grundsätzlich kann man (theoretisch) beliebig viele AFTER Trigger pro Tabelle definieren. Die Anzahl ist hierbei nur durch die maximalen Objekte pro Datenbank… mehr »

Spaß mit Zahlen in Transact-SQL Abfragen

Original von Narayana Vyas Kondreddi; deutsche Übersetzung von Frank Kalis Neulich stellte jemand in den öffentlichen Microsoft Newsgroups die Frage, wie man Zeichen innerhalb eines Strings sortiert? Zum Beispiel enthielt der String 'CBA' und er wollte… mehr »

Spaltenwerte als kommaseparierte Liste zurückgeben

Wie so oft mag man sich fragen, ob dies eher die Aufgabe des Clients als die des Server ist, aber da man häufig derartige Fragestellungen beobachten kann, hier an dieser Stelle vielleicht ein paar Lösungsansätze zu folgendem Problem: mehr »

Best Practice für Log Files

Zweiter Beitrag in der "Best Practice" Serie. Gleichzeitig ein Thema, wo große Unsicherheit herrscht. Aber gerade DBA's sollten das Konzept des Transaktionsprotokolls unbedingt verstehen. Dieser Beitrag geht auf ein Posting von Jonathan van Houtte… mehr »

DBCC PAGE verwenden

Durch den DBCC PAGE Befehl kann man sich den Inhalt jeder Daten- und Indexseite in SQL Server ansehen. Die Verwendung des Befehls ist aber mit einigen Stolperfallen verbunden, die im folgenden erklärt werden sollen. Beispielhaft verwenden wir mal die… mehr »

Best practice für Indexes

Dies ist der Anfang einer Reihe von "Best Practice" Beiträgen. Mehr noch als bei anderen Beiträgen würde ich mir hier Feedback wünschen, das dann in den Beitrag einfließen kann. Ziel soll es sein, einen Rahmen zu bilden mit allgemein anerkannten… mehr »

Muss man T-SQL Variablen explizit aufräumen

Nun, so etwas wie Set < variable > = Nothing oder ein Äquivalent in einer anderen Programmiersprache gibt es in T-SQL nicht. T-SQL Variablen sind nur lokal im Batch oder in einer Gespeicherten Prozedur gültig, in der sie definiert wurden.… mehr »

IP-Adressen sortieren

Nun, grundsätzlich würde ich wahrscheinlich eher zu einem anderen Datentyp als VARCHAR tendieren, um IP Adressen zu speichern, aber dennoch fand ich diese "Koproduktion" der beiden SQL Server MVP's Steve Kass und Itzik Ben-Gan in der englischen… mehr »

Summenwert einer Reihe

Dies ist ein beliebtes Beispiel für Informatikstudenten im Anfangsstadium, um die Auswirkungen effizienter Algorithmen zu demonstrieren. Also auch hier nicht unbedingt etwas, was man zwingend in einer Datenbank machen müßte, das sich aber durchaus… mehr »

Binärzahl in Dezimalzahl umwandeln

Normalerweise würde man solche Fragestellungen. welcher Dezimalzahl nun 1011001 entspricht, damit beantworten, in dem man auf den Client verweist. Was aber, wenn man einfach wissen will, wie so etwas in T-SQL aussehen könnte? Ob man es dann später… mehr »

Unterschiede zwischen MONEY und DECIMAL

SQL Server MVP Steve Kass hat dieses Beispiel in den englischen Newsgroups gepostet. Es zeigt, daß der Einsatz der Datentypen zur Speicherung monetärer Daten sorgfältig durchdacht sein sollte. Man sollte stets bedenken, welche Operationen mit diesen… mehr »

Determinismus von CHARINDEX und PATINDEX

In BOL werden CHARINDEX() und PATINDEX() als nichtdeterministische Stringfunktionen aufgelistet. Warum eigentlich? Man sollte meinen, das ceteris paribus auch bei diesen Funktionen stets ein identisches Ergebnis herauskommt. Richtig, und gleichzeitig… mehr »

Daten aus Excel abfragen

In fast allen Online Communities sieht man solche Fragen mit schöner Regelmässigkeit auftauchen. Die vielleicht einfachste Methode, diese Daten abzufragen, besteht in der Verwendung von OPENROWSET: mehr »

Zahl rechts-oder linksbündig mit 0 formatieren

Die Präsentation von Informationen aus der Datenbank ist imho eher Sache des Clients als die des Servers. Solche Aufgaben gehören zum Handswerkzeug jedes Front-End und sind dort schnell und einfach erledigt. Falls jedoch, aus welchen Gründen auch immer,… mehr »

N-te Wurzel einer Zahl

Tja, wieder so ein Beispiel, dass man mal in der Schule gelernt hat, aber immer genau dann vergisst, wenn man es braucht. DECLARE @My1 FLOAT DECLARE @My2 FLOAT SELECT @My1 = 16, @My2 = 4 SELECT POWER(@My1, 1/@My2)… mehr »

Kleinste gemeinsame Vielfache zweier Zahlen

CREATE FUNCTION dbo.kgv(@zahl1 int, @zahl2 int ) RETURNS INT AS BEGIN RETURN (@zahl1 * @zahl2) / dbo.ggt(@zahl1, @zahl2) END GO SELECT dbo.kgv(24,36) DROP FUNCTION dbo.kgv ----------- 72 (1 row(s) affected) Der Vollständigkeit… mehr »