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

DB की सभी तालिकाओं, पंक्तियों और स्तंभों में एक स्ट्रिंग खोजें

यह कोड इसे SQL 2005 में करना चाहिए, लेकिन कुछ चेतावनी:

  1. यह हास्यास्पद रूप से धीमा है। मैंने इसे एक छोटे डेटाबेस पर परीक्षण किया जिसमें मेरे पास केवल कुछ मुट्ठी भर टेबल हैं और इसे पूरा करने में कई मिनट लग गए। यदि आपका डेटाबेस इतना बड़ा है कि आप इसे समझ नहीं सकते हैं तो यह शायद वैसे भी अनुपयोगी होगा।

  2. मैंने इसे कफ से लिखा है। मैंने कोई त्रुटि प्रबंधन नहीं किया और कुछ अन्य ढिलाई हो सकती है, खासकर जब से मैं अक्सर कर्सर का उपयोग नहीं करता। उदाहरण के लिए, मुझे लगता है कि कॉलम कर्सर को हर बार बंद करने/हटाने/फिर से बनाने के बजाय ताज़ा करने का एक तरीका है।

यदि आप डेटाबेस को नहीं समझ सकते हैं या यह नहीं जानते हैं कि सामान कहाँ से आ रहा है, तो आपको शायद किसी ऐसे व्यक्ति को ढूंढना चाहिए जो ऐसा करता हो। यहां तक ​​​​कि अगर आप यह पता लगा सकते हैं कि डेटा कहां है, तो इसे कहीं न कहीं डुप्लिकेट किया जा सकता है या डेटाबेस के अन्य पहलू भी हो सकते हैं जिन्हें आप नहीं समझते हैं। अगर आपकी कंपनी में कोई भी डेटाबेस को नहीं समझता है तो आप बहुत बड़ी गड़बड़ी में हैं।

DECLARE
    @search_string  VARCHAR(100),
    @table_name     SYSNAME,
    @table_schema   SYSNAME,
    @column_name    SYSNAME,
    @sql_string     VARCHAR(2000)

SET @search_string = 'Test'

DECLARE tables_cur CURSOR FOR SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'

OPEN tables_cur

FETCH NEXT FROM tables_cur INTO @table_schema, @table_name

WHILE (@@FETCH_STATUS = 0)
BEGIN
    DECLARE columns_cur CURSOR FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @table_schema AND TABLE_NAME = @table_name AND COLLATION_NAME IS NOT NULL  -- Only strings have this and they always have it

    OPEN columns_cur

    FETCH NEXT FROM columns_cur INTO @column_name
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
        SET @sql_string = 'IF EXISTS (SELECT * FROM ' + QUOTENAME(@table_schema) + '.' + QUOTENAME(@table_name) + ' WHERE ' + QUOTENAME(@column_name) + ' LIKE ''%' + @search_string + '%'') PRINT ''' + QUOTENAME(@table_schema) + '.' + QUOTENAME(@table_name) + ', ' + QUOTENAME(@column_name) + ''''

        EXECUTE(@sql_string)

        FETCH NEXT FROM columns_cur INTO @column_name
    END

    CLOSE columns_cur

    DEALLOCATE columns_cur

    FETCH NEXT FROM tables_cur INTO @table_schema, @table_name
END

CLOSE tables_cur

DEALLOCATE tables_cur


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2020 में रुझान जिनके बारे में डीबीए को पता होना चाहिए

  2. Sql सर्वर प्रतिकृति को सर्वर से कनेक्शन बनाने के लिए वास्तविक सर्वर नाम की आवश्यकता होती है

  3. एसएसएमएस कैसे स्थापित करें

  4. SQL सर्वर में शीर्ष के साथ संबंधों का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 114

  5. किसी आइटम का क्रम बदलने के लिए अद्यतन SQL उत्पन्न करें?