Поделиться через


Invoke-SqlNotebook

Выполняет файл записной книжки SQL (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]
      [-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>]

Описание

Командлет Invoke-SqlNotebook выполняет файл записной книжки SQL (IPYNB) и выводит материализованную записную книжку.

Записная книжка будет выполнена на сервере ServerInstance и базе данных.

При запуске командлета результирующий файл записной книжки будет находиться в расположении, где пользователь определяет или в том же каталоге входного файла записной книжки.

Файл командлета может быть опущен: если это так, он будет создан с именем входного файла и _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 на нескольких серверах. В этом примере свойство NetName экземпляра SQL Server будет включено в имя выходного файла; материализованная записная книжка будет помечена временем с годом-днем-часом.

Пример 5. Выполнение записной книжки, открытие результатов в Azure Data Studio

Установите расширение PowerShell из Azure Data Studio Marketplace. Используйте интегрированную консоль PowerShell в Azure Data Studio, чтобы запустить Invoke-SqlNotebook и использовать Open-EditorFile, чтобы открыть результаты записной книжки SQL непосредственно в Azure Data Studio.

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

Примечание. Команда Open-EditorFile доступна только в интегрированной консоли PowerShell.

Пример 6. Выполнение записной книжки, подключение к базам данных SQL Azure (или управляемому экземпляру) с помощью субъекта-службы

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

Маркер доступа, используемый для проверки подлинности в SQL Server, в качестве альтернативы пользователю или паролю или проверке подлинности Windows.

Это можно использовать, например, для подключения к SQL Azure DB и SQL Azure Managed Instance с помощью Service Principal или Managed Identity (см. ссылки в нижней части этой страницы).

В распространенных сценариях этот параметр получается примерно с (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token (требуется модуль Az.Account).

Не указывайте userName, парольили учетные данные при использовании этого параметра.

Тип:PSObject
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ConnectionString

Указывает строку подключения для подключения к серверу.

Тип:Object
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Credential

Объект PSCredential, поля имени пользователя и пароля которого будут использоваться для подключения к экземпляру SQL.

Тип:PSCredential
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Database

Этот командлет подключается к этой базе данных в экземпляре, указанном в параметре ServerInstance.

Тип:Object
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Encrypt

Тип шифрования, используемый при подключении к SQL Server.

Это значение сопоставляется со свойством EncryptSqlConnectionEncryptOption в объекте SqlConnection драйвера Microsoft.Data.SqlClient.

В версии 22 модуля по умолчанию используется Optional (для совместимости с версией 21). В версии 23+ модуля значение по умолчанию будет "Обязательный", которое может создать критическое изменение для существующих скриптов.

Этот параметр является новым в версии 22 модуля.

Тип:String
Допустимые значения:Mandatory, Optional, Strict
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Force

По умолчанию при записи материализованной записной книжки в файл выполняется проверка, чтобы пользователь случайно перезаписал существующий файл. Используйте -Force, чтобы обойти эту проверку и разрешить командлету перезаписать существующий файл.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-HostNameInCertificate

Имя узла, используемое при проверке TLS/SSL-сертификата SQL Server.

Этот параметр является новым в версии 22 модуля.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputFile

Указывает файл записной книжки (IPYNB), который будет выполняться с помощью командлета.

Тип:Object
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputObject

Указывает записную книжку в виде строки JSON, которая будет использоваться в качестве входной записной книжки.

Тип:Object
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-OutputFile

Указывает нужный выходной файл записной книжки, для которого будет сохранена выполненная записная книжка.

Тип:Object
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Password

Указывает пароль для идентификатора входа проверки подлинности SQL Server, указанного в параметре имени пользователя.

Пароли чувствительны к регистру. По возможности используйте проверку подлинности Windows или попробуйте использовать вместо него параметр -Credential.

Если вы укажете параметр пароля, за которым следует пароль, пароль отображается любому, кто может видеть монитор.

Если вы закодируйте пароль, за которым следует пароль в скрипте .ps1, любой пользователь, прочитавший файл скрипта, увидит свой пароль.

Назначьте соответствующие разрешения NTFS файлу, чтобы другие пользователи могли читать файл.

Тип:Object
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ProgressAction

Определяет, как PowerShell реагирует на обновления хода выполнения, созданные скриптом, командлетом или поставщиком, например индикаторами хода выполнения, созданными командлетом Write-Progress. Командлет Write-Progress создает индикаторы хода выполнения, показывающие состояние команды.

Тип:ActionPreference
Aliases:proga
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ServerInstance

Указывает символьную строку или объект объектов SMO SQL Server, указывающий имя экземпляра ядра СУБД.

Тип:Object
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-TrustServerCertificate

Указывает, будет ли канал зашифрован при обходе цепочки сертификатов для проверки доверия.

В версии 22 модуля по умолчанию используется $true (для совместимости с версией 21). В версии 23+ модуля значение по умолчанию будет иметь значение "$false", которое может создать критическое изменение для существующих скриптов.

Этот параметр является новым в версии 22 модуля.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Username

Указывает идентификатор входа для подключения проверки подлинности SQL Server к экземпляру ядра СУБД.

Пароль необходимо указать с помощью параметра Password.

Если имя пользователя и пароль не указаны, этот командлет пытается подключиться к проверке подлинности Windows с помощью учетной записи Windows под управлением сеанса Windows PowerShell. По возможности используйте проверку подлинности Windows.

Тип:Object
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

System.Object

System.Management.Automation.PSCredential

Выходные данные

System.Object

Примечания

Хорошим способом визуализации материализованной записной книжки является использование Azure Data Studio.