2009-03-04 17 views

cevap

13

Kaba ve kirli, ama işi yapardı.

EXEC sp_MSForEachDB ' 
USE [?] 
IF OBJECT_ID(''mytable'') IS NOT NULL AND 
    OBJECTPROPERTY(OBJECT_ID(''mytable''), ''IsTable'') = 1 
PRINT ''Found here: ?''' 
+1

+1. – cdonner

+0

İki yıllık SQL Server desteğinin yararlı olabileceğini öğrendiğiniz zaman budur :) –

1
select 'select * from '+name+'.sys.tables where name= 
     ''[yourtable]'';' from sys.databases 

yerine [yourtable] arasında, eksik tablonun adını yazın ve tekrar bir sonuç çalıştırmak kullanın.

1
EXEC sp_MSForEachDB ' 
USE ? 
IF OBJECT_ID(''mytable'') IS NOT NULL AND 
    OBJECTPROPERTY(OBJECT_ID(''mytable''), ''IsTable'') = 1 
    PRINT ''?'' 
' 
2

Minör açıklama sadece DBS isim bilmiyorum 'SUPERUSERS' olanlar için baş ağrıları önlemek için

numaralı veritabanında dbo şemasında olacağından emin olabilirsiniz. Sadece benden bir yolunu halledemiyorsanız,

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) 

Şimdi -

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

bu yüzden veritabanı isminden kaçtınız. iyi bir çağrı –

5

Tek yön

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' 

Veya eğer:

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

Harika bir fikir, teşekkürler. İhtiyacım olan şeyleri bir görüşe ve kurtarmaya genelleştirdi! – eftpotrm

+0

@eftpotrm - Ah bundan daha iyi bir yol var. [İşte bir link] (http://stackoverflow.com/a/16520904/73226) –

+0

Teşekkürler - Ben biraz farklı bir gereksinim ile bitti bu yüzden benim için işe yaramayacak sanırım. Yazık :-) Benim bir cevap olarak mayın ekleme. – eftpotrm

3

210 sys.tables çapraz DB sürümü bir tür vermek amacıyla yukarıdaki Martin Smith'in cevabı kapalı göre ancak genelleştirilmiş sütunlar için de aynı .......

DÜZENLEME - Bunu yok sayın, bazen tabloları tamamen özlüyor. Bilmediğim sp_MSforeachdb kullanmak için

İlgili konular