Есть ли способ поиска столбцов с помощью SQL Server Powershell в Microsoft SQL Server?

#sql #sql-server #powershell #search #command

#sql #sql-server #powershell #Поиск #команда

Вопрос:

У меня большая база данных со многими таблицами. Теперь я хотел бы выполнить поиск по всем таблицам и перечислить те таблицы, которые содержат столбец с именем «column_name». Я наткнулся на SQL Server Powershell и задаюсь вопросом, можно ли его использовать для поиска столбцов? Если да, можете ли вы привести пример?

Комментарии:

1. Посмотрите на объекты sys.tables and sys.columns или INFORMATION_SCHEMA.COLUMNS объект. Существует множество примеров того, как узнать, какие столбцы есть в таблицах.

Ответ №1:

В дополнение к ответам с помощью запроса, ниже приведен общий пример выполнения любого SELECT запроса в PowerShell и отображения выходных данных в таблице.

 # 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
  

Ответ №2:

Просто используйте системные объекты:

 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';
  

Ответ №3:

Я бы рекомендовал INFORMATION_SCHEMA представление:

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

Эти представления фактически стандартизированы и доступны во многих базах данных.