दिलचस्प पोस्ट
dc.js – एकाधिक कॉलम से पंक्ति चार्ट कैसे बनाएं इनलाइन फ़ंक्शन का उपयोग कब करना है और इसका उपयोग कब नहीं करना है? सी ++ में सीरियलाइजेशन कैसे कार्यान्वित करें त्रुटि प्राप्त हो रही है: क्लास 'android.app.AppOpsManager' नहीं पायी जा सकती, जिसका उपयोग विधि com.google.android.gms.common.GooglePlayServicesUtil.zza जावा में 'बाहरी' आईपी पता प्राप्त करना जावा का उपयोग कर सेलेनियम वेबड्राइवर में एक ड्रॉपडाउन मूल्य का चयन कैसे करें मैं Rails में मॉडल की तालिका-नाम मैपिंग को स्पष्ट रूप से कैसे निर्दिष्ट करूँ? सत्र चर तक कैसे पहुंचें और उन्हें जावास्क्रिप्ट में सेट करें? एक चिपचिपा नेविगेशन बार कैसे बनाओ जो स्क्रॉलिंग के बाद शीर्ष पर तय हो जाता है एसिंक व्हॉइड, एएसपी.नेट, और बकाया संचालन की गणना स्मृति स्थान की सामग्री को संदर्भित करना (x 86 एड्रेसिंग मोड) Attr_accessor और attr_accessible के बीच का अंतर ऑपरेटर == को सामान्य प्रकार के सी # में लागू नहीं किया जा सकता है? टीडीडी के लिए जावास्क्रिप्ट इकाई परीक्षण उपकरण उद्देश्य-सी एकाधिक वंशानुक्रम

SQL सर्वर प्रबंधन स्टूडियो 2008 में सभी तालिकाओं की खोज के द्वारा एक स्ट्रिंग खोजें

SQL सर्वर प्रबंधन स्टूडियो 2008 में डेटाबेस के सभी तालिकाओं में स्ट्रिंग खोजना कोई तरीका है?

मैं स्ट्रिंग के लिए खोज करना चाहता हूँ john कहना परिणाम तालिका और उनके संबंधित पंक्ति जिसमें john होना चाहिए दिखाया जाना चाहिए।

वेब के समाधान से एकत्रित समाधान "SQL सर्वर प्रबंधन स्टूडियो 2008 में सभी तालिकाओं की खोज के द्वारा एक स्ट्रिंग खोजें"

किसी दिए गए खोज स्ट्रिंग के लिए सभी तालिकाओं के सभी स्तंभों को खोजने के लिए कृपया प्रयास करें:

 CREATE PROC SearchAllTables ( @SearchStr nvarchar(100) ) AS BEGIN CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630)) SET NOCOUNT ON DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110) SET @TableName = '' SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''') WHILE @TableName IS NOT NULL BEGIN SET @ColumnName = '' SET @TableName = ( SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName AND OBJECTPROPERTY( OBJECT_ID( QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) = 0 ) WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL) BEGIN SET @ColumnName = ( SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2) AND TABLE_NAME = PARSENAME(@TableName, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'int', 'decimal') AND QUOTENAME(COLUMN_NAME) > @ColumnName ) IF @ColumnName IS NOT NULL BEGIN INSERT INTO #Results EXEC ( 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) FROM ' + @TableName + ' (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2 ) END END END SELECT ColumnName, ColumnValue FROM #Results END 

यदि आप मेरे जैसे हैं और किसी उत्पादन वातावरण में कुछ प्रतिबंध हैं, तो आप टेम्पलेट तालिका के बजाय तालिका चर का उपयोग करना चाह सकते हैं, और एक प्रक्रिया बनाने की बजाय एक विज्ञापन-हॉक क्वेरी।

बेशक अपने एसक्यूएल सर्वर उदाहरण के आधार पर, यह तालिका चर का समर्थन होना चाहिए।

मैंने खोज के दायरे को कम करने के लिए USE कथन भी जोड़ा है

 USE DATABASE_NAME DECLARE @SearchStr nvarchar(100) = 'SEARCH_TEXT' DECLARE @Results TABLE (ColumnName nvarchar(370), ColumnValue nvarchar(3630)) SET NOCOUNT ON DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110) SET @TableName = '' SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''') WHILE @TableName IS NOT NULL BEGIN SET @ColumnName = '' SET @TableName = ( SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName AND OBJECTPROPERTY( OBJECT_ID( QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) = 0 ) WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL) BEGIN SET @ColumnName = ( SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2) AND TABLE_NAME = PARSENAME(@TableName, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'int', 'decimal') AND QUOTENAME(COLUMN_NAME) > @ColumnName ) IF @ColumnName IS NOT NULL BEGIN INSERT INTO @Results EXEC ( 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) FROM ' + @TableName + ' (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2 ) END END END SELECT ColumnName, ColumnValue FROM @Results 

