皆さん、こんにちは。 BI Data Platform サポートチームです。
SQL Server 2017 以降ではインストール時に tempdb の初期サイズを変更できるようになっています。
これに伴い、インストール時にある程度大きなサイズを指定してインストールを検討されるお客様もいらっしゃるかと思います。
ただ、上記の初期サイズの設定箇所では内部的なタイムアウト(20分)が設定されており、ファイルの作成に20分を超えるとインストールが失敗(Execution Timeout Expired)します。
tempdbの初期サイズが変更できる新機能ではありますが、それ故に大きなサイズを指定してインストールが失敗する事がないように、事例としてご紹介させて頂きます。
事象
SQL Server 2017 のインストール時に大きい tempdb のファイルサイズを指定した場合、セットアップが失敗する事がある。
//エラー画面
//Message全文
The following error has occurred:
Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
//ログ抜粋
C:\Program Files\Microsoft SQL Server\140\Setup Bootstrap\Log\yyyymmdd_hhmmss\Detail.txt
(01) 2017-10-27 11:52:39 Slp: --SafeSqlCommand: EXEC sp_SetAutoSAPasswordAndDisable
(01) 2017-10-27 11:52:39 Slp: --SafeSqlCommand: ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, SIZE = xxxx MB, FILEGROWTH = xxx MB)
(01) 2017-10-27 12:12:44 Slp: Sco: SqlException: Message:Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
:
(01) 2017-10-27 12:13:28 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.
(01) 2017-10-27 12:13:28 Slp: Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
(01) 2017-10-27 12:13:28 Slp: The configuration failure category of current exception is ConfigurationFailure
(01) 2017-10-27 12:13:28 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.
(01) 2017-10-27 12:13:28 Slp: System.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired. The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out
原因
SQL Server 2017 の新機能でInstall 時に tempdb のデータベースファイルサイズを明示的に変更できるようになっています。
SQL Server 2017 の新機能
https://docs.microsoft.com/ja-jp/sql/sql-server/what-s-new-in-sql-server-2017
セットアップ時に、ファイルあたり 256 GB (262,144 MB) までの初期 tempdb ファイル サイズを指定できるようになりました。
インストール時にtempdbのファイルサイズとして最大で256GBのファイルサイズを指定ができますが、インストール時に大きいファイルサイズを指定した場合、256GBの領域割り当てに時間を要する可能性があります。
インストール時に指定したサイズに拡張するまでに20分以上経過する場合にはタイムアウトが発生します。この場合、SQL Server 2017 のインストールは失敗します。
対処
インストール時には tempdb のファイルサイズを変更せず、インストール後に ALTER DATABASE 文でファイルサイズの変更を行ってください。
use master
go
ALTER DATABASE tempdb modify file (NAME = tempdev, SIZE = xxx MB)
go
[参考情報]
ALTER DATABASE (TRANSACT-SQL) の File および Filegroup オプション
https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-database-transact-sql-file-and-filegroup-options
E. ファイルを変更する
※ 本Blogの内容は、2017年11月現在の内容となっております。