SQL Server 的字符串查找存储过程 p_search
,还挺适合做数据库内容排查的,尤其是你想知道某个值到底藏在哪张表哪个字段的时候,用它真是省不少事。你只要传个参数进去,比如 @str = 'admin'
,它就能在所有用户表的nvarchar
、varchar
等字段里挨个找,把结果——表名、字段名一并甩给你,干脆又直接。
逻辑上,它会用系统表sys.tables
、sys.columns
联合INFORMATION_SCHEMA.COLUMNS
来找字段名,再拼一堆SELECT
做动态 SQL 执行。嗯,执行效率不能和直接查某张表比,但胜在全库遍历,偶尔排查问题还挺有用。
实测下来,像在日志类或用户数据表中搜关键词“测试”之类的,都能迅速锁定结果——只要你数据库别太大。它默认只查char
和text
相关字段,想扩展类型的可以自己改下字段类型判断部分。
代码也不复杂,粘贴到 SSMS 里直接执行就能建好。如果你也经常碰到“这条数据到底在哪”的疑问,可以把这个过程放进常用工具库里备用。
相关内容还可以看看:SQL Server 利用内容搜索存储过程 这个讲得也挺细;另外像死锁查询、动态建表这些也都挺实用。
如果你数据库字段多又杂,推荐你在加字段备注时也统一点,后续用这种工具查值定位更方便。