PowerShell. Управление проверкой подлинности в SQL ServerPowerShell: Manage authentication to SQL Server

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data WarehouseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics даПараллельное хранилище данныхParallel Data WarehouseyesПараллельное хранилище данныхParallel Data Warehouse

По умолчанию компоненты SQL ServerSQL Server PowerShell используют при установлении соединения с компонентом Компонент Database EngineDatabase Engineпроверку подлинности Windows.By default, the SQL ServerSQL Server PowerShell components use Windows Authentication when connecting to an instance of the Компонент Database EngineDatabase Engine. Для использования проверки подлинности SQL Server необходимо либо определить виртуальный диск PowerShell, либо указать параметры -Username и -Password для Invoke-Sqlcmd.You can use SQL Server Authentication by either defining a PowerShell virtual drive, or by specifying the -Username and -Password parameters for Invoke-Sqlcmd.

Примечание

Существует два модуля SQL Server PowerShell — SqlServer и SQLPS.There are two SQL Server PowerShell modules; SqlServer and SQLPS. Модуль SQLPS входит в состав установки SQL Server (для обеспечения обратной совместимости), но больше не обновляется.The SQLPS module is included with the SQL Server installation (for backwards compatibility), but is no longer being updated. Самым актуальным модулем PowerShell является модуль SqlServer.The most up-to-date PowerShell module is the SqlServer module. Модуль SqlServer содержит обновленные версии командлетов в SQLPS, а также новые командлеты для поддержки последних функций SQL.The SqlServer module contains updated versions of the cmdlets in SQLPS, and also includes new cmdlets to support the latest SQL features.
Предыдущие версии модуля SqlServer входили в состав среды SQL Server Management Studio (SSMS), но только с SSMS версий 16.x.Previous versions of the SqlServer module were included with SQL Server Management Studio (SSMS), but only with the 16.x versions of SSMS. Для работы PowerShell с SSMS 17.0 и более поздних версий необходимо установить модуль SqlServer из коллекции PowerShell.To use PowerShell with SSMS 17.0 and later, the SqlServer module must be installed from the PowerShell Gallery. Сведения об установке модуля SqlServer см. в статье Установка компонентов SQL Server PowerShell.To install the SqlServer module, see Install SQL Server PowerShell.

PermissionsPermissions

Все действия, которые могут быть выполнены на экземпляре компонента Компонент Database EngineDatabase Engine , определяются разрешениями, предоставляемыми учетным данным, которые использовались при подключении к экземпляру.All actions you can perform in an instance of the Компонент Database EngineDatabase Engine are controlled by the permissions granted to the authentication credentials used to connect to the instance. По умолчанию для подключения к компоненту SQL ServerSQL Server с проверкой подлинности Windows поставщик Компонент Database EngineDatabase Engineи командлеты используют учетную запись Windows, под которой они работают.By default, the SQL ServerSQL Server provider and cmdlets use the Windows account under which it is running to make a Windows Authentication connection to the Компонент Database EngineDatabase Engine.

Для подключения с проверкой подлинности SQL ServerSQL Server необходимо указать идентификатор имени входа и пароль проверки подлинности SQL Server.To make a SQL ServerSQL Server Authentication connection you must supply a SQL Server Authentication login ID and password. При использовании поставщика SQL ServerSQL Server необходимо связать учетные данные для входа на SQL ServerSQL Server с виртуальным диском, а затем с помощью команды перехода в каталог (cd) подключиться к этому диску.When using the SQL ServerSQL Server provider, you must associate the SQL ServerSQL Server login credentials with a virtual drive, and then use the change directory command (cd) to connect to that drive. В Windows PowerShell учетные данные безопасности можно связывать только с виртуальными дисками.In Windows PowerShell, security credentials can only be associated with virtual drives.

Проверка подлинности SQL Server с помощью виртуального дискаSQL Server Authentication Using a Virtual Drive

Создание виртуального диска с именем входа для проверки подлинности SQL ServerTo create a virtual drive associated with a SQL Server Authentication login

  1. Создайте функцию, которая:Create a function that:

    1. Имеет параметры для имени, назначаемого виртуальному диску, идентификатора имени входа и пути поставщика, который будет связан с виртуальным диском.Has parameters for the name to give the virtual drive, the login ID, and the provider path to associate with the virtual drive.

    2. Использует read-host для запроса ввода пароля.Uses read-host to prompt the user for the password.

    3. Использует new-object для создания объекта учетных данных.Uses new-object to create a credentials object.

    4. Использует new-psdrive для создания виртуального диска с указанными учетными данными.Uses new-psdrive to create a virtual drive with the supplied credentials.

  2. Вызовите функцию, чтобы создать виртуальный диск с указанными учетными данными.Invoke the function to create a virtual drive with the supplied credentials.

Пример (виртуальный диск)Example (Virtual Drive)

В этом примере показано создание функции sqldrive для создания виртуального диска, который затем будет связан с указанным именем входа для проверки подлинности и экземпляром SQL ServerSQL Server .This example creates a function named sqldrive that you can use to create a virtual drive that is associated with the specified SQL ServerSQL Server Authentication login and instance.

Функция sqldrive запрашивает ввод пароля для имени входа, скрывая символы пароля при их вводе.The sqldrive function prompts you to enter the password for your login, masking the password as you type it in. При каждом последующем использовании команды перехода в другой каталог (cd) для подключения к пути с помощью имени виртуального диска все операции выполняются с использованием учетных данных для проверки подлинности SQL ServerSQL Server , которые были указаны при создании этого диска.Then, whenever you use the change directory command (cd) to connect to a path by using the virtual drive name, all operations are performed by using the SQL ServerSQL Server Authentication login credentials that you supplied when you created the drive.

## Create a function that specifies the login and prompts for the password.  
  
function sqldrive  
{  
    param( [string]$name, [string]$login = "MyLogin", [string]$root = "SQLSERVER:\SQL\MyComputer\MyInstance" )  
    $pwd = read-host -AsSecureString -Prompt "Password"  
    $cred = new-object System.Management.Automation.PSCredential -argumentlist $login,$pwd  
    New-PSDrive $name -PSProvider SqlServer -Root $root -Credential $cred -Scope 1  
}  
  
## Use the sqldrive function to create a SQLAuth virtual drive.  
sqldrive SQLAuth  
  
## CD to the virtual drive, which invokes the supplied authentication credentials.  
cd SQLAuth  

Проверка подлинности SQL Server с использованием Invoke-SqlcmdSQL Server Authentication Using Invoke-Sqlcmd

Использование Invoke-Sqlcmd для проверки подлинности SQL ServerTo use Invoke-Sqlcmd with SQL Server Authentication

  1. Укажите идентификатор имени входа с помощью параметра -Username, а связанный с ним пароль — с помощью параметра -Password.Use the -Username parameter to specify a login ID, and the -Password parameter to specify the associated password.

Пример (Invoke-Sqlcmd)Example (Invoke-Sqlcmd)

В этом примере командлет read-host используется для запроса ввода пароля с последующим подключением с проверкой подлинности SQL Server.This example uses the read-host cmdlet to prompt the user for a password, and then connects using SQL Server Authentication.

## Prompt the user for their password.  
$pwd = read-host -AsSecureString -Prompt "Password"  
  
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance" -Username "MyLogin" -Password $pwd  

См. также:See Also

SQL Server PowerShell SQL Server PowerShell
SQL Server PowerShell, поставщик SQL Server PowerShell Provider
Invoke-Sqlcmd, командлетInvoke-Sqlcmd cmdlet