SQL Server:需要查找特定字符串值的来源

时间:2009-10-23 18:08:35

标签: sql sql-server sql-server-2005 tsql

有没有办法在SQL SERVER 2005数据库中搜索特定的字符串值?我有这个想要修改的图像路径值,我认为它存储在数据库中。

另外 - 有没有办法可以搜索数据库中任何表的列名?同样,在数据库中搜索表名?

4 个答案:

答案 0 :(得分:2)

SELECT B.*
FROM information_schema.COLUMNS B
WHERE table_name 
      IN (SELECT A.TABLE_NAME FROM information_schema.Tables A WHERE TABLE_TYPE='BASE TABLE')
      AND B.COLUMN_NAME LIKE '%yoursearchstring%'

答案 1 :(得分:1)

使用此命令获取数据库中所有表的列表。

SELECT *
FROM information_schema.Tables

用于获取表格中所有列的列表

SELECT column_name 'Column Name'
FROM information_schema.columns
WHERE table_name = MyTableName

您可以一起使用这些搜索每个表格和列来搜索您的字符串。

答案 2 :(得分:0)

可能存在一些实用程序,用于深入查看给定服务器/数据库的目录/模式,并使用此信息在所有类似文本的列中搜索给定模式的给定匹配(或部分匹配)。您甚至可以编写这样的实用程序并引入您自己的启发式算法(例如,不要搜索超过10,000行的表,因为您希望该信息是“配置类型”表等。)

更简单的方法可能是使用SQL-Profiler记录发送到服务器的每个查询(可能按IP地址,会话ID等过滤)。然后运行底层应用程序以便生成特定的字符串,您将有一个[希望]简短的查询列表,其中一个查询目标特定的表/列,因此查询路径/字符串或部分。< / p>

答案 3 :(得分:0)

有时人们会使用动态sql来搜索数据库中的每一列。它不会表现那么好,但对于像这样的一次性搜索可能非常方便。快速谷歌搜索出现了这个例子 - http://codesnippets.joyent.com/posts/show/2157 这是一个相当糟糕的例子,因为它查询每个表N次,其中N是列数(它应该只执行一次表扫描而不是N),但它可能会完成工作。您可能还希望不限制前100个字符,例如该示例。