Share via


Invoke-SqlNotebook

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

Syntax

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>]

Description

O cmdlet Invoke-SqlNotebook executa um arquivo do 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 de 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 do 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 de 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 o parâmetro -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

Isso é o mesmo que o Exemplo 1, somente 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 NetName propriedade da instância de SQL Server será incluída no nome do arquivo de saída; o bloco de anotações materializado será carimbado com um ano-mês-dia-hora-minuto.

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

Instale a 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 Bloco de Anotações SQL 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 Open-EditorFile comando só está disponível no Console Integrado do PowerShell.

Exemplo 6: Executar Notebook, Conectar-se a 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 para SQL Server, como uma alternativa ao usuário/senha ou à Autenticação do Windows.

Isso pode ser usado, por exemplo, para se conectar SQL Azure DB e SQL Azure Managed Instance usar 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, Password ou Credential ao usar esse parâmetro.

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

-ConnectionString

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

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

-Credential

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

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

-Database

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

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

-Encrypt

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

Esse valor é mapeado para a Encrypt propriedade SqlConnectionEncryptOption 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 interruptiva para scripts existentes.

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

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

-Force

Por padrão, quando o cmdlet grava o notebook materializado em um arquivo, um marcar é executado para impedir que o usuário substitua acidentalmente um arquivo existente. Use -Force para ignorar esse marcar e permitir que o cmdlet substitua o arquivo existente.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

-InputFile

Especifica um arquivo de notebook (.ipynb) que será executado por meio do cmdlet .

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

-InputObject

Especifica o Notebook como uma cadeia de caracteres Json que será usada como o notebook de entrada.

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

-OutputFile

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

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

-Password

Especifica a senha do SQL Server ID de logon de autenticação 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 Password seguido de sua senha, a senha ficará visível para qualquer pessoa que possa ver o monitor.

Se você codificar Senha seguido de sua senha em um script .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 sejam capazes de ler o arquivo.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 interruptiva para scripts existentes.

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

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

-Username

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

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

Se Nome de usuário e 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 Windows PowerShell. Quando possível, use a Autenticação do Windows.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.