SQL Server PowerShell パスの操作

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

データベース エンジン プロバイダーのパスでノードに移動した後、ノードに関連付けられている データベース エンジン 管理オブジェクトのメソッドとプロパティを使用して、作業を実行したり、情報を取得したりできます。

Note

SQL Server PowerShell モジュールには SqlServerSQLPS の 2 つがあります。

SqlServer モジュールは、使用する現在の PowerShell モジュールです。

SQLPS モジュールは、(後方互換性のため) SQL Server のインストールに含まれていますが、今後更新されることはありません。

SqlServer モジュールには、SQLPS のコマンドレットの更新バージョンに加え、最新の SQL 機能をサポートする新しいコマンドレットが含まれています。

PowerShell ギャラリーから SqlServer モジュールをインストールします。

詳細については、「SQL Server PowerShell」を参照してください。

データベース エンジン プロバイダーのパスでノードに移動した後、次の 2 種類の操作を実行できます。

  • Rename-Itemなど、ノードを操作する Windows PowerShell コマンドレットを実行できます。

  • 関連付けられた SQL Server 管理オブジェクト モデル (SMO など) のメソッドを呼び出すことができます。 たとえば、パスで Database ノードに移動すると、 クラスのメソッドとプロパティを使用できます。

SQL Server プロバイダーは、 データベース エンジンのインスタンスのオブジェクトを管理するために使用されます。 データベース内のデータの処理には使用されません。 テーブルまたはビューに移動した場合に、プロバイダーを使用してデータの選択、挿入、更新、または削除を行うことはできません。 テーブルおよびビューのデータを Windows PowerShell 環境からクエリまたは変更するには、 Invoke-Sqlcmd コマンドレットを使用します。 詳細については、「 Invoke-Sqlcmd コマンドレット」を参照してください。

メソッドとプロパティの一覧表示

メソッドとプロパティの一覧表示

特定のオブジェクトまたはオブジェクト クラスで使用できるメソッドとプロパティを表示するには、 Get-Member コマンドレットを使用します。

例 :メソッドとプロパティの一覧表示

次の例では、Windows PowerShell 変数に SMO Database クラスを設定し、メソッドとプロパティを一覧表示します。

$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database  
$MyDBVar | Get-Member -Type Methods  
$MyDBVar | Get-Member -Type Properties  

また、 Get-Member を使用して、Windows PowerShell パスの終了ノードに関連付けられているメソッドとプロパティを一覧表示することもできます。

次の例では、SQLSERVER: パスで Databases ノードに移動し、コレクションのプロパティを一覧表示します。

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases  
Get-Item . | Get-Member -Type Properties  

次の例では、SQLSERVER: パスで AdventureWorks2022 ノードに移動し、オブジェクトのプロパティを一覧表示します。

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022  
Get-Item . | Get-Member -Type Properties  

メソッドとプロパティの使用

SMO メソッドとプロパティの使用

データベース エンジン プロバイダー パスからオブジェクトの操作を実行するには、SMO メソッドとプロパティを使用します。

例 :メソッドとプロパティの使用

次の例では、SMO の Schema プロパティを使用して、AdventureWorks2022 の Sales スキーマからテーブルの一覧を取得します。

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022\Tables  
Get-ChildItem | where {$_.Schema -eq "Sales"}  

次の例では、SMO の Script メソッドを使用して、AdventureWorks2022 でビューを再作成するために必要な CREATE VIEW ステートメントを含むスクリプトを生成します。

Remove-Item C:\PowerShell\CreateViews.sql  
Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases\AdventureWorks2022\Views  
foreach ($Item in Get-ChildItem) { $Item.Script() | Out-File -Filepath C:\PowerShell\CreateViews.sql -append }  

次の例では、SMO の Create メソッドを使用してデータベースを作成し、 State プロパティを使用してデータベースが存在するかどうかを確認します。

Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases  
$MyDBVar = New-Object Microsoft.SqlServer.Management.SMO.Database  
$MyDBVar.Parent = (Get-Item ..)  
$MyDBVar.Name = "NewDB"  
$MyDBVar.Create()  
$MyDBVar.State  

参照