![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
Поиск в текстовых полях всей базы в Microsoft SQL Server03.02.2010 11:15
Недавно в организации, в которой я имею удовольствие работать, прошло мероприятие с нерусским названием - ребрендинг. Попросту - смена названия. Для того, чтобы убедиться, что в момент смены наименования клиенты получат на руки правильные документы, встал вопрос - а где же в нашей базе данных хранится наименование организации вообще? База данных существует уже больше 10 лет и гарантировать, что это название записано только в "правильных" справочниках не мог никто. Посему был написан небольшой скрипт, который искал вхождение наименования во все текстовые поля всех таблиц. 01. set concat_null_yields_null on 02. declare 03. @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 for 09. select distinct c.TABLE_SCHEMA, c.TABLE_NAME 10. from INFORMATION_SCHEMA.[COLUMNS] c 11. where c.DATA_TYPE in ( 'char' , 'varchar' , 'nvarchar' , 'text' ) 12. and c.CHARACTER_MAXIMUM_LENGTH >=4 13. and objectproperty(object_id(c.TABLE_SCHEMA + '.' + c.TABLE_NAME), 'IsUserTable ' ) = 1 14. order by 1, 2 15. open curs 16. while 1=1 17. begin 18. 19. fetch next fr om curs into @schemaName, @tableName 20. if @@FETCH_STATUS <> 0 break 21. 22. -- Данную строку можно раскомментарить, если хочется видеть, в какой таблице идет поиск в данный момент 23. -- raiserror(';%s.%s', 10, 1, @schemaName, @tableName) with nowait 24. 25. select 26. @collist = null 27. 28. select 29. @collist = isnull (@collist + ' 30. or ' , '' ) + 'upper(convert(varchar(8000), ' + c.COLUMN_NAME + ')) like ' '%ЛЮТИК%' '' -- Тут указываем, что и как ищем 31. from INFORMATION_SCHEMA.[COLUMNS] c 32. where c.TABLE_SCHEMA = @schemaName 33. and c.TABLE_NAME = @tableName 34. and c.DATA_TYPE in ( 'char' , 'varchar' , 'nvarchar' , 'text' ) 35. and c.CHARACTER_MAXIMUM_LENGTH >=6 36. 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 sm 3. where upper (sm.definition) like '%ЛЮТИК%' Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |