2010-05-21 21 views
23

में सभी तालिकाओं के नाम प्राप्त करने के लिए क्वेरी क्या एक क्वेरी लिखना संभव है जो मुझे SQL सर्वर डेटाबेस में सभी तालिकाओं का नाम देगी? मैं किसी ऐसे सिस्टम पर 'तथ्य के बाद' दस्तावेज पर काम कर रहा हूं जिसे मैंने नहीं बनाया था और डेटाबेस में टेबल की सूची प्राप्त करने के लिए शॉर्टकट की तलाश में हूं।SQL सर्वर 2008 डेटाबेस

उत्तर

44

एक एकल डाटाबेस में - हाँ:

USE your_database 
SELECT name FROM sys.tables 

सभी डेटाबेस भर में सभी तालिकाओं हो रही है - केवल एक हैक साथ .... कई तरीकों के लिए यह तो सवाल यह देखते हैं कि कैसे करना है: How do I list all tables in all databases in SQL Server in a single result set?

+1

पूरी तरह से काम किया! –

8

एक और तरीका है, यह भी MySQL और PostgreSQL

select TABLE_NAME from INFORMATION_SCHEMA.TABLES 
where TABLE_TYPE = 'BASE TABLE' 
4

पर काम करेंगे इस प्रयास करें:

यह वर्तमान डेटाबेस में सभी तालिकाओं के लिए स्कीमा + टेबल नाम प्रदर्शित करेगा।

यहां एक संस्करण है जो मौजूदा सर्वर पर प्रत्येक डेटाबेस में प्रत्येक तालिका सूचीबद्ध करेगा। , सभी तालिकाओं के लिए शून्य करने के लिए

SET NOCOUNT ON 
DECLARE @AllTables table (CompleteTableName nvarchar(4000)) 
DECLARE @Search nvarchar(4000) 
     ,@SQL nvarchar(4000) 
SET @Search=null --all rows 
SET @SQL='select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id WHERE @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name LIKE ''%'+ISNULL(@SEARCH,'')+'%''' 

INSERT INTO @AllTables (CompleteTableName) 
    EXEC sp_msforeachdb @SQL 
SET NOCOUNT OFF 
SELECT * FROM @AllTables ORDER BY 1 

सेट @Search बातें करने के लिए यह dbo.users 'की तरह सेट करें: यह एक खोज पैरामीटर किसी भी भाग या सर्वर + डेटाबेस + स्कीमा + तालिका नाम के कुछ हिस्सों पर इस्तेमाल किया जा करने की अनुमति देता या 'उन' या '.master.dbo' या यहाँ तक कि जैसे वाइल्डकार्ड, आदि शामिल

1

भी क्षेत्रों की जानकारी प्राप्त करने के लिए आप निम्न का उपयोग कर सकते '। .master% u।':

SELECT TABLE_SCHEMA, TABLE_NAME, 
     COLUMN_NAME, substring(DATA_TYPE, 1,1) AS DATA_TYPE 
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA NOT IN("information_schema", "mysql", "performance_schema") 
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION 
0
sys.tables 

सभी तालिकाओं में शामिल हैं। इसलिए विवरण के साथ सभी तालिकाओं को प्राप्त करने के लिए इस क्वेरी को निष्पादित करें।

SELECT * FROM sys.tables 

enter image description here

या बस का चयन नाम sys.tables से सभी तालिकाओं के नाम मिलता है।

SELECT Name From sys.tables 
0

कृपया अपने डीबी में टेबल सूचीबद्ध करने के लिए निम्न क्वेरी का उपयोग करें।

select name from sys.Tables 

इसके अलावा, आप एक where शर्त जोड़ सकते हैं, प्रणाली को छोड़ type ='U'

पूर्व जोड़कर टेबल और सूचियों केवल उपयोगकर्ता बनाया तालिका उत्पन्न करने के लिए: select name from sys.Tables where type ='U'

+0

उचित प्रारूपण का उपयोग करें जहां यह उचित है। – svgrafov

+0

निश्चित जेन्स..धन्यवाद :) –