Pregunta

Exporté una tabla a un servidor pero no puedo encontrar la tabla. Tal vez no puse la base de datos de destino correcta. ¿Cómo puedo encontrar esta tabla si mi servidor tiene varias bases de datos, sin abrir cada una de ellas?

Yo uso MS Sql Server Management Studio 2008.

¿Fue útil?

Solución

Rudo y sucio, pero haría el trabajo.

-- Instructions. Replace "table_name_here" with actual table name
sp_MSforeachdb 'USE ?
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N''[table_name_here]'') AND OBJECTPROPERTY(id, N''IsUserTable'') = 1)
BEGIN
  PRINT ''Found in db ?''
END'

Otros consejos

De una manera

SELECT  DISTINCT DB_NAME(database_id) 
FROM [sys].[dm_db_index_operational_stats](NULL,NULL,NULL,NULL)
WHERE OBJECT_NAME(object_id,database_id) = 'table_name'

O si está razonablemente seguro de que estaría en el esquema dbo en cualquier base de datos

SELECT name
FROM   sys.databases
WHERE  CASE
         WHEN state_desc = 'ONLINE' 
              THEN OBJECT_ID(QUOTENAME(name) + '.[dbo].[table_name]', 'U')
       END IS NOT NULL 

Basado en la respuesta de Martin Smith anterior, pero generalizada en una vista para ofrecer una especie de versión de base de datos de sys.tables -

CREATE VIEW ListTablesAllDBs

AS

SELECT 
    DB_NAME(database_id) as DBName,
    OBJECT_SCHEMA_NAME(object_id,database_id) as SchemaName,
    OBJECT_NAME(object_id,database_id) as TableName
FROM
    [sys].[dm_db_index_operational_stats](NULL,NULL,NULL,NULL)

Ahora, si solo puedo encontrar una manera de hacer lo mismo para las columnas .......

EDITAR - Ignora esto, encontrando que a veces falla las tablas por completo.

Aclaración menor solo para evitar dolores de cabeza para aquellos con "Superusuarios" que no saben cómo nombrar DBs:

EXEC sp_MSForEachDB '
USE [?]
IF OBJECT_ID(''mytable'') IS NOT NULL AND
   OBJECTPROPERTY(OBJECT_ID(''mytable''), ''IsTable'') = 1
PRINT ''Found here: ?'''
select 'select * from '+name+'.sys.tables where name=
        ''[yourtable]'';' from sys.databases

En lugar de [su tabla], escriba el nombre de la tabla que falta y vuelva a ejecutar el resultado.

EXEC sp_MSForEachDB '
USE ? 
IF OBJECT_ID(''mytable'') IS NOT NULL AND
   OBJECTPROPERTY(OBJECT_ID(''mytable''), ''IsTable'') = 1
    PRINT ''?''
'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top