PowerShell で SQL Server への認証を管理する

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

既定では、SQL Server PowerShell コンポーネントは、データベース エンジン インスタンスへの接続に Windows 認証を使用します。 SQL Server 認証を使用するには、PowerShell 仮想ドライブを定義するか、Invoke-Sqlcmd-Username および -Password パラメーターを指定します。

Note

SQL Server PowerShell モジュールには SqlServerSQLPS の 2 つがあります。

SqlServer モジュールは、使用する現在の PowerShell モジュールです。

SQLPS モジュールは、(後方互換性のため) SQL Server のインストールに含まれていますが、今後更新されることはありません。

SqlServer モジュールには、SQLPS のコマンドレットの更新バージョンに加え、最新の SQL 機能をサポートする新しいコマンドレットが含まれています。

PowerShell ギャラリーから SqlServer モジュールをインストールします。

詳細については、「SQL Server PowerShell」を参照してください。

アクセス許可

データベース エンジンのインスタンスで実行できるすべての操作は、そのインスタンスへの接続に使用された認証資格情報に付与されている権限によって制御されます。 既定では、SQL Server プロバイダーとコマンドレットは、それが実行されている Windows アカウントを使用して、データベース エンジンへの Windows 認証接続を行います。

SQL Server 認証接続を行うには、SQL Server 認証のログイン ID とパスワードを指定する必要があります。 SQL Server プロバイダーを使用するには、SQL Server ログイン資格情報を仮想ドライブに関連付けた後、ディレクトリの変更コマンド (cd) を使用してそのドライブに接続する必要があります。 Windows PowerShell では、セキュリティ資格情報は仮想ドライブにのみ関連付けることができます。

仮想ドライブを使用する SQL Server 認証

SQL Server 認証ログインに関連付けられた仮想ドライブを作成するには

  1. 次のような関数を作成します。

    1. 仮想ドライブに与える名前、ログイン ID、および仮想ドライブに関連付けるプロバイダー パスのためのパラメーターを持っている。

    2. read-host を使用して、ユーザーにパスワードの入力を求める。

    3. new-object を使用して、資格情報オブジェクトを作成する。

    4. new-psdrive を使用して、指定された資格情報で仮想ドライブを作成する。

  2. 関数を呼び出して、指定された資格情報で仮想ドライブを作成します。

例 (仮想ドライブ)

次の例では、指定された SQL Server 認証ログインおよびインスタンスに関連付けられる仮想ドライブを作成するための、sqldrive という名前の関数を作成します。

sqldrive 関数は、ユーザーにログインのパスワードの入力を求め、入力されるパスワードをマスクします。 ディレクトリの変更コマンド (cd) で仮想ドライブ名を使用してパスに接続する場合、操作はすべて、このドライブを作成したときに指定した SQL Server 認証ログイン資格情報を使用して実行されます。

## 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
  
## Set-Location to the virtual drive, which invokes the supplied authentication credentials.  
sl SQLAuth:

Invoke-Sqlcmd を使用する SQL Server 認証

SQL Server 認証で Invoke-Sqlcmd を使用するには

  1. -Username パラメーターでログイン ID を指定し、 -Password パラメーターで関連付けられているパスワードを指定します。

例 (Invoke-Sqlcmd)

この例では、read-host コマンドレットを使用してユーザーにパスワードの入力を求め、SQL Server 認証を使用して接続します。

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

参照