Azure SQL IaaSでTEMPDBを一時ドライブに変更する (ja-JP)
Azure SQL Iaasでは、SQL Serverのパフォーマンスを改善するためにTEMPDBを一時ドライブ(D:)に移動することを推奨します。
変更するために、次の手順を実施します。
- SQL Server Management Studio(SSMS)を開き、インスタンスに接続します。tempdbファイルの配置場所を変更するために次のスクリプトを実行します。変更を適用するために、サービスを再起動します。
use master
go
Alter database tempdb modify file (name = tempdev, filename = 'D:\SQLTEMP\tempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename = 'D:\SQLTEMP\templog.ldf')
go
- マニュアルでSQLサービスで設定する
- コンソールから、PowerShellを実行し、set execution-policyでremotesignedを設定します。
Set-ExecutionPolicy RemoteSigned
- Powershellで、次のスクリプトを作成する
$SQLService="SQL Server (MSSQLSERVER)"
$SQLAgentService="SQL Server Agent (MSSQLSERVER)"
$tempfolder="D:\SQLTEMP"
if (!(test-path -path $tempfolder)) {
New-Item -ItemType directory -Path $tempfolder
}
Start-Service $SQLService
Start-Service $SQLAgentService
- スクリプトを呼び出すために、システムスタートアップにスケジュールタスクを作成します。
6) スクリプトをテストするために、サーバーを再起動します。
Dドライブは一時領域なので、TEMPDBをフォルダー内に配置したい場合は、いくつかのパターンでWindows AzureによってAzure VMがリサイクルされたら、(手順2~6の)PowerShellスクリプトを実施しなければなりません。
VMがリサイクルされると、フォルダーは見えなくなるので、SQL Serverを起動する前に、再度ディレクトリを作成する必要があります。
再作成しないと起動に失敗します。
単純にドライブ直下にTEMPDBファイルを配置できるように権限付与すれば話はもっとシンプルになります。
SQL Serverのサービスアカウントをローカルアドミニストレーターグループのメンバーに追加すればいいのです。