2010-04-13 11 views

Antwort

15

Verwenden MSysObjects

SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0 
+6

Ich bekomme eine Leseberechtigung verweigert. – PsychoData

+1

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

+0

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

2

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

0

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 
0
SELECT name FROM MSysObjects where database <> '' 

verwenden diese Abfrage, um die Namen aller verknüpften Tabellen

1

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

Verwandte Themen