Invoke-SqlNotebook

SQL Notebook ファイル (.ipynb) を実行し、具体化されたノートブックを出力します。

構文

Invoke-SqlNotebook
      [-ServerInstance <Object>]
      [-Database <Object>]
      [-Username <Object>]
      [-Password <Object>]
      [-Credential <PSCredential>]
      [-InputFile <Object>]
      [-InputObject <Object>]
      [-OutputFile <Object>]
      [-AccessToken <PSObject>]
      [-TrustServerCertificate]
      [-Encrypt <String>]
      [-HostNameInCertificate <String>]
      [-Force]
      [<CommonParameters>]
Invoke-SqlNotebook
      [-ConnectionString <Object>]
      [-InputFile <Object>]
      [-InputObject <Object>]
      [-OutputFile <Object>]
      [-Force]
      [<CommonParameters>]
Invoke-SqlNotebook
      -InputFile <Object>
      [-OutputFile <Object>]
      [-Force]
      [<CommonParameters>]
Invoke-SqlNotebook
      -InputObject <Object>
      [-OutputFile <Object>]
      [-Force]
      [<CommonParameters>]

説明

Invoke-SqlNotebook コマンドレットは、SQL Notebook ファイル (.ipynb) を実行し、具体化されたノートブックを出力します。

ノートブックは、指定された ServerInstance とデータベースで実行されます。

コマンドレットを実行すると、結果の Notebook ファイルは、ユーザーが定義した場所、または入力ノートブック ファイルの同じディレクトリに配置されます。

コマンドレット outfile は省略できます。その場合は、入力ファイル名と ファイルに追加された_out を使用して作成されます。

例 1: ローカル サーバー (既定のインスタンス) に対してノートブックを実行する

PS C:\> Invoke-SqlNotebook -ServerInstance localhost -Database TestNotebook -InputFile C:\notebook.ipynb

   Directory: C:\

Mode           LastWriteTime         Length Name
----           -------------         ------ ----
-a----         8/1/2019  1:00 PM     4656   notebook_out.ipynb

このコマンドは、コマンドレットが実行されるコンピューターで実行されているSQL Serverの既定のインスタンスに対してノートブックを実行します。 既定では、 -OutputFile が渡されなかったため、具体化されたノートブックは InputFile と同じ名前のディスクに保存され、ファイル名のサフィックスとして _out が付けられます (notebook.ipynb -> notebook_out.ipynb)

例 2: ローカル サーバー (defaut インスタンス) でノートブックを実行し、具体化されたノートブックを指定したファイルに保存する

PS C:\> Invoke-SqlNotebook -ServerInstance localhost -Database TestNotebook -InputFile C:\notebook.ipynb -OutputFile C:\new_notebook.ipynb

   Directory: C:\

Mode           LastWriteTime         Length Name
----           -------------         ------ ----
-a----         8/1/2019  1:00 PM     44656  new_notebook.ipynb

このコマンドは、コマンドレットが実行されるコンピューターで実行されているSQL Serverの既定のインスタンスに対してノートブックを実行します。 実行されたノートブックは、 -OutputFile パラメーターで指定されたファイルに保存されます。

例 3: -ConnectionString パラメーターを使用してノートブックを実行する

PS C:\> Invoke-Sqlnotebook -ConnectionString 'Server=Localhost;Database=TestNotebook;Trusted_Connection=True;' -InputFile C:\notebook.ipynb

   Directory: C:\

Mode           LastWriteTime         Length Name
----           -------------         ------ ----
-a----         8/1/2019  1:00 PM     44656  notebook_out.ipynb

これは例 1 と同じですが、サーバーへの接続が -ConnectionString パラメーターを使用して指定されているだけです。

