2011-11-28 15 views
5

Estoy usando SQL Server 2005. Estoy intentando SELECCIONAR una lista de tablas en una de mis bases de datos. Aquí está mi estructura de mi SQL Server:SQL Seleccionar la lista de tablas en una base de datos

- <IP>(SQL Server 9.0 -userlogin) 
    - Databases 
     - Company 
      - Tables 
      - dbo.UserDB 
      - dbo.detailsDB 
      - dbo.goodsDB 

me gustaría recuperar los valores de dbo.UserDB, dbo.detailsDB, dbo.goodsDB

Pero no sé lo que es la consulta SQL exacta necesaria.

he intentado muchas formas como

SELECT * FROM userlogin.Tables; y

SELECT * FROM userlogin.Company.Tables;, pero ninguno de ellos funciona.

He visto bastantes publicaciones que sugieren usar show databases y show tables, pero no parecen funcionar tan bien.

¿Es posible seleccionar una lista de nombres de tablas en una base de datos en primer lugar?

Gracias por cualquier ayuda con anticipación.


Gracias por el enlace MSDNA que proporciona @TomTom, que ahora pueden enumerar mis tablas en mi base de datos.

Sin embargo, me gustaría enumerar tablas específicas donde TABLE_NAME contiene "usuario".

¿Cómo puedo hacerlo? Estoy tratando en el siguiente sql pero no está visualizando el resultado por el momento:

SELECT DISTINCT TABLE_NAME 
FROM Company.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE '%"user"%'; 
GO 

Respuesta

5

Prueba el INFORMATION_SCHEMA.

http://msdn.microsoft.com/en-us/library/ms186778.aspx

contienen toda la información del esquema que necesita.

+0

gracias por el útil enlace. Ahora puedo enumerar todas mis bases de datos. Sin embargo, ¿qué sucede si quiero enumerar una base de datos donde el nombre contiene, p. "usuario"? Estoy intentando el siguiente sql: SELECCIONAR DISTINCT TABLE_NAME FROM Company.INFORMATION_SCHEMA.COLUMNS DONDE TABLE_NAME ME GUSTA '% "usuario"%'; GO – gymcode

+1

@RUiHAO - ¿Desea enumerar una base de datos o tablas? Eliminar el usuario "alrededor" para que el usuario "%" "%" se convierta en "usuario%%". –

+0

@Lieven Disculpe mi error, quiero una lista de tablas. Su método funcionó. Muchas gracias – gymcode

2

Probar:

SELECT * 
from sysobjects 
where type = 'U' AND 
NAME LIKE '%user%' 
GO 
+0

no, no lo hace trabajo. Me da tablas graciosas. – gymcode

+1

Obsoleto: debe usar 'sys.tables' a partir de SQL Server 2005 y posteriores –

4

Puede utilizar INFORMATION_SCHEMA según lo dicho por @TomTom:

USE <<YOUR_DB_NAME>> 

SELECT TABLE_SCHEMA + '.' + TABLE_NAME, * 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 
ORDER BY TABLE_SCHEMA + '.' + TABLE_NAME 

Puede personalizar por encima de consulta según sus necesidades.

Para su otra pregunta para encontrar mesas en las que el nombre contiene 'usuario', ejecute la siguiente instrucción:

USE <<YOUR_DB_NAME>> 
Exec sp_tables '%user%' 
5

uso del nuevo catálogo sys sistema en SQL Server 2005 y hasta:

SELECT Name 
FROM sys.tables 
WHERE is_ms_shipped = 0 -- only list *your* tables - not the system/MS table 

Puede leer más sobre las vistas del catálogo del sistema y cómo consultarlas en el MSDN Books Online - y tenga cuidado - ¡hay lotes más para leer y aprender!

3

Usted podría utilizar esta

Use ***database name*** 

SELECT * 
FROM sys.tables 
WHERE name like '%user%' 

Lo sentimos, hemos visto que @marc_s ha proporcionado la respuesta ante mí!

Cuestiones relacionadas