Was ist eine Abfrage, die mir die vollständige Definition zeigt, einschließlich Indizes und Schlüssel für eine SQL Server-Tabelle? Ich möchte eine reine Abfrage - und weiß, dass SQL Studio mir diese geben kann, aber ich bin oft auf "wilden" Computern, die nur die einfachsten Apps haben, und ich habe keine Rechte, Studio zu installieren. Aber SQLCMD ist immer eine Option.
UPDATE: Ich habe sp_help ausprobiert, aber es wird nur ein Datensatz ausgegeben, der Name, Eigentümer, Typ und Erstellungszeit anzeigt. Fehlt mir noch etwas mit sp_help?
Folgendes nenne ich:
sp_help Flughäfen
Beachten Sie, dass ich wirklich die DDL möchte, die die Tabelle definiert.
sql-server
tsql
Daniel Williams
quelle
quelle
sp_help
ist, dass es mehrere Ergebnismengen zurückgibt. Sie beschreiben die Spalten, die von der ersten Ergebnismenge zurückgegeben werden.Antworten:
Es gibt keine einfache Möglichkeit, die DDL zurückzugeben. Die meisten Details finden Sie jedoch in den Informationsschemaansichten und Systemansichten .
quelle
sp_columns
wie in meiner Antwort erwähnt ausführen . Wenn Sie Informationen über FKs möchten, laufen Siesp_fkeys
. Wenn Sie Indizes kennen möchten, führen Sie aussp_statistics
.Haben Sie sp_help ausprobiert?
quelle
Besuchen Sie http://www.stormrage.com/SQLStuff/sp_GetDDL_Latest.txt .
Sie finden den
sp_getddl
Verfahrenscode für SQL Server. Der Zweck der Prozedur ist das Skript einer beliebigen Tabelle, temporären Tabelle oder eines beliebigen Objekts.VERWENDUNG:
oder
oder
oder
Ich habe es auf SQL Server 2012 getestet und es leistet hervorragende Arbeit.
Ich bin nicht der Autor des Verfahrens. Alle Verbesserungen, die Sie daran vornehmen, senden Sie an Lowell Izaguirre ([email protected]).
quelle
Der einfachste und schnellste Weg, den ich mir vorstellen kann, ist die Verwendung von sp_help
sp_help 'TableName'
quelle
Verwenden Sie diese kleine Windows-Befehlszeilen-App, die das
CREATE TABLE
Skript (mit Einschränkungen) für jede Tabelle abruft. Ich habe es in C # geschrieben. Kompilieren Sie es einfach und tragen Sie es auf einem Memory Stick. Vielleicht kann es jemand nach Powershell portieren.quelle
quelle
Dadurch werden in der Tabelle definierte Spalten, Datentypen und Indizes zurückgegeben:
Dies gibt die in der Tabelle definierten Trigger zurück:
quelle
Seit SQL 2012 können Sie die folgende Anweisung ausführen:
Wenn Sie eine komplexe select-Anweisung (Verknüpfungen, Unterauswahlen usw.) eingeben, erhalten Sie die Definition der Ergebnismenge. Dies ist sehr praktisch, wenn Sie eine neue Tabelle (oder temporäre Tabelle) erstellen müssen und nicht jede einzelne Felddefinition manuell überprüfen möchten.
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-describe-first-result-set-transact-sql
quelle
Geben Sie einfach den Tabellennamen ein und wählen Sie ihn aus und drücken Sie ATL + F1
Angenommen, Ihr Tabellenname
Customer
öffnet ein neues Abfragefenster , geben Sie den Tabellennamen ein , wählen Sie ihn aus und drücken Sie ALT + F1Es wird die vollständige Definition der Tabelle angezeigt.
quelle
Eine Variation der Antwort von @Anthony Faull für Benutzer von LINQPad:
Sie müssen auf 2 Baugruppen verweisen:
Und fügen Sie Namespace-Referenzen hinzu, wie in Anthonys Snippet erwähnt.
quelle
Ich weiß, dass es eine alte Frage ist, aber genau das, wonach ich gesucht habe. Da ich einige Tabellen stapelweise skripten möchte, habe ich den C # -Code von Anthony Faull für PowerShell neu geschrieben.
Dieser verwendet integrierte Sicherheit:
Und hier mit Benutzername und Passwort:
quelle
Probieren Sie die gespeicherte Prozedur sp_help aus.
sp_help <>
quelle
Als Ergänzung zu Barrys Antwort. Der sp_help kann auch alleine verwendet werden, um alle Objekte in einer bestimmten Datenbank zu iterieren. Sie haben auch sp_helptext für Ihr Arsenal, das programmatische Elemente wie gespeicherte Prozeduren auszeichnet.
quelle
Eine andere Möglichkeit besteht darin, die Prozedur sp_columns auszuführen .
quelle
quelle
"Beachten Sie, dass ich wirklich die DDL möchte, die die Tabelle definiert."
benutze pg_dump:
Sie erhalten die Tabellendefinition (
-s
nur Schema, keine Daten) einer bestimmten Tabelle (-t
Tabellenname) in der Datenbank"dbname"
in einfachem SQL. Zusätzlich erhalten Sie Sequenz-, Primärschlüssel- und Einschränkungsinformationen. Die Ausgabe, die Sie - möglicherweise nach Überprüfung und Bearbeitung gemäß Ihren Anforderungen - erneut in die (gleiche oder eine andere) Postgres-Datenbank einspeisen können:Dies ist für UNIX / Linux, aber ich bin sicher, dass ein pg_dump auch für Windows existiert.
quelle