none
SQLServer mit GetSchema auslesen RRS feed

  • Frage

  • Hallo,

    stelle eine ältere Anwendung auf Parallelbetrieb (SQL Server oder MS Access gem. Userauswahl)  um.

    Bei der Schemaabfrage komme ich ins Schleudern und finde nichts im Netz:

    Unter OLEDB funzt der Code:

    Dim SchemaTable As DataTable

    OLEDBConnect.open: REM ACCESS

    SchemaTable = OLEDBConnect.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Nothing})

    OLEDBConnect.Close

    Lese Tabellenname, Created, Changed aus.

    Wie muss ich mit SQLConnect drangehen?

    Versuchte mit 

    SchemaTable = SQLConnect.GetSchema("tables") aber da fehlen mir wohl Spalten.

    Stehe wohl auf dem Schlauch....

    Danke für Feedback.

    Klaus

    Montag, 14. August 2017 12:45

Antworten

  • Hallo Klaus,

    GetSchema( "tables" ) liefert dir klarerweise nur Tabellen.

    Oder meintest Du mit "fehlen mir wohl Spalten", dass in der Ergebnistabelle nicht alle von dir gewünschten Daten zur jeweiligen Tabelle zu sehen sind?

    In diesem MSDN Artikel findest Du die Informationen, bei welcher Anfrage Du welche Daten zurückerhältst.

    Falls Du mehr willst, musst Du andere Tabellen im SQL Server auslesen, bspw. mit:

    SELECT *
    FROM   sys.tables

    oder für die Spalteninformationen:

    SELECT *
    FROM   sys.columns

    wobei ich für die Spalteninformationen eher auf:

    SELECT *
    FROM   INFORMATION_SCHEMA.COLUMNS

    zurückgreifen würde. Die ist doch einfacher zu verwenden. (INFORMATION_SCHEMA.TABLES gibt es zwar auch, da steht aber das, was Du wissen willst, nicht drin)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 14. August 2017 13:17
    Moderator

Alle Antworten

  • Hallo Klaus,

    GetSchema( "tables" ) liefert dir klarerweise nur Tabellen.

    Oder meintest Du mit "fehlen mir wohl Spalten", dass in der Ergebnistabelle nicht alle von dir gewünschten Daten zur jeweiligen Tabelle zu sehen sind?

    In diesem MSDN Artikel findest Du die Informationen, bei welcher Anfrage Du welche Daten zurückerhältst.

    Falls Du mehr willst, musst Du andere Tabellen im SQL Server auslesen, bspw. mit:

    SELECT *
    FROM   sys.tables

    oder für die Spalteninformationen:

    SELECT *
    FROM   sys.columns

    wobei ich für die Spalteninformationen eher auf:

    SELECT *
    FROM   INFORMATION_SCHEMA.COLUMNS

    zurückgreifen würde. Die ist doch einfacher zu verwenden. (INFORMATION_SCHEMA.TABLES gibt es zwar auch, da steht aber das, was Du wissen willst, nicht drin)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 14. August 2017 13:17
    Moderator
  • Hallo Klaus,
    versuche doch statt
    SchemaTable = OLEDBConnect.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Nothing})

    folgendes:

    SchemaTable = OLEDBConnect.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})

    Grüße Alexander

    Montag, 14. August 2017 13:21
  • Danke Alexander, guter Tip, ändere ich beim OLEDB Teil :-)
    Montag, 14. August 2017 14:38
  • Hallo Stefan,

    Danke - genau was ich brauche.

    Grüsse, Klaus

    Montag, 14. August 2017 14:39