既定では、SQL Server PowerShell コンポーネントは、データベース エンジン インスタンスへの接続に Windows 認証を使用します。 PowerShell 仮想ドライブを定義するか、Invoke-Sqlcmd の -Username パラメーターと -Password パラメーターを指定して、SQL Server 認証を使用します。
注
SQL Server PowerShell モジュールには SqlServer と SQLPS の 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 認証ログインに関連付けられている仮想ドライブを作成します。
次のような関数を作成します。
仮想ドライブに与える名前、ログイン ID、および仮想ドライブに関連付けるプロバイダー パスのためのパラメーターを持っている。
read-host を使用して、ユーザーにパスワードの入力を求める。
new-object を使用して、資格情報オブジェクトを作成する。
new-psdrive を使用して、指定された資格情報で仮想ドライブを作成する。
関数を呼び出して、指定された資格情報で仮想ドライブを作成します。
例: 仮想ドライブ
この例では、 sqldrive という名前の関数を作成します。これを使用して、指定した SQL Server 認証ログインとインスタンスに関連付けられた仮想ドライブを作成できます。
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 invokes the supplied authentication credentials.
sl SQLAuth:
Invoke-Sqlcmd を使用した SQL Server 認証
SQL Server 認証で Invoke-Sqlcmd を使用する場合。
- -Username パラメーターでログイン ID を指定し、 -Password パラメーターで関連付けられているパスワードを指定します。
例 (Invoke-Sqlcmd)
この例では、読み取りホスト コマンドレットを使用してユーザーにパスワードの入力を求め、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