Есть ли способ найти строку во всех таблицах базы данных в SQL Server Management Studio 2008?
Я хочу найти строку сказать john
. Результат должен показать таблицы и их соответствующие строки, которые содержат john
.
sql
sql-server
search
Рамиз Раджа
источник
источник
Ответы:
Если вы похожи на меня и имеете определенные ограничения в производственной среде, вы можете использовать переменную таблицы вместо временной таблицы и специальный запрос, а не процедуру создания.
Конечно, в зависимости от вашего экземпляра сервера sql, он должен поддерживать табличные переменные.
Я также добавил оператор USE, чтобы сузить область поиска.
источник
Немного поздно, но, надеюсь, полезно.
Почему бы не попробовать некоторые сторонние инструменты, которые могут быть интегрированы в SSMS.
Я успешно работал с ApexSQL Search (на 100% бесплатно) как для поиска по схеме, так и для поиска данных, и есть также пакет инструментов SSMS с этой функцией (не бесплатный для SQL 2012, но вполне доступный).
Хранимая процедура выше действительно хороша; просто, на мой взгляд, это намного удобнее. Кроме того, это потребует некоторых небольших изменений, если вы хотите искать столбцы даты и времени или столбцы GUID и тому подобное…
источник
Чтобы обновить ответ TechDo для SQL Server 2012. Вам необходимо изменить:
'FROM ' + @TableName + ' (NOLOCK) '
наFROM ' + @TableName + 'WITH (NOLOCK) ' +
В противном случае вы получите следующую ошибку:
Deprecated feature 'Table hint without WITH' is not supported in this version of SQL Server.
Ниже приведена полная обновленная хранимая процедура:
источник
Немного поздно, но вы можете легко найти строку с этим запросом
источник
Я написал SP для этого, который возвращает результаты поиска в форме имени таблицы, имен столбцов, в которых была найдена строка ключевого слова поиска, а также ищет соответствующие строки, как показано на снимке экрана ниже.
Возможно, это не самое эффективное решение, но вы всегда можете изменить и использовать его в соответствии со своими потребностями.
источник
Нет необходимости во вложенном цикле (внешнем цикле по таблицам и внутреннем цикле по всем столбцам таблицы). Можно извлечь все (или произвольно выбранные / отфильтрованные) комбинации столбцов
INFORMATION_SCHEMA.COLUMNS
и таблиц из одного цикла и просто пройти (найти) все из них:источник
curTabCol
выбирает все интересующие комбинации таблиц. Затем ищет во всех этих столбцах строку, заданную в переменной @search. Если такая строка (точная) в этом запросе SQL (в противном случае используется LIKE "% ...%") существует, комбинация имени таблицы и столбца выводится на печать.Это было очень полезно. Я хотел импортировать эту функцию в базу данных Postgre SQL. Думал, что поделюсь этим со всеми, кто заинтересован. У них будет несколько часов. Примечание. Эта функция создает список операторов SQL, которые можно скопировать и выполнить в базе данных Postgre. Может быть, кто-то умнее, чем я, может заставить Postgre создавать и выполнять операторы в одной функции.
источник
Ответ, который упоминался в этом посте уже несколько раз, я принял немного, потому что мне нужно было искать только в одной таблице:
(а также сделал ввод для имени таблицы немного проще)
источник