परिदृश्य:
आप बीमा कंपनी के लिए SQL सर्वर डेवलपर/SQL सर्वर DBA के रूप में काम कर रहे हैं। आप डेटाबेस ऑब्जेक्ट के लिए दस्तावेज़ बना रहे हैं। आपको बिना प्राथमिक कुंजी बाधाओं के SQL सर्वर इंस्टेंस से सभी डेटाबेस से सभी तालिकाओं की सूची प्राप्त करने की आवश्यकता है।समाधान:
हम प्रत्येक डेटाबेस से प्राथमिक कुंजी बाधा वाली तालिकाओं की सूची के लिए सिस्टम दृश्यों का उपयोग कर सकते हैं या नहीं। चूंकि इस जानकारी को इकट्ठा करने के लिए प्रत्येक डेटाबेस पर क्वेरी चलाना होता है, हमें उपयोगकर्ता डेटाबेस की सूची के माध्यम से लूप करने की आवश्यकता होती है, हम SQL सर्वर इंस्टेंस पर सभी डेटाबेस के माध्यम से लूपिंग करने के लिए कर्सर का उपयोग करेंगे। हम प्रत्येक डेटाबेस के लिए अपने गतिशील एसक्यूएल का निर्माण करेंगे और परिणामों को अस्थायी तालिका में सहेजेंगे और अंत में हम प्रदर्शन के लिए रिकॉर्ड का चयन करेंगे।परिणाम सहेजने के लिए तालिका यदि OBJECT_ID('tempdb..#Results') पूर्ण ड्रॉप तालिका नहीं है #ResultsCREATE तालिका #परिणाम (सर्वरनाम VARCHAR(128), डेटाबेसनाम VARCHAR(128),SchemaName VARCHAR(128),TableName VARCHAR(128) ,ColumnName VARCHAR(128) ,ConstraintName VARCHAR(128) ,HasPrimaryKeyConstraint VARCHAR(10) )DCLARE CUR CURSORFORSELECT '[' + NAME + ']' as DBNameFROM sys.databasesWHERE NAME IN ('मास्टर' ,'tempdb' ,'model' , 'msdb' ) Curinto @DatabaseNameWHILE @@FETCH_STATUS =0BEGIN से अगला कर्फ़ट खोलें -- प्रत्येक डेटाबेस के लिए डायनामिक sql बनाएं DECLARE @SQL VARCHAR(MAX) =NULL SET @SQL ='#Results में सम्मिलित करें @@ServerName, T.Table_Catalog को इस रूप में चुनें DatabaseName, T.Table_Schema AS TableSc हेमा, T.Table_Name AS TableName, CCU.Column_Name AS ColumnName, TC.Constraint_Name AS ConstraintName, केस जब TC.Constraint_Name शून्य नहीं है तब ''हां'' और ''नहीं'' HasPrimaryKeyConstraintFrom' + @DatabaseName + ' के रूप में समाप्त होता है। info_schema.tables Tleft join' + @DatabaseName + '.information_Schema.Table_Constraints TC on T.Table_Catalog=TC.Table_Catalog and T.Table_Schema=TC.Table_Schema and T.Table_Name=TC.Table_Name and TC.Constraint_Type=''PRIMARY KEY ' लेफ्ट जॉइन' + @DatabaseName +
'.Information_Schema.constraint_column_usage CCU TC पर @DatabaseNameENDCLOSE CurDEALLOCATE Cur-- अस्थायी तालिका से सभी रिकॉर्ड चुनें * # परिणामों से चुनेंमैं अपने SQL सर्वर इंस्टेंस पर उपरोक्त क्वेरी निष्पादित करता हूं और यदि उपलब्ध हो तो प्राथमिक कुंजी बाधा वाले सभी डेटाबेस से तालिकाओं की सूची यहां दी गई है अन्यथा शून्य। एसक्यूएल सर्वर इंस्टेंस-एसक्यूएल सर्वर से सभी डेटाबेस में प्राथमिक कुंजी बाधा के साथ या बिना सभी टेबल कैसे प्राप्त करें / TSQL ट्यूटोरियल