Was sind einige versteckte Funktionen von SQL Server ?
Zum Beispiel undokumentierte gespeicherte Systemprozeduren, Tricks, um Dinge zu tun, die sehr nützlich, aber nicht ausreichend dokumentiert sind?
Antworten
Vielen Dank an alle für die tollen Antworten!
Gespeicherte Prozeduren
- sp_msforeachtable: Führt einen Befehl mit '?' durch jeden Tabellennamen ersetzt (v6.5 und höher)
- sp_msforeachdb: Führt einen Befehl mit '?' durch jeden Datenbanknamen ersetzt (v7 und höher)
- sp_who2: genau wie sp_who, aber mit viel mehr Informationen zur Fehlerbehebung bei Blöcken (v7 und höher)
- sp_helptext: Wenn Sie den Code einer gespeicherten Prozedur möchten, zeigen Sie & UDF an
- sp_tables: Gibt eine Liste aller Tabellen und Ansichten der Datenbank im Gültigkeitsbereich zurück.
- sp_stored_procedures: Gibt eine Liste aller gespeicherten Prozeduren zurück
- xp_sscanf: Liest Daten aus der Zeichenfolge in die Argumentpositionen, die von jedem Formatargument angegeben werden.
- xp_fixeddrives :: Suchen Sie das Festplattenlaufwerk mit dem größten freien Speicherplatz
- sp_help: Wenn Sie die Tabellenstruktur, Indizes und Einschränkungen einer Tabelle kennen möchten. Auch Ansichten und UDFs. Die Verknüpfung ist Alt + F1
Schnipsel
- Zeilen in zufälliger Reihenfolge zurückgeben
- Alle Datenbankbenutzerobjekte nach Datum der letzten Änderung
- Nur Rückgabedatum
- Suchen Sie nach Datensätzen, deren Datum irgendwo in der aktuellen Woche liegt.
- Suchen Sie nach Aufzeichnungen, welches Datum letzte Woche aufgetreten ist.
- Gibt das Datum für den Beginn der aktuellen Woche zurück.
- Gibt das Datum für den Anfang der letzten Woche zurück.
- Siehe den Text einer Prozedur, die auf einem Server bereitgestellt wurde
- Trennen Sie alle Verbindungen zur Datenbank
- Tischprüfsumme
- Reihenprüfsumme
- Löschen Sie alle Prozeduren in einer Datenbank
- Ordnen Sie die Anmelde-IDs nach der Wiederherstellung korrekt zu
- Rufen Sie gespeicherte Prozeduren aus einer INSERT-Anweisung auf
- Verfahren nach Schlüsselwort suchen
- Löschen Sie alle Prozeduren in einer Datenbank
- Fragen Sie das Transaktionsprotokoll für eine Datenbank programmgesteuert ab.
Funktionen
- HashBytes ()
- EncryptByKey
- PIVOT-Befehl
Sonstiges
- Extras für Verbindungszeichenfolgen
- TableDiff.exe
- Trigger für Anmeldeereignisse (neu in Service Pack 2)
- Leistungssteigerung mit persistierten berechneten Spalten (pcc).
- DEFAULT_SCHEMA-Einstellung in sys.database_principles
- Erzwungene Parametrisierung
- Vardezimales Speicherformat
- In Sekundenschnelle die beliebtesten Abfragen herausfinden
- Skalierbare gemeinsam genutzte Datenbanken
- Filterfunktion für Tabellen / gespeicherte Prozeduren in SQL Management Studio
- Trace-Flags
- Nummer nach einer
GO
Wiederholung der Charge - Sicherheit mit Schemata
- Verschlüsselung mit integrierten Verschlüsselungsfunktionen, Ansichten und Basistabellen mit Triggern
sql-server
tsql
Sklivvz
quelle
quelle
Antworten:
In Management Studio können Sie eine Nummer nach einer GO-End-of-Batch-Markierung einfügen, damit der Batch so oft wiederholt wird:
Druckt 'X' 10 Mal. Dies kann Sie vor mühsamem Kopieren / Einfügen bewahren, wenn Sie sich wiederholende Dinge tun.
quelle
Viele SQL Server-Entwickler scheinen immer noch nichts über die OUTPUT-Klausel (SQL Server 2005 und neuer) in der Anweisung DELETE, INSERT und UPDATE zu wissen .
Es kann äußerst nützlich sein zu wissen, welche Zeilen INSERTed, UPDATEd oder DELETEd wurden, und die OUTPUT-Klausel ermöglicht dies sehr einfach - sie ermöglicht den Zugriff auf die aufgerufenen "virtuellen" Tabellen
inserted
unddeleted
(wie in Triggern):Wenn Sie Werte in eine Tabelle mit einem Primärschlüsselfeld INT IDENTITY mit der OUTPUT-Klausel einfügen, können Sie die eingefügte neue ID sofort abrufen:
Und wenn Sie aktualisieren, kann es äußerst nützlich sein zu wissen, was sich geändert hat. In diesem Fall werden
inserted
die neuen Werte (nach dem UPDATE) dargestellt, währenddeleted
auf die alten Werte vor dem UPDATE verwiesen wird:Wenn viele Informationen zurückgegeben werden, kann die Ausgabe von OUTPUT auch in eine temporäre Tabelle oder eine Tabellenvariable (
OUTPUT INTO @myInfoTable
) umgeleitet werden .Sehr nützlich - und sehr wenig bekannt!
Marc
quelle
sp_msforeachtable
: Führt einen Befehl mit '?' durch jeden Tabellennamen ersetzt. z.BSie können bis zu 3 Befehle für jede Tabelle ausgeben
Ebenfalls,
sp_MSforeachdb
quelle
Extras für Verbindungszeichenfolgen:
MultipleActiveResultSets = true;
Dadurch liest ADO.Net 2.0 und höher mehrere Nur-Vorwärts-Nur-Lese-Ergebnismengen auf einer einzelnen Datenbankverbindung. Dies kann die Leistung verbessern, wenn Sie viel lesen. Sie können es auch dann aktivieren, wenn Sie eine Mischung aus Abfragetypen ausführen.
Anwendungsname = MyProgramName
Wenn Sie nun eine Liste der aktiven Verbindungen anzeigen möchten, indem Sie die Tabelle sysprocesses abfragen, wird der Name Ihres Programms in der Spalte program_name anstelle von ".Net SqlClient Data Provider" angezeigt.
quelle
TableDiff.exe
Verknüpfung
quelle
Eine weniger bekannte TSQL-Technik zum Zurückgeben von Zeilen in zufälliger Reihenfolge:
quelle
In Management Studio können Sie schnell eine durch Kommas getrennte Liste von Spalten für eine Tabelle abrufen, indem Sie:
Dies ist praktisch, wenn Sie kein abscheuliches Format verwenden möchten, das zurückgegeben wird, indem Sie mit der rechten Maustaste auf die Tabelle klicken und Script Table As ... und dann Insert To ... auswählen. Dieser Trick funktioniert mit den anderen Ordnern, da er Ihnen zur Verfügung steht Eine durch Kommas getrennte Liste der im Ordner enthaltenen Namen.
quelle
Zeilenkonstruktoren
Sie können mehrere Datenzeilen mit einer einzigen Einfügeanweisung einfügen.
quelle
Wenn Sie die Tabellenstruktur, Indizes und Einschränkungen kennen möchten:
quelle
HashBytes () , um den MD2-, MD4-, MD5-, SHA- oder SHA1-Hash seiner Eingabe zurückzugeben.
quelle
Finden Sie die beliebtesten Abfragen heraus
Link mit dem commnad
quelle
Auf der Registerkarte "Räumliche Ergebnisse" können Sie Kunst erstellen .
Geben Sie hier die Linkbeschreibung ein http://michaeljswart.com/wp-content/uploads/2010/02/venus.png
quelle
AUSSER und INTERSECT
Anstatt aufwändige Verknüpfungen und Unterabfragen zu schreiben, sind diese beiden Schlüsselwörter eine viel elegantere Abkürzung und lesbare Möglichkeit, die Absicht Ihrer Abfrage beim Vergleich zweier Abfrageergebnisse auszudrücken. Ab SQL Server 2005 neu, ergänzen sie stark UNION, das bereits seit Jahren in der TSQL-Sprache existiert.
Die Konzepte von EXCEPT, INTERSECT und UNION sind grundlegend in der Mengenlehre, die als Grundlage und Grundlage für die relationale Modellierung dient, die von allen modernen RDBMS verwendet wird. Jetzt können Venn-Diagrammtypergebnisse mit TSQL intuitiver und einfacher generiert werden.
quelle
Ich weiß, dass es nicht genau versteckt ist, aber nicht zu viele Leute kennen den PIVOT- Befehl. Ich konnte eine gespeicherte Prozedur ändern, die Cursor verwendete, und es dauerte 2 Minuten, bis ich auf einen schnellen 6-Sekunden-Code stieß, der ein Zehntel der Anzahl der Zeilen betrug!
quelle
nützlich beim Wiederherstellen einer Datenbank zu Testzwecken oder was auch immer. Ordnet die Login-IDs neu zu:
quelle
Trennen Sie alle Verbindungen zur Datenbank:
quelle
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
verhindert auch das Auftreten neuer Verbindungen.Tischprüfsumme
Reihenprüfsumme
quelle
Ich bin mir nicht sicher, ob dies eine versteckte Funktion ist oder nicht, aber ich bin darauf gestoßen und habe festgestellt, dass sie bei vielen Gelegenheiten nützlich ist. Sie können eine Reihe von Feldern in einer einzelnen select-Anweisung zusammenfassen, anstatt einen Cursor zu verwenden und die select-Anweisung zu durchlaufen.
Beispiel:
Ergebnisse:
quelle
Wenn Sie den Code einer gespeicherten Prozedur möchten, können Sie:
(Ich bin mir nicht sicher, ob es sich um eine versteckte Funktion handelt, aber ich benutze sie ständig.)
quelle
Ein Trick mit gespeicherten Prozeduren besteht darin, dass Sie sie über eine INSERT-Anweisung aufrufen können. Ich fand das sehr nützlich, als ich an einer SQL Server-Datenbank arbeitete.
quelle
In SQL Server 2005/2008 werden Zeilennummern in einem SELECT-Abfrageergebnis angezeigt:
ORDER BY ist eine Pflichtklausel. Die OVER () -Klausel weist die SQL Engine an, Daten in der angegebenen Spalte (in diesem Fall OrderId) zu sortieren und Nummern gemäß den Sortierergebnissen zuzuweisen.
quelle
Nützlich zum Parsen von Argumenten für gespeicherte Prozeduren: xp_sscanf
quelle
Nur Rückgabedatum
oder
quelle
dm_db_index_usage_stats
Auf diese Weise können Sie feststellen, ob die Daten in einer Tabelle kürzlich aktualisiert wurden, auch wenn die Tabelle keine DateUpdated-Spalte enthält.
Code von: http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/
Informationen, auf die verwiesen wird von: SQL Server - Wie lautet das Datum und die Uhrzeit der zuletzt eingefügten Zeile einer Tabelle?
Verfügbar in SQL 2005 und höher
quelle
Hier sind einige Funktionen, die ich nützlich finde, aber viele Leute scheinen nichts zu wissen:
Verknüpfung
Verknüpfung
quelle
Suchen Sie nach Datensätzen, deren Datum irgendwo in der aktuellen Woche liegt.
Suchen Sie nach Aufzeichnungen, welches Datum letzte Woche aufgetreten ist.
Gibt das Datum für den Beginn der aktuellen Woche zurück.
Gibt das Datum für den Anfang der letzten Woche zurück.
quelle
Nicht so sehr eine versteckte Funktion, aber das Einrichten von Tastenzuordnungen in Management Studio unter Extras \ Optionen \ Tastatur: Alt + F1 ist standardmäßig sp_help "Ausgewählter Text", aber ich kann nicht ohne das Hinzufügen von Strg + F1 für sp_helptext "Ausgewählter Text" leben.
quelle
Persistent-berechnete Spalten
Verknüpfung
quelle
Es gibt Zeiten, in denen keine geeignete Spalte zum Sortieren vorhanden ist oder Sie nur die Standardsortierreihenfolge für eine Tabelle festlegen und jede Zeile auflisten möchten. Um dies zu tun, können Sie "(wählen Sie 1)" in die "order by" -Klausel einfügen und Sie erhalten, was Sie wollen. Ordentlich, was?
quelle
Einfache Verschlüsselung mit EncryptByKey
quelle