| +7 (495) 229-0436 | shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 |
![]() |
|
|
Поиск в текстовых полях всей базы в Microsoft SQL Server03.02.2010 11:15
Недавно в организации, в которой я имею удовольствие работать, прошло мероприятие с нерусским названием - ребрендинг. Попросту - смена названия. Для того, чтобы убедиться, что в момент смены наименования клиенты получат на руки правильные документы, встал вопрос - а где же в нашей базе данных хранится наименование организации вообще? База данных существует уже больше 10 лет и гарантировать, что это название записано только в "правильных" справочниках не мог никто. Посему был написан небольшой скрипт, который искал вхождение наименования во все текстовые поля всех таблиц. 01.set concat_null_yields_null on02.declare03. @collist varchar(max),04. @srch_sql varchar(max),05. @schemaName varchar(128),06. @tableName varchar(128)07. 08.declare curs cursor local static forward_only for09. select distinct c.TABLE_SCHEMA, c.TABLE_NAME10. from INFORMATION_SCHEMA.[COLUMNS] c11. where c.DATA_TYPE in('char', 'varchar', 'nvarchar', 'text')12. and c.CHARACTER_MAXIMUM_LENGTH >=413. and objectproperty(object_id(c.TABLE_SCHEMA + '.'+ c.TABLE_NAME), 'IsUserTable ') = 114. order by 1, 215.open curs16.while 1=117.begin18. 19. fetch next fr om curs into @schemaName, @tableName20. if @@FETCH_STATUS <> 0 break21. 22.-- Данную строку можно раскомментарить, если хочется видеть, в какой таблице идет поиск в данный момент 23.-- raiserror(';%s.%s', 10, 1, @schemaName, @tableName) with nowait24. 25. select26. @collist = null27. 28. select29. @collist = isnull(@collist + '30. or ', '') +'upper(convert(varchar(8000), ' + c.COLUMN_NAME + ')) like ''%ЛЮТИК%''' -- Тут указываем, что и как ищем 31. from INFORMATION_SCHEMA.[COLUMNS] c32. where c.TABLE_SCHEMA = @schemaName33. and c.TABLE_NAME = @tableName34. and c.DATA_TYPE in('char', 'varchar', 'nvarchar', 'text')35. and c.CHARACTER_MAXIMUM_LENGTH >=636. set @srch_sql = 'if exists(select * from '+@schemaName+'.'+@tableName+' with(nolock) where '+@collist+')37. raiserror('''+@schemaName+'.'+@tableName+' - found!'', 10, 1) with nowait'38. 39. exec(@srch_sql)40.endС поиском текста в хранимых процедурах - еще проще: 1.select object_schema_name(sm.object_id)+'.'+object_name(sm.object_id), objectpropertyex(sm.[object_id], 'BaseType') 2.from sys.sql_modules sm3.where upper(sm.definition) like '%ЛЮТИК%'Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| О нас |
|
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |