有没有一种方法可以使用 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
我有一个更大的数据库,里面有很多表。现在,我想搜索所有表并列出那些包含名称为“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