Erhalten Sie die Metadaten über eine Abfrage und eine gespeicherte Prozedur in SQL Server
-
16-10-2019 - |
Frage
Ich möchte alle Namen der Spalten in einer bestimmten Abfrage [SQL -Textabfrage] und auch die Spalten in der Auswahlklausel in einer gespeicherten Prozedur erhalten.
Gibt es andere Möglichkeiten, als Regex zu verwenden, um diese Informationen vom SQL -Server zu erhalten? Ich kann den Namen des sp.
Bitte schlagen Sie mir die beste Praxis vor, um diese Informationen während der Verwendung zu erhalten SqlDataReader
in C#.
Lösung
SET FMTONLY ON
Kann verwendet werden, um nur Spalteninformationen zurückzugeben, keine Zeilen werden verarbeitet oder zurückgegeben.
Gibt nur Metadaten an den Kunden zurück. Kann verwendet werden, um das Format der Antwort zu testen, ohne die Abfrage tatsächlich auszuführen. (Bol)
Andere Tipps
Da dies in C# / .NET und nicht nur auf Datenbankebene geschehen ist SET FMTONLY ON
durch Übergabe eines Befehlsverhaltens (optionaler Parameter) von SchemaOnly
zu Sqlcommand.executereader:
SqlDataReader _Reader = _Command.ExecuteReader(CommandBehavior.SchemaOnly);
Dies bedeutet, dass Sie die eingereichte Abfrage nicht ändern müssen. Daher sollte dies ein "sauberer" Ansatz sein :-).