Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server — Linux
В этой статье описывается SQL Server PowerShell и приведены несколько примеров использования с PowerShell в macOS и Linux. PowerShell теперь является проектом с открытым исходным кодом на GitHub.
Дополнительные сведения о Windows PowerShell см. в статье "Что такое Windows PowerShell?
Параметры кроссплатформенного редактора
Все следующие шаги для PowerShell работают в обычном терминале, или из терминала в 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
Дополнительные сведения об установке PowerShell на различных поддерживаемых и экспериментальных платформах см. в следующих статьях:
- Установка PowerShell в Windows
- Установка PowerShell в Linux
- Установка PowerShell в macOS
- Установка PowerShell на процессорах ARM
Установка модуля SqlServer
Модуль SqlServer
доступен в коллекции PowerShell. При работе с SQL Server всегда следует использовать последнюю версию SqlServer
модуля PowerShell.
Чтобы установить SqlServer
модуль, откройте сеанс PowerShell и запустите следующий код:
Install-Module -Name SqlServer
Дополнительные сведения об установке SqlServer
модуля из коллекции PowerShell см. в разделе "Установка модуля SQL Server PowerShell".
Использование модуля SqlServer
Начнем с запуска PowerShell. Если вы используете macOS или Linux, откройте сеанс терминала на компьютере и введите pwsh
, чтобы запустить новый сеанс PowerShell. В Windows используйте Win+R и введите pwsh
для запуска нового сеанса PowerShell.
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 для подключения к экземпляру SQL Server в Linux и отображения нескольких свойств сервера.
Скопируйте следующие команды и вставьте их в командную строку PowerShell. При запуске этих команд в PowerShell будут выполнены следующие действия:
- отображение диалогового окна с запросом на ввод имени узла и IP-адреса экземпляра;
- открытие диалогового окна Запрос учетных данных PowerShell, в котором необходимо ввести соответствующие сведения; для подключения к экземпляру SQL Server на Linux вы можете использовать свои имя пользователя SQL и пароль SQL;
- Используйте командлет
Get-SqlInstance
для подключения кServer
и отображения нескольких свойств.
При необходимости можно заменить переменную $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 Provider. Использование провайдера позволяет работать с экземпляром 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
Выходные данные могут выглядеть следующим образом: Вы можете заметить, что этот вывод аналогичен тому, что отображается в узле "Базы данных" SQL Server Management Studio (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 для проверки журналов ошибок на экземпляре SQL Server в Linux.
Скопируйте следующие команды и вставьте их в командную строку PowerShell. Это может занять несколько минут. Данные команды выполняют следующие действия:
- отображение диалогового окна с запросом на ввод имени узла и IP-адреса экземпляра;
- открытие диалогового окна Запрос учетных данных PowerShell, в котором необходимо ввести соответствующие сведения; для подключения к экземпляру SQL Server на Linux вы можете использовать свои имя пользователя SQL и пароль SQL;
- Используйте командлет
Get-SqlErrorLog
для подключения к экземпляру SQL Server в Linux и получения журналов ошибок с моментаYesterday
.
При необходимости можно заменить переменную $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.
Хотя модуль SqlServer в настоящее время имеет 109 командлетов, доступных в Windows PowerShell, в PowerShell доступно только 62 из 109. Следующий полный список включает 62 доступных командлетов. Подробную документацию по всем командлетам модуля SqlServer см. в справочнике по командлетам SqlServer.
Следующая команда показывает вам все командлеты, доступные в той версии PowerShell, которую вы используете.
Get-Command -Module SqlServer -CommandType Cmdlet |
Sort-Object -Property Noun |
Select-Object Name
- ConvertFrom-EncodedSqlName
- ConvertTo-EncodedSqlName
- Get-SqlAgent
- Get-SqlAgentJob
- Get-SqlAgentJobHistory (получить историю заданий SQL Agent)
- Get-SqlAgentJobSchedule
- Get-SqlAgentJobStep
- Get-SqlAgentSchedule
- Invoke-SqlAssessment
- Получить элемент оценки SQL (Get-SqlAssessmentItem)
- Remove-SqlAvailabilityDatabase
- Resume-SqlAvailabilityDatabase
- Add-SqlAvailabilityDatabase
- Приостановить-SqlAvailabilityDatabase
- New-SqlAvailabilityGroup
- Set-SqlAvailabilityGroup
- Remove-SqlAvailabilityGroup
- Switch-SqlAvailabilityGroup
- Join-SqlAvailabilityGroup
- Revoke-SqlAvailabilityGroupCreateAnyDatabase
- Grant-SqlAvailabilityGroupCreateAnyDatabase
- New-SqlAvailabilityGroupListener
- Установить прослушиватель группы доступности SQL
- Add-SqlAvailabilityGroupListenerStaticIp
- Set-SqlAvailabilityReplica
- Удаление реплики доступности SQL (Remove-SqlAvailabilityReplica)
- New-SqlAvailabilityReplica
- Set-SqlAvailabilityReplicaRoleToSecondary
- Новый-ОпцияШифрованияРезервнойКопииSQL
- Get-SqlBackupHistory
- Invoke-Sqlcmd
- New-SqlCngColumnMasterKeySettings
- Remove-SqlColumnEncryptionKey (Удалить ключ шифрования столбцов SQL)
- Get-SqlColumnEncryptionKey (Получение ключа шифрования столбца SQL)
- Remove-SqlColumnEncryptionKeyValue
- Add-SqlColumnEncryptionKeyValue
- Get-SqlColumnMasterKey
- Remove-SqlColumnMasterKey
- New-SqlColumnMasterKey
- Get-SqlCredential
- Set-SqlCredential
- New-SqlCredential
- Remove-SqlCredential
- New-SqlCspColumnMasterKeySettings
- Get-SqlDatabase
- Restore-SqlDatabase
- Резервное копирование базы данных SQL (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