2009-03-04 13 views
9

भर में टेबल ढूंढें मैं एक सर्वर के लिए एक तालिका निर्यात किया, लेकिन मैं तालिका नहीं मिल रहा। शायद मैंने सही गंतव्य डेटाबेस नहीं रखा है। यदि मेरे सर्वर में एकाधिक डेटाबेस हैं, तो उनमें से प्रत्येक को खोलने के बिना मैं यह तालिका कैसे ढूंढ सकता हूं?विभिन्न डेटाबेस SQL ​​सर्वर 2005

मैं उपयोग एमएस Sql सर्वर प्रबंधन स्टूडियो 2008.

उत्तर

13

असहज और गंदा है, लेकिन यह काम करना होगा।

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

+1 sp_MSforeachdb है, जो मुझे नहीं पता था प्रयोग करने के लिए। – cdonner

+0

यह तब होता है जब आपको पता एसक्यूएल सर्वर समर्थन के दो साल उपयोगी :) –

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

[yourtable] के बजाय, लापता तालिका का नाम टाइप करें, और परिणाम फिर से चलाने के।

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

माइनर स्पष्टीकरण सिर्फ 'superusers' जो पता नहीं है डीबीएस नाम के लिए कैसे के साथ उन लोगों के लिए सिर दर्द से बचने के लिए आप समुचित विश्वास उस में dbo स्कीमा में होगा जो भी डेटाबेस

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

ताकि आप डेटाबेस नाम से बच गया हो सकता है। अच्छा कॉल –

5

एक तरह से

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' 

या यदि:

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

ग्रेट विचार, धन्यवाद। इसे एक दृश्य में सामान्यीकृत और सहेजा गया, बस मुझे जो चाहिए! – eftpotrm

+0

@eftpotrm - आह मेरे पास अब से बेहतर तरीका है। [यहां एक लिंक है] (http://stackoverflow.com/a/16520904/73226) –

+0

धन्यवाद - मैं थोड़ी अलग आवश्यकता के साथ समाप्त हो गया है, इसलिए मुझे लगता है कि मेरे लिए काम करने के लिए काफी कुछ नहीं है। करुणा :-) एक मो में जवाब के रूप में मेरा जोड़ना। – eftpotrm

3

ऊपर मार्टिन स्मिथ के जवाब बंद आधार पर लेकिन एक दृश्य में सामान्यीकृत 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) 

अब, अगर केवल मैं एक तरह से काम कर सकते हैं करने के लिए कॉलम्स के लिए एक .......

संपादित करें - इस पर ध्यान न दें, यह खोजने कभी कभी टेबल पूरी तरह याद करते हैं।