अगर किसी को सिबबेस के लिए ऐसा कुछ चाहिए तो निम्नलिखित मदद कर सकता है।
मैंने निम्न स्क्रिप्ट बनाई है, जहां कोड सभी तालिका नामों को मुद्रित करता है, कॉलम नाम खोज स्ट्रिंग युक्त होता है।
नहीं प्रदर्शन अनुकूलित किया है, डीबी कॉलम के माध्यम से लूप करने के लिए एक कर्सर का उपयोग, तो यह एक बड़ा डीबी पर इस चलाने के लिए कुछ समय लग सकता (आकार के आधार पर टेबल/कॉलम आदि की संख्या)
हालांकि, मुझे लगता है कि यह डीबी में एक स्ट्रिंग की खोज करने के लिए एक अच्छी उपयोगिता है।
-----------------------------------------------------------------------------------------------------
-- SYBASE - SCRIPT TO FIND STRING IN ANY COLUMN IN TABLE AND PRINT TableName/ColumnName TO RESULTS --
-----------------------------------------------------------------------------------------------------
-- tested on Sybase ASE 15.7
set nocount off
-- CREATE OBJECTS REQUIRED FOR SCRIPT
create table #SearchString (SearchString varchar(100))
go
-- SET SEARCH STRING
declare @search_string varchar(100)
set @search_string = 'SEARCH_STRING'
-- WRITE SEARCH STRING TO TEMP TABLE TO STORE IT AWAY AND BE ABLE TO READ IT IN NEXT BATCH
insert into #SearchString (SearchString)
values (@search_string)
-- GET ALL RELEVANT TABLES AND COLUMNS
insert #TabCol
select object_name(o.id) as TableName, c.name as ColumnName
from sysobjects o, syscolumns c
where o.type = 'U' -- ONLY USER TABLES
and c.usertype in (1,2,18,19,24,25,42) -- ONLY LOOK FOR CHAR, VARCHAR, ETC.
and c.id = o.id
and c.name is not null
and c.length >= datalength(@search_string)
go
-- GET TOTAL NUMBER OF RELEVANT COLUMNS
select count(*) as RelevantColumns from #TabCol
go
-- CREATE CURSOR TO LOOP THROUGH TABLES AND COLUMNS TO FIND COLUMNS CONTAINING THE SEARCH STRING
declare cur cursor for
select TableName, ColumnName from #TabCol order by TableName, ColumnName
for read only
go
-- VARIABLE DEFINITION
declare
@table_name SYSNAME,
@table_id int,
@column_name SYSNAME,
@sql_string varchar(2000),
@search_string varchar(100)
-- GET SEARCH STRING FROM TABLE
select @search_string = SearchString from #SearchString
-- CURSOR INIT
open cur
fetch cur into @table_name, @column_name
-- LOOP THROUGH TABLES AND COLUMNS SEARCHING FOR SEARCH STRING AND PRINT IF FOUND
while (@@sqlstatus != 2)
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 cur into @table_name, @column_name
end
go
-- CLEAN-UP
close cur
deallocate cur
drop table #SearchString
drop table #TabCol
go
चीयर्स
+1 अच्छा छोटा जवाब, इसे देखने के लिए धन्यवाद। मैं इंतजार करूँगा और देख सकता हूं कि एक –
+1 चुनने से पहले या तो अधिक से अधिक हो जाता है या नहीं, यदि आप इसे उत्पादन डेटाबेस – Andomar
पर चलाने की योजना बनाते हैं तो शायद (NOLOCK) या "सेट लेनदेन अलगाव स्तर को असामान्य पढ़ें" यदि आप NOLOCK को पूरा करना चाहते हैं? मुझे लगता है कि sys.objects अक्सर अद्यतन नहीं किया जाता है। – edosoft