有没有一种方法可以使用 Microsoft SQL Server 中的 SQL Server Powershell 搜索列?

Is there a way to seach for columns using the SQL Server Powershell in Microsoft SQL Server?

我有一个更大的数据库,里面有很多表。现在,我想搜索所有表并列出那些包含名称为“column_name”的列的表。我遇到了 SQL Server Powershell,想知道它是否可以用于搜索列?如果有可以举个例子吗?

只需使用系统对象:

SELECT s.[name] AS SchemaName,
       t.[name] AS TableName
FROM sys.schemas s
     JOIN sys.tables t ON s.schema_id = t.schema_id
     JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.[name] = N'column_name';

我会推荐 INFORMATION_SCHEMA 视图:

select table_name, column_name
from information_schema.columns
where c.column_name = ?;

这些视图实际上是标准化的,并且在许多数据库中都可用。

添加查询的答案,下面是在 PowerShell 中执行任何 SELECT 查询并在网格中显示输出的一般示例。

# execute select query and display output in grid
$connectionString = "Data Source=.;Initial Catalog=AdventureWorks2012;Integrated Security=SSPI"

$query = @"
SELECT s.name AS SchemaName,
       t.name AS TableName
FROM sys.schemas s
     JOIN sys.tables t ON s.schema_id = t.schema_id
     JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.name = N'column_name';
"@

$command = New-object System.Data.SqlClient.SqlCommand($query, $connectionString)
$dataTable = New-Object System.Data.DataTable
$dataAdapter = New-Object System.Data.SqlClient.SqlDataAdapter($command)
$dataAdapter.Fill($dataTable)
$dataTable | Out-GridView