2010-04-13 17 views

Respuesta

15

Uso MSysObjects

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

Obtengo un permiso de lectura denegado. – PsychoData

+1

Eso arroja este error: 'proveedor MSDASQL OLE DB" para el servidor vinculado mensaje devuelto "TEST" mensaje "Microsoft [ODBC Microsoft Access Driver] registro (s) no se puede leer, no hay permiso de lectura en 'MSysObjects'.". Mapeé 'sa' a' Admin'. ¿Qué se requiere para obtener los resultados? – ajeh

+0

Acabo de encontrar esto: 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 "Como MSysObjects es una tabla del sistema en Access, el usuario administrador no tiene permiso para leer datos en él". – ajeh

2

MS Access tiene varias tablas del sistema que son, por defecto, ocultos a la lista de tablas . Puedes mostrarlos.

En Ms Access 2007 haga clic con el botón derecho en la lista de tablas y seleccione Navigation Options. En la parte inferior del formulario, encontrará la casilla de verificación Show System Objects. Verifíquelo y las tablas del sistema aparecerán en la lista de tablas. Todos comienzan con MSys.
De forma alternativa, se puede activar el formulario de opciones desde el menú de la aplicación: haga clic en el botón Access options -> seleccione Current Database y aparece el botón Navigation Options.

Ahora puede examinar la estructura y los contenidos y generar consultas de todas las tablas del sistema con las herramientas de MsAccess.

Como respondió Alex, información de la tabla se encuentra en MSysObjects

0

This discussion gives una lista de valores de tipo. Tenga en cuenta que MS no garantiza los mismos valores de una versión a otra.

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 <> '' 

utilizar esta consulta para obtener los nombres de todas las tablas vinculadas

1

La siguiente consulta me ayudó alcance un rediseño/migración de MS Access a C# & SQL Server.

Nota: Combina las respuestas proporcionadas por Alex K. y KTys.
Publicado aquí con la creencia de que será útil a otra persona (o yo mismo si tengo que hacer esto de nuevo) la advertencia

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 


Nota de KTys (números de tipo están sujetos a cambios)
Añadir , * a la cláusula de selección para ver los otros campos (como conectar); no fueron útiles para mí.

Creado/probado con MS Access 2013

Cuestiones relacionadas