Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सभी डेटाबेस की सभी प्रक्रियाओं में संदर्भित सभी स्तंभों की सूची बनाएं

यह वह सूची प्राप्त करेगा जिसके बाद आप हैं, हालांकि यह आपकी मदद नहीं करेगा यदि आपके पास ऐसे कॉलम संदर्भ हैं जो गतिशील SQL में एम्बेडेड हैं (और ऐसे संदर्भ नहीं मिल सकते हैं जो आस्थगित नाम समाधान पर भरोसा करते हैं)। SQL सर्वर DMV आउटपुट के साथ आने के लिए संग्रहीत कार्यविधि के टेक्स्ट को पार्स नहीं करता है।

COLLATE के साथ अभी प्रयास करें उन मामलों से निपटने के लिए क्लॉज जहां आपके पास एक ही सर्वर पर अलग-अलग कॉलेशन वाले डेटाबेस हैं।

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'UNION ALL
SELECT 
  [database]  = ''' + REPLACE(name, '''', '''''') + ''',
  [procedure] = QUOTENAME(s.name) + ''.'' + QUOTENAME(p.name)
                COLLATE Latin1_General_CI_AI, 
  [table]     = QUOTENAME(referenced_schema_name) + ''.'' 
              + QUOTENAME(referenced_entity_name)
                COLLATE Latin1_General_CI_AI,
  [column]    = QUOTENAME(referenced_minor_name)
                COLLATE Latin1_General_CI_AI
FROM ' + QUOTENAME(name) + '.sys.schemas AS s
INNER JOIN ' + QUOTENAME(name) + '.sys.procedures AS p
ON s.[schema_id] = p.[schema_id]
CROSS APPLY ' + QUOTENAME(name) 
+ '.sys.dm_sql_referenced_entities'
+ '(QUOTENAME(s.name) + ''.'' + QUOTENAME(p.name), N''OBJECT'') AS d
WHERE d.referenced_minor_id > 0'
FROM sys.databases 
  WHERE database_id > 4 
  AND [state] = 0;

SET @sql = STUFF(@sql,1,11,'');

EXEC sp_executesql @sql;

साथ ही CROSS APPLY यदि आपके पास 80 संगतता मोड में डेटाबेस हैं तो सिंटैक्स काम नहीं करेगा। बस सुनिश्चित करें कि आप ऐसे डेटाबेस में कोड निष्पादित नहीं करते हैं और इसे ठीक काम करना चाहिए (भले ही कुछ लक्ष्य डेटाबेस 80 में हों)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर लेनदेन संबंधी प्रतिकृति मुद्दे

  2. यदि चयन कथन से कोई परिणाम नहीं मिलता है तो स्ट्रिंग को वापस करने के लिए केस का उपयोग करना

  3. SQL सर्वर में INNER JOIN का उपयोग करके मैं एकाधिक तालिकाओं से कैसे हटाऊं?

  4. Sql सर्वर सेवा ब्रोकर वार्तालाप समूह

  5. SQL सर्वर कनेक्शन स्ट्रिंग में पोर्ट नंबर कैसे निर्दिष्ट करें?