Können wir alle Tabellen im msaccess mit sql finden.können wir alle Tabellen in der msaccess-Datenbank mit sql auflisten?
wie wir in Sqlserver
select * from sys.tables
in SQLite
SELECT * FROM sqlite_master where type='table'
Können wir alle Tabellen im msaccess mit sql finden.können wir alle Tabellen in der msaccess-Datenbank mit sql auflisten?
wie wir in Sqlserver
select * from sys.tables
in SQLite
SELECT * FROM sqlite_master where type='table'
Verwenden MSysObjects
SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0
Ms Access mehrere Systemtabellen hat, die standardmäßig von Tabellen Liste versteckt . Sie können sie zeigen.
Klicken Sie in Ms Access 2007 mit der rechten Maustaste auf die Tabellenliste und wählen Sie Navigation Options
. Am unteren Rand des Formulars finden Sie Show System Objects
Kontrollkästchen. Überprüfen Sie es und Systemtabellen werden in der Tabellenliste angezeigt. Sie beginnen alle mit MSys
.
Alternativ kann das Optionsformular über das Anwendungsmenü aktiviert werden - klicken Sie auf die Schaltfläche Access options
-> wählen Sie Current Database
und es gibt Navigation Options
Schaltfläche.
Jetzt können Sie Struktur und Inhalt untersuchen und Abfragen aller Systemtabellen mit MsAccess-Tools generieren.
Als Alex antwortete Tabelleninformationen sind in MSysObjects
This discussion gives eine Liste von Typ-Werten. Beachten Sie, dass MS nicht die gleichen Werte von Version zu Version garantiert.
Type TypeDesc
-32768 Form
-32766 Macro
-32764 Reports
-32761 Module
-32758 Users
-32757 Database Document
-32756 Data Access Pages
1 Table - Local Access Tables
2 Access Object - Database
3 Access Object - Containers
4 Table - Linked ODBC Tables
5 Queries
6 Table - Linked Access Tables
8 SubDataSheets
SELECT name FROM MSysObjects where database <> ''
verwenden diese Abfrage, um die Namen aller verknüpften Tabellen
Die folgende Abfrage half mir Umfang ein Redesign/Migration von MS Access zu C# & SQL Server zu erhalten.
Hinweis: Kombiniert die Antworten, die von Alex K. und KTys bereitgestellt werden.
Posted hier mit dem Glauben, dass es jemandem nützlich sein wird, andere (oder mich, wenn ich dies wieder zu tun haben)
SELECT
SWITCH (
[type]=-32764,'Report' ,
[type] = 1, 'Table, local' ,
[type] = 3, 'obj Containers' ,
[type] = 4, 'Table, link odbc' ,
[type] = 5, 'Query' ,
[type] = 6, 'Table, link access' ,
[type] = 8, 'SubDataSheets' ,
TRUE, [type]
) AS [type name (or #)]
, name AS [Table Name]
FROM
MSysObjects
ORDER BY
2, 3
Hinweis Warnung von KTys (Typnummern sind Änderungen vorbehalten)
, *
hinzufügen in die select-Klausel, um die anderen Felder zu sehen (z. B. connect); Sie waren mir nicht hilfreich.
Erstellt/getestet mit MS Access 2013
Ich bekomme eine Leseberechtigung verweigert. – PsychoData
Das löst diesen Fehler aus: "OLE DB-Provider" MSDASQL "für Verbindungsserver" TEST "gab Nachricht zurück" [Microsoft] [ODBC Microsoft Access Driver] Record (s) kann nicht gelesen werden, keine Leseberechtigung für 'MSysObjects'. " Ich habe 'sa' auf' Admin' gemappt. Was ist erforderlich, um die Ergebnisse zu erhalten? – ajeh
Gefunden gerade: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8cd6eadd-2d9d-4dbd-8920-e2847a74f80a/retrieve-all-msaccess-table-names-using-openrowset-funtion -in-sql-server? forum = transactsql "Da es sich bei MSysObjects um eine Systemtabelle in Access handelt, ist der Benutzer Admin nicht berechtigt, darin Daten zu lesen." – ajeh