परिदृश्य:
आप SQL सर्वर डेवलपर या SQL सर्वर DBA के रूप में काम कर रहे हैं। आपको SQL सर्वर इंस्टेंस पर सभी डेटाबेस से सभी तालिकाओं की सूची प्राप्त करने की आवश्यकता है जिसमें प्राथमिक कुंजी बाधाएं नहीं हैं। आप यह कैसे करेंगे?समाधान:
हम SQL सर्वर इंस्टेंस पर सभी डेटाबेस से सभी तालिकाओं को प्राप्त करने के लिए सिस्टम दृश्यों का उपयोग करेंगे, जिनमें प्राथमिक कुंजी बाधाएं नहीं हैं। परिणाम सहेजने के लिए अस्थायी तालिका यदि OBJECT_ID('tempdb..#Results') पूर्ण ड्रॉप तालिका नहीं है #ResultsCREATE तालिका #परिणाम (सर्वरनाम VARCHAR(128), डेटाबेसनाम VARCHAR(128),SchemaName VARCHAR(128),TableName VARCHAR(128)) DECLARE CUR CURSORFORSELECT '[' + NAME + ']' sys.databases से DBName के रूप में जहां नाम नहीं है ('मास्टर', 'tempdb', 'मॉडल', 'msdb') Curinto @DatabaseNameWHILE @@FETCH_STATUS =0BEGIN - प्रत्येक डेटाबेस के लिए डायनामिक एसक्यूएल बनाएं DECLARE @SQL VARCHAR(MAX) =NULL SET @SQL ='#Results में डालें @@ ServerName, Table_CataLog को DatabaseName के रूप में, Table_Schema को TableSchema के रूप में, Table_Name को '+@DatabaseName+'.information_schema.tables से TableName के रूप में चुनें। टी जहां e मौजूद नहीं है ('+@DatabaseName+'.information_Schema.Table_Constraints C से 1 चुनें जहां Constraint_Type=''PRIMARY KEY'' और C.Table_Name=T.Table_Name and C.Table_Schema=T.Table_Schema ) और Table_Type=''BASE TABLE ''' EXEC (@SQL) --PRINT @SQL फ़ेच फ्रॉम Cur से @DatabaseNameENDCLOSE CurDEALLOCATE Cur-- Temp तालिका से सभी रिकॉर्ड चुनें * #Results से चुनें मैंने अपने SQL सर्वर इंस्टेंस पर उपरोक्त क्वेरी निष्पादित की और उन सभी डेटाबेस से तालिकाओं की सूची प्राप्त की जिनमें प्राथमिक कुंजी बाधाएं नहीं हैं।एसक्यूएल सर्वर इंस्टेंस से सभी टेबल प्राप्त करें जिनमें प्राथमिक कुंजी बाधा नहीं है - एसक्यूएल सर्वर / टीएसक्यूएल ट्यूटोरियल