थोड़ा देर हो चुकी है लेकिन उम्मीद है कि उपयोगी है।

क्यों नहीं कुछ तीसरे पक्ष के उपकरण है कि SSMS में एकीकृत किया जा सकता है की कोशिश करो।

मैंने स्कीमा और डेटा खोज दोनों के लिए अच्छी सफलता के साथ एपेक्स एसक्यूएल खोज (100% मुक्त) के साथ काम किया है और एसएसएमएस उपकरण पैक भी है जिसमें यह सुविधा है (एसक्यूएल 2012 के लिए मुफ्त नहीं बल्कि काफी सस्ती)।

संग्रहित प्रक्रिया ऊपर वास्तव में महान है; यह सिर्फ यही है कि यह मेरी राय में अधिक सुविधाजनक है साथ ही, अगर आपको डेट टाइम कॉलम या GUID कॉलम और इसके लिए खोज करना है, तो कुछ मामूली संशोधनों की आवश्यकता होगी …

एसक्यूएल सर्वर 2012 के लिए टेकडो के उत्तर को अपडेट करने के लिए। आपको 'FROM ' + @TableName + ' (NOLOCK) ' से FROM ' + @TableName + 'WITH (NOLOCK) ' +

अन्य बुद्धिमानों से आपको निम्न त्रुटि मिल जाएगी: Deprecated feature 'Table hint without WITH' is not supported in this version of SQL Server.

नीचे पूर्ण अद्यतन संग्रहीत कार्यविधि है:

 CREATE PROC SearchAllTables ( @SearchStr nvarchar(100) ) AS BEGIN CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630)) SET NOCOUNT ON DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110) SET @TableName = '' SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''') WHILE @TableName IS NOT NULL BEGIN SET @ColumnName = '' SET @TableName = ( SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName AND OBJECTPROPERTY( OBJECT_ID( QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) = 0 ) WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL) BEGIN SET @ColumnName = ( SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2) AND TABLE_NAME = PARSENAME(@TableName, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'int', 'decimal') AND QUOTENAME(COLUMN_NAME) > @ColumnName ) IF @ColumnName IS NOT NULL BEGIN INSERT INTO #Results EXEC ( 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) FROM ' + @TableName + 'WITH (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2 ) END END END SELECT ColumnName, ColumnValue FROM #Results END 

थोड़ा देर हो चुकी है, लेकिन आप आसानी से इस क्वेरी के साथ एक स्ट्रिंग पा सकते हैं

 DECLARE @search_string VARCHAR(100), @table_name SYSNAME, @table_id INT, @column_name SYSNAME, @sql_string VARCHAR(2000) SET @search_string = 'StringtoSearch' DECLARE tables_cur CURSOR FOR SELECT ss.name +'.'+ so.name [name], object_id FROM sys.objects so INNER JOIN sys.schemas ss ON so.schema_id = ss.schema_id WHERE type = 'U' OPEN tables_cur FETCH NEXT FROM tables_cur INTO @table_name, @table_id WHILE (@@FETCH_STATUS = 0) BEGIN DECLARE columns_cur CURSOR FOR SELECT name FROM sys.columns WHERE object_id = @table_id AND system_type_id IN (167, 175, 231, 239) OPEN columns_cur FETCH NEXT FROM columns_cur INTO @column_name WHILE (@@FETCH_STATUS = 0) BEGIN SET @sql_string = 'IF EXISTS (SELECT * FROM ' + @table_name + ' WHERE [' + @column_name + '] LIKE ''%' + @search_string + '%'') PRINT ''' + @table_name + ', ' + @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_name, @table_id END CLOSE tables_cur DEALLOCATE tables_cur 

