我们的应用程序中有这样的要求。开发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(而不是整个列名),有没有办法找到表名列表
答案 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%'