0

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

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

现在很多表都包含其中包含计算机名的字段。例如。URL、BaseURL 等列包含计算机名,然后是剩余的文本。

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

通过手动查看每个表来查找列表是繁重的,因为那里有很多表。如果我传递数据库名和列子字符串(不是整个列名),有什么方法可以找到表名列表

4

2 回答 2

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%'
于 2012-07-02T10:00:33.103 回答
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以获取更多信息。

于 2012-07-02T09:07:54.270 回答