如何获取列中具有特定值的表名列表?

时间:2012-07-02 08:57:54

标签: sql sql-server-2008 powershell sql-server-2008-r2

我们的应用程序中有这样的要求。开发powershell脚本以更新web.config文件和数据库表中的计算机名。

如果已安装应用程序但是用户必须更改计算机名称,则将执行此脚本。 [所以即使机器名称改变了,我们安装的应用程序如果执行脚本也不会中断。无需卸载并重新安装产品]

现在很多表都包含其中包含计算机名称的字段。对于前者像URL这样的列,BaseURL包含计算机名,然后是剩余的文本。

我必须找到具有列值computername (like column names URL and baseURL contains machine name.For example. AB2S481V0:80/Project/Default.aspx AB2S481V0 is the computername ).

的表名

通过手动查看每个表来查找列表是很麻烦的。如果我传递databasename和column substring(而不是整个列名),有没有办法找到表名列表

2 个答案:

答案 0 :(得分:0)

我经常使用此查询按列名搜索表:

USE MYDB
SELECT t.name, c.name
FROM sys.tables t
JOIN sys.columns c ON c.object_id = t.object_id
WHERE c.name LIKE '%[my_serach_pattern]%'

object_id引用sys.tables中的表id(即sys.objects表中的object_id)。

查看MSDN了解更多信息。

答案 1 :(得分:0)

Select a.name as  [Table Name],b.name as [Column Name]
from sys.tables a
Join sys.columns b on a.object_id = b.object_id
where b.name like '%ColumnName%'