Управление SQL Server на Linux с помощью PowerShell Core
Область применения: SQL Server — Linux
В этой статье рассматривается модуль SQL Server PowerShell и приводится несколько примеров того, как можно использовать его для работы с PowerShell Core в macOS и Linux. PowerShell Core — это проект с открытым кодом на сайте GitHub.
Параметры кроссплатформенного редактора
Все приведенные ниже действия для Работы PowerShell Core в обычном терминале или их можно запустить из терминала в Visual Studio Code или Azure Data Studio. Как VS Code, так и Azure Data Studio доступны в macOS и Linux. Дополнительные сведения о Azure Data Studio см . в кратком руководстве. Использование Azure Data Studio для подключения и запроса SQL Server. Вы также можете рассмотреть возможность использования поддержки редактора PowerShell для Azure Data Studio.
Установите PowerShell Core
Дополнительные сведения об установке PowerShell Core на различных поддерживаемых и экспериментальных платформах см. в следующих статьях:
- Установка PowerShell Core в Windows
- Установка PowerShell Core в Linux
- Установка PowerShell Core в macOS
- Установка PowerShell Core в ARM
Установка модуля SqlServer
Модуль SqlServer
доступен в коллекции PowerShell. При работе с SQL Server следует всегда использовать последнюю версию модуля SqlServer PowerShell.
Чтобы установить модуль SqlServer, откройте сеанс PowerShell Core и выполните следующий код:
Install-Module -Name SqlServer
Дополнительные сведения о том, как установить модуль SqlServer из коллекция PowerShell, см. в разделе "Установка модуля SQL Server PowerShell".
Использование модуля SqlServer
Для начала запустим PowerShell Core. Если вы используете macOS или Linux, откройте сеанс терминала на компьютере и введите pwsh
новый сеанс PowerShell Core. В Windows нажмите клавиши Win+R и введите pwsh
, чтобы запустить новый сеанс PowerShell Core.
pwsh
В SQL Server представлен модуль PowerShell под названием SqlServer. Вы можете использовать модуль SqlServer для импорта компонентов SQL Server (поставщик и командлеты SQL Server) в скрипт или среду PowerShell.
Скопируйте следующую команду и вставьте ее в командную строку PowerShell, чтобы импортировать модуль SqlServer в текущий сеанс PowerShell:
Import-Module SqlServer
Введите следующую команду в командной строке PowerShell, чтобы убедиться в том, что модуль SqlServer был импортирован правильно:
Get-Module -Name SqlServer
В PowerShell должны отображаться данные примерно следующего вида:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 21.1.18102 SqlServer {Add-SqlAvailabilityDatabase, Add-SqlAvailabilityGroupList...
Подключение к SQL Server и получение сведений о сервере
В приведенных ниже инструкциях мы используем PowerShell Core для подключения к экземпляру SQL Server на Linux и просмотра некоторых свойств сервера.
Скопируйте следующие команды и вставьте их в командную строку PowerShell. При запуске этих команд в PowerShell будут выполнены следующие действия:
- отображение диалогового окна с запросом на ввод имени узла и IP-адреса экземпляра;
- открытие диалогового окна Запрос учетных данных PowerShell, в котором необходимо ввести соответствующие сведения; для подключения к экземпляру SQL Server на Linux вы можете использовать свои имя пользователя SQL и пароль SQL;
- использование командлета Get-SqlInstance для подключения к серверу и просмотра некоторых свойств.
При необходимости можно заменить переменную $serverInstance
IP-адресом или именем узла вашего экземпляра SQL Server.
# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential
# Connect to the Server and return a few properties
Get-SqlInstance -ServerInstance $serverInstance -Credential $credential
# done
В PowerShell должны отображаться данные примерно следующего вида:
Instance Name Version ProductLevel UpdateLevel HostPlatform HostDistribution
------------- ------- ------------ ----------- ------------ ----------------
your_server_instance 14.0.3048 RTM CU13 Linux Ubuntu
Примечание.
Если эти значения не отображаются, скорее всего, подключение к целевому экземпляру SQL Server установить не удалось. Убедитесь в том, что эти же данные можно использовать для подключения из SQL Server Management Studio. Затем ознакомьтесь с рекомендациями по устранению неполадок с подключением.
Использование поставщика SQL Server PowerShell
В качестве альтернативы для подключения к экземпляру SQL Server можно использовать поставщик SQL Server PowerShell. Он позволяет работать с экземпляром SQL Server из командной строки так же, как с древовидной структурой в обозревателе объектов. По умолчанию этот поставщик представлен как PSDrive с именем SQLSERVER:\
, к которому можно подключать и перемещать экземпляры SQL Server, к которым имеет доступ ваша учетная запись домена. Сведения о настройке проверки подлинности Active Directory для SQL Server на Linux см. в шагах по настройке конфигурации.
Также вы можете использовать проверку подлинности SQL в поставщике SQL Server PowerShell. Для этого с помощью командлета New-PSDrive
создайте новый диск PSDrive и укажите учетные данные для подключения.
В следующем примере показано, как создать PSDrive с помощью проверки подлинности SQL.
# NOTE: We are reusing the values saved in the $credential variable from the above example.
New-PSDrive -Name SQLonDocker -PSProvider SqlServer -Root 'SQLSERVER:\SQL\localhost,10002\Default\' -Credential $credential
Чтобы убедиться в том, что диск был создан, выполните командлет Get-PSDrive
.
Get-PSDrive
После создания нового диска PSDrive вы можете начать работу с ним.
dir SQLonDocker:\Databases
Выходные данные могут выглядеть следующим образом. Вы можете заметить, что эти выходные данные похожи на то, что SSMS отображается на узле баз данных. В нем представлены пользовательские, а не системные базы данных.
Name Status Size Space Recovery Compat. Owner
Available Model Level
---- ------ ---- ---------- -------- ------- -----
AdventureWorks2022 Normal 209.63 MB 1.31 MB Simple 130 sa
AdventureWorksDW2022 Normal 167.00 MB 32.47 MB Simple 110 sa
AdventureWorksDW2022 Normal 188.00 MB 78.10 MB Simple 120 sa
AdventureWorksDW2022 Normal 172.00 MB 74.76 MB Simple 130 sa
AdventureWorksDW2022 Normal 208.00 MB 40.57 MB Simple 140 sa
Чтобы просмотреть все базы данных в вашем экземпляре, можно использовать командлет Get-SqlDatabase
.
Получение баз данных
Один из важных командлетов, которые следует знать, — Get-SqlDatabase
. Для многих операций с базами данных или содержащимися в них объектами можно использовать командлет Get-SqlDatabase
. Если вы предоставляете значения для -ServerInstance
обоих -Database
параметров, извлекается только один объект базы данных. Однако если указать только -ServerInstance
параметр, возвращается полный список всех баз данных в этом экземпляре.
# NOTE: We are reusing the values saved in the $credential variable from the above example.
# Connect to the Instance and retrieve all databases
Get-SqlDatabase -ServerInstance ServerB -Credential $credential
Ниже приведен пример того, что возвращает команда Get-SqlDatabase:
Name Status Size Space Recovery Compat. Owner
Available Model Level
---- ------ ---- ---------- -------- ------- -----
AdventureWorks2022 Normal 209.63 MB 1.31 MB Simple 130 sa
AdventureWorksDW2022 Normal 167.00 MB 32.47 MB Simple 110 sa
AdventureWorksDW2022 Normal 188.00 MB 78.10 MB Simple 120 sa
AdventureWorksDW2022 Normal 172.00 MB 74.88 MB Simple 130 sa
AdventureWorksDW2022 Normal 208.00 MB 40.63 MB Simple 140 sa
master Normal 6.00 MB 600.00 KB Simple 140 sa
model Normal 16.00 MB 5.70 MB Full 140 sa
msdb Normal 15.50 MB 1.14 MB Simple 140 sa
tempdb Normal 16.00 MB 5.49 MB Simple 140 sa
Проверка журналов ошибок SQL Server
Далее описывается использование PowerShell Core для проверки журналов ошибок подключения в вашем экземпляре SQL Server на Linux.
Скопируйте следующие команды и вставьте их в командную строку PowerShell. Это может занять несколько минут. Данные команды выполняют следующие действия:
- отображение диалогового окна с запросом на ввод имени узла и IP-адреса экземпляра;
- открытие диалогового окна Запрос учетных данных PowerShell, в котором необходимо ввести соответствующие сведения; для подключения к экземпляру SQL Server на Linux вы можете использовать свои имя пользователя SQL и пароль SQL;
- Использование командлета Get-SqlErrorLog для подключения к экземпляру SQL Server на Linux и извлечения журналов ошибок, обнаруженных со вчерашнего дня
При необходимости можно заменить переменную $serverInstance
IP-адресом или именем узла вашего экземпляра SQL Server.
# Prompt for instance & credentials to login into SQL Server
$serverInstance = Read-Host "Enter the name of your instance"
$credential = Get-Credential
# Retrieve error logs since yesterday
Get-SqlErrorLog -ServerInstance $serverInstance -Credential $credential -Since Yesterday
# done
Изучение командлетов, доступных в PowerShell Core в настоящее время
Хотя модуль SqlServer сейчас содержит 109 командлетов Windows PowerShell, только 62 из них доступны в PowerShell Core. Ниже приведен полный список доступных 62 командлетов. Подробную документацию по всем командлетам модуля SqlServer см. в справочнике по командлетам SqlServer.
Следующая команда показывает все командлеты, доступные в версии PowerShell, которую вы используете.
Get-Command -Module SqlServer -CommandType Cmdlet |
Sort-Object -Property Noun |
SELECT Name
- ConvertFrom-EncodedSqlName
- ConvertTo-EncodedSqlName
- Get-SqlAgent
- Get-SqlAgentJob
- Get-SqlAgentJobHistory
- Get-SqlAgentJobSchedule
- Get-SqlAgentJobStep
- Get-SqlAgentSchedule
- Invoke-SqlAssessment
- Get-SqlAssessmentItem
- Remove-SqlAvailabilityDatabase
- Resume-SqlAvailabilityDatabase
- Add-SqlAvailabilityDatabase
- Suspend-SqlAvailabilityDatabase
- New-SqlAvailabilityGroup
- Set-SqlAvailabilityGroup
- Remove-SqlAvailabilityGroup
- Switch-SqlAvailabilityGroup
- Join-SqlAvailabilityGroup
- Revoke-SqlAvailabilityGroupCreateAnyDatabase
- Grant-SqlAvailabilityGroupCreateAnyDatabase
- New-SqlAvailabilityGroupListener
- Set-SqlAvailabilityGroupListener
- Add-SqlAvailabilityGroupListenerStaticIp
- Set-SqlAvailabilityReplica
- Remove-SqlAvailabilityReplica
- New-SqlAvailabilityReplica
- Set-SqlAvailabilityReplicaRoleToSecondary
- New-SqlBackupEncryptionOption
- Get-SqlBackupHistory
- Invoke-Sqlcmd
- New-SqlCngColumnMasterKeySettings
- Remove-SqlColumnEncryptionKey
- Get-SqlColumnEncryptionKey
- Remove-SqlColumnEncryptionKeyValue
- Add-SqlColumnEncryptionKeyValue
- Get-SqlColumnMasterKey
- Remove-SqlColumnMasterKey
- New-SqlColumnMasterKey
- Get-SqlCredential
- Set-SqlCredential
- New-SqlCredential
- Remove-SqlCredential
- New-SqlCspColumnMasterKeySettings
- Get-SqlDatabase
- Restore-SqlDatabase
- Backup-SqlDatabase
- Set-SqlErrorLog
- Get-SqlErrorLog
- New-SqlHADREndpoint
- Set-SqlHADREndpoint
- Get-SqlInstance
- Add-SqlLogin
- Remove-SqlLogin
- Get-SqlLogin
- Set-SqlSmartAdmin
- Get-SqlSmartAdmin
- Read-SqlTableData
- Write-SqlTableData
- Read-SqlViewData
- Read-SqlXEvent
- Convert-UrnToPath