例 4: すべての登録済みサーバーに対してノートブックを実行する

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' |
WHERE { $_.Mode -ne 'd'} |            
foreach {
    $datetime = Get-Date -Format yyyyMMddhhmm;
    Get-SqlInstance -ServerInstance $_.Name |
    foreach {
            Invoke-SqlNotebook -ServerInstance $_.Name -Database master -InputFile '$home\Documents\SQL Server Management Studio\BPCheck.ipynb' `
            -OutputFile "BPCheck_output_$($_.NetName)_$($datetime).ipynb";
            }
        }

登録済みサーバーまたは中央管理サーバーを使用して、複数のサーバーに対して Invoke-SqlNotebook を実行します。 この例では、NetNameSQL Server インスタンスの プロパティが出力ファイルの名前に含まれます。具体化されたノートブックには、年-月-日-時分のタイムスタンプが設定されます。

例 5: ノートブックの実行、Azure Data Studio で結果を開く

Azure Data Studio Marketplace から PowerShell 拡張機能 をインストールします。 Azure Data Studio の PowerShell 統合コンソールを使用して を実行 Invoke-SqlNotebook し、 を使用 Open-EditorFile して SQL Notebook の結果を Azure Data Studio で直接開きます。

Invoke-SqlNotebook -ServerInstance ServerA -Database master -InputFile "$home\Documents\SQL Server Management Studio\BPCheck.ipynb" |
Open-EditorFile

注: コマンドは Open-EditorFile 、PowerShell 統合コンソールでのみ使用できます。

例 6: サービス プリンシパルを使用したノートブックの実行、Azure SQL データベースへの接続 (またはManaged Instance)

Import-Module SQLServer
Import-Module Az.Accounts -MinimumVersion 2.2.0

### Obtain the Access Token interactively.
### Note: help for Invoke-Sqlcmd has examples on other ways to acquire the token.
Connect-AzAccount
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token

# Now that we have the token, we use it to connect to the database 'mydb' on server 'myserver'
Invoke-SqlNotebook -ServerInstance myserver.database.windows.net -Database master -AccessToken $access_token`
                   -InputFile MyNotebook.ipynb

パラメーター

-AccessToken

ユーザー/パスワードまたは Windows 認証の代わりに、SQL Serverに対する認証に使用されるアクセス トークン。

これは、たとえば、 または Managed Identity または にSQL Azure DBSQL Azure Managed Instance接続して使用するために使用Service Principalできます (このページの下部にある参照を参照してください)。

一般的なシナリオでは、このパラメーターは 次のようなもの (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token で取得されます (Az.Account モジュールが必要です)

このパラメーターを使用する場合は、 UserNamePassword、または Credential を 指定しないでください。

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionString

サーバーに接続する接続文字列を指定します。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

ユーザー名フィールドとパスワード フィールドが SQL インスタンスへの接続に使用される PSCredential オブジェクト。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Database

このコマンドレットは、ServerInstance パラメーターで指定されたインスタンス内のこのデータベースに接続します。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encrypt

SQL Serverに接続するときに使用する暗号化の種類。

この値は、 Encrypt Microsoft.Data.SqlClient ドライバーの SqlConnection オブジェクトの プロパティ SqlConnectionEncryptOption にマップされます。

モジュールの v22 では、既定値は Optional (v21 との互換性のために) です。 モジュールの v23 以降では、既定値は "必須" になります。これにより、既存のスクリプトに破壊的変更が発生する可能性があります。

このパラメーターは、モジュールの v22 の新機能です。

Type:String
Accepted values:Mandatory, Optional, Strict
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

既定では、コマンドレットによって具体化されたノートブックがファイルに書き込まれると、ユーザーが誤って既存のファイルを上書きしないように、チェックが実行されます。 を使用して-Force、このチェックをバイパスし、コマンドレットが既存のファイルを上書きできるようにします。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostNameInCertificate

SQL Server TLS/SSL 証明書の検証に使われるホスト名。

このパラメーターは、モジュールの v22 の新機能です。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputFile

コマンドレットを使用して実行されるノートブック ファイル (.ipynb) を指定します。

Type:Object
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

入力ノートブックとして使用される Json 文字列として Notebook を指定します。

Type:Object
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutputFile

実行されたノートブックを保存する目的の出力ノートブック ファイルを指定します。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Password

Username パラメーターで指定されたSQL Server認証ログイン ID のパスワードを指定します。

パスワードでは大文字と小文字が区別されます。 可能であれば、Windows 認証を使用するか、代わりに -Credential パラメーターの使用を検討してください。

Password パラメーターの後にパスワードを指定すると、モニターを表示できるすべてのユーザーにパスワードが表示されます。

パスワードの後にパスワードを .ps1 スクリプトでコーディングすると、スクリプト ファイルを読んでいるすべてのユーザーにパスワードが表示されます。

他のユーザーがファイルを読み取ることをできないようにするには、適切な NTDB 権限をファイルに割り当てます。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ServerInstance

データベース エンジンのインスタンスの名前を指定する文字列またはSQL Server管理オブジェクト (SMO) オブジェクトを指定します。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TrustServerCertificate

信頼を検証するために証明書チェーンの歩き方をバイパスしながらチャネルを暗号化するかどうかを示します。

モジュールの v22 では、既定値は $true (v21 との互換性のために) です。 モジュールの v23 以降では、既定値は "$false" になります。これにより、既存のスクリプトに破壊的変更が発生する可能性があります。

このパラメーターは、モジュールの v22 の新機能です。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Username

データベース エンジンのインスタンスへの SQL Server 認証接続を確立するためのログイン ID を指定します。

パスワードは Password パラメーターを使用して指定する必要があります。

Username と Password が指定されていない場合、このコマンドレットは、Windows PowerShell セッションを実行している Windows アカウントを使用して Windows 認証接続を試行します。 可能な場合は、Windows 認証を使用します。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

System.Object

System.Management.Automation.PSCredential

出力

System.Object

メモ

具体化されたノートブックを視覚化する良い方法は、Azure Data Studio を使用することです。