मैंने इसके लिए एक एसपी लिखा है जो खोज परिणामों को तालिका नाम के रूप में देता है, कॉलम के नाम जिसमें खोज खोजशब्द स्ट्रिंग पाई गई थी, साथ ही नीचे की स्क्रीन शॉट के रूप में दिखाए गए समान पंक्तियों की खोज करती है।

नमूना खोज परिणाम

यह सबसे प्रभावी समाधान नहीं हो सकता है, लेकिन आप हमेशा अपनी आवश्यकता के अनुसार इसे संशोधित और उपयोग कर सकते हैं।

 IF OBJECT_ID('sp_KeywordSearch', 'P') IS NOT NULL DROP PROC sp_KeywordSearch GO CREATE PROCEDURE sp_KeywordSearch @KeyWord NVARCHAR(100) AS BEGIN DECLARE @Result TABLE (TableName NVARCHAR(300), ColumnName NVARCHAR(MAX)) DECLARE @Sql NVARCHAR(MAX), @TableName NVARCHAR(300), @ColumnName NVARCHAR(300), @Count INT DECLARE @tableCursor CURSOR SET @tableCursor = CURSOR LOCAL SCROLL FOR SELECT N'SELECT @Count = COUNT(1) FROM [dbo].[' + T.TABLE_NAME + '] WITH (NOLOCK) WHERE CAST([' + C.COLUMN_NAME + '] AS NVARCHAR(MAX)) LIKE ''%' + @KeyWord + N'%''', T.TABLE_NAME, C.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLES AS T WITH (NOLOCK) INNER JOIN INFORMATION_SCHEMA.COLUMNS AS C WITH (NOLOCK) ON T.TABLE_SCHEMA = C.TABLE_SCHEMA AND T.TABLE_NAME = C.TABLE_NAME WHERE T.TABLE_TYPE = 'BASE TABLE' AND C.TABLE_SCHEMA = 'dbo' AND C.DATA_TYPE NOT IN ('image', 'timestamp') OPEN @tableCursor FETCH NEXT FROM @tableCursor INTO @Sql, @TableName, @ColumnName WHILE (@@FETCH_STATUS = 0) BEGIN SET @Count = 0 EXEC sys.sp_executesql @Sql, N'@Count INT OUTPUT', @Count OUTPUT IF @Count > 0 BEGIN INSERT INTO @Result (TableName, ColumnName) VALUES (@TableName, @ColumnName) END FETCH NEXT FROM @tableCursor INTO @Sql, @TableName, @ColumnName END CLOSE @tableCursor DEALLOCATE @tableCursor SET @tableCursor = CURSOR LOCAL SCROLL FOR SELECT SUBSTRING(TB.Sql, 1, LEN(TB.Sql) - 3) AS Sql, TB.TableName, SUBSTRING(TB.Columns, 1, LEN(TB.Columns) - 1) AS Columns FROM (SELECT R.TableName, (SELECT R2.ColumnName + ', ' FROM @Result AS R2 WHERE R.TableName = R2.TableName FOR XML PATH('')) AS Columns, 'SELECT * FROM ' + R.TableName + ' WITH (NOLOCK) WHERE ' + (SELECT 'CAST(' + R2.ColumnName + ' AS NVARCHAR(MAX)) LIKE ''%' + @KeyWord + '%'' OR ' FROM @Result AS R2 WHERE R.TableName = R2.TableName FOR XML PATH('')) AS Sql FROM @Result AS R GROUP BY R.TableName) TB ORDER BY TB.Sql OPEN @tableCursor FETCH NEXT FROM @tableCursor INTO @Sql, @TableName, @ColumnName WHILE (@@FETCH_STATUS = 0) BEGIN PRINT @Sql SELECT @TableName AS [Table], @ColumnName AS Columns EXEC(@Sql) FETCH NEXT FROM @tableCursor INTO @Sql, @TableName, @ColumnName END CLOSE @tableCursor DEALLOCATE @tableCursor END