Invoke-SqlNotebook

Executa um arquivo do SqL Notebook (.ipynb) e gera o notebook materializado.

Sintaxe

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]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-SqlNotebook
      [-ConnectionString <Object>]
      [-InputFile <Object>]
      [-InputObject <Object>]
      [-OutputFile <Object>]
      [-Force]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-SqlNotebook
      -InputFile <Object>
      [-OutputFile <Object>]
      [-Force]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]
Invoke-SqlNotebook
      -InputObject <Object>
      [-OutputFile <Object>]
      [-Force]
      [-ProgressAction <ActionPreference>]
      [<CommonParameters>]

Description

O cmdlet Invoke-SqlNotebook executa um arquivo sql notebook (.ipynb) e gera o notebook materializado.

O Notebook será executado no ServerInstance e no Banco de Dados fornecidos.

Quando o cmdlet for executado, o arquivo do Notebook resultante estará no local definido pelo usuário ou no mesmo diretório do arquivo de notebook de entrada.

O arquivo de saída do cmdlet pode ser omitido: se esse for o caso, ele será criado com o nome do arquivo de entrada e o _out acrescentado ao arquivo.

Exemplos

Exemplo 1: Executar um Notebook no servidor local (instância padrão)

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

Esse comando executa o notebook na instância padrão do SQL Server em execução no computador do qual o cmdlet é executado. Por padrão, como nenhum -OutputFile foi passado, o notebook materializado é salvo em disco com o mesmo nome que o InputFile com um _out como um sufixo para o nome do arquivo (notebook.ipynb -> notebook_out.ipynb)

Exemplo 2: Executar Notebook no servidor local (instância desfator) e salva o Notebook materializado em um arquivo especificado

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

Esse comando executa o notebook na instância padrão do SQL Server em execução no computador do qual o cmdlet é executado. O notebook executado é salvo no arquivo especificado com o parâmetro -OutputFile.

Exemplo 3: Executar Notebook usando -ConnectionString parâmetro

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

Isso é o mesmo que o Exemplo 1, apenas que a conexão com o servidor é especificada por meio do parâmetro -ConnectionString.

Exemplo 4: Executar notebook em todos os servidores registrados

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";
            }
        }

Use servidores registrados ou servidor de gerenciamento central para executar Invoke-SqlNotebook em vários servidores. Neste exemplo, a propriedade NetName da instância do SQL Server será incluída no nome do arquivo de saída; o bloco de anotações materializado será carimbado com o ano-mês-dia-hora-minuto.

Exemplo 5: Executar Notebook, Abrir Resultados no Azure Data Studio

Instale o de extensão do PowerShell do marketplace do Azure Data Studio. Use o Console Integrado do PowerShell no Azure Data Studio para executar Invoke-SqlNotebook e usar Open-EditorFile para abrir os resultados do SQL Notebook diretamente no Azure Data Studio.

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

Observação: o comando Open-EditorFile só está disponível no Console Integrado do PowerShell.

Exemplo 6: Executar Notebook, Conectar-se aos Bancos de Dados SQL do Azure (ou Instância Gerenciada) usando uma Entidade de Serviço

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

Parâmetros

-AccessToken

O token de acesso usado para autenticar no SQL Server, como uma alternativa ao usuário/senha ou à Autenticação do Windows.

Isso pode ser usado, por exemplo, para se conectar a SQL Azure DB e SQL Azure Managed Instance usando um Service Principal ou um Managed Identity (consulte referências na parte inferior desta página)

Em cenários comuns, esse parâmetro é obtido com algo como (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token (requer o módulo Az.Account)

Não especifique username, de senha ou de credencial de ao usar esse parâmetro.

Tipo:PSObject
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ConnectionString

Especifica uma cadeia de conexão para se conectar ao servidor.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Credential

O objeto PSCredential cujos campos Nome de usuário e senha serão usados para se conectar à instância do SQL.

Tipo:PSCredential
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Database

Esse cmdlet se conecta a esse banco de dados na instância especificada no parâmetro ServerInstance.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Encrypt

O tipo de criptografia a ser usado ao se conectar ao SQL Server.

Esse valor é mapeado para a propriedade EncryptSqlConnectionEncryptOption no objeto SqlConnection do driver Microsoft.Data.SqlClient.

Na v22 do módulo, o padrão é Optional (para compatibilidade com v21). Na v23+ do módulo, o valor padrão será 'Obrigatório', o que pode criar uma alteração significativa para scripts existentes.

Esse parâmetro é novo na v22 do módulo.

Tipo:String
Valores aceitos:Mandatory, Optional, Strict
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Force

Por padrão, quando o cmdlet grava o notebook materializado em um arquivo, uma verificação é executada para impedir que o usuário substitua acidentalmente um arquivo existente. Use -Force para ignorar essa verificação e permitir que o cmdlet substitua o arquivo existente.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-HostNameInCertificate

O nome do host a ser usado na validação do certificado TLS/SSL do SQL Server.

Esse parâmetro é novo na v22 do módulo.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputFile

Especifica um Arquivo de Notebook (.ipynb) que será executado por meio do cmdlet.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputObject

Especifica o Bloco de Anotações como uma cadeia de caracteres Json que será usada como o bloco de anotações de entrada.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-OutputFile

Especifica o arquivo de notebook de saída desejado para o qual o Notebook executado será salvo.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Password

Especifica a senha da ID de logon da Autenticação do SQL Server especificada no parâmetro Username.

As senhas diferenciam maiúsculas de minúsculas. Quando possível, use a Autenticação do Windows ou considere usar o parâmetro -Credential.

Se você especificar o parâmetro Senha seguido de sua senha, a senha ficará visível para qualquer pessoa que possa ver o monitor.

Se você codificar senha seguida de sua senha em um script de .ps1, qualquer pessoa que ler o arquivo de script verá sua senha.

Atribua as permissões NTFS apropriadas ao arquivo para impedir que outros usuários possam ler o arquivo.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ProgressAction

Determina como o PowerShell responde às atualizações de progresso geradas por um script, cmdlet ou provedor, como as barras de progresso geradas pelo cmdlet Write-Progress. O cmdlet Write-Progress cria barras de progresso que mostram o status de um comando.

Tipo:ActionPreference
Aliases:proga
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ServerInstance

Especifica uma cadeia de caracteres ou um objeto SMO (SQL Server Management Objects) que especifica o nome de uma instância do Mecanismo de Banco de Dados.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-TrustServerCertificate

Indica se o canal será criptografado ao ignorar a cadeia de certificados para validar a confiança.

Na v22 do módulo, o padrão é $true (para compatibilidade com v21). Na v23+ do módulo, o valor padrão será "$false", o que pode criar uma alteração significativa para scripts existentes.

Esse parâmetro é novo na v22 do módulo.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Username

Especifica a ID de logon para fazer uma conexão de Autenticação do SQL Server com uma instância do Mecanismo de Banco de Dados.

A senha deve ser especificada por meio do parâmetro Password.

Se o nome de usuário e a senha não forem especificados, esse cmdlet tentará uma conexão de Autenticação do Windows usando a conta do Windows que executa a sessão do Windows PowerShell. Quando possível, use a Autenticação do Windows.

Tipo:Object
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

System.Object

System.Management.Automation.PSCredential

Saídas

System.Object

Observações

Uma boa maneira de visualizar um Notebook materializado é usar o Azure Data Studio.