SQL Server 2005以降の場合以下を使用できます。
SELECT FILE_ID, type, type_desc,
CAST( CAST( (CASE WHEN size < 128 THEN 128 ELSE size END) * 8. / 1024. AS INT ) AS VARCHAR(20) ) + 'MB' AS SIZE,
CASE max_size WHEN -1 THEN 'UNLIMITED' ELSE CAST( CAST( max_size * 8. / 1024. AS INT ) AS VARCHAR(20) ) + 'MB' END AS MAXSIZE,
CASE is_percent_growth
WHEN 0 THEN CAST( CAST( growth * 8. / 1024. AS INT ) AS VARCHAR(20) ) + 'MB'
WHEN 1 THEN CAST( growth AS VARCHAR(30) ) + '%'
END AS FILEGROWTH
FROM sys.master_files
WHERE database_id = DB_ID('model')
GO
これにより、モデルデータベースのファイル定義が取得されます。
後で、CREATE DATABASEまたはALTER DATABASEのいずれかで使用できます。
SSMSは実際にSMOを使用してこれらのパラメーターを取得し、次のようなスクリプトを作成します。
CREATE DATABASE [aaa] ON PRIMARY
( NAME = N'aaa', FILENAME = N'D:\Data\aaa.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'aaa_log', FILENAME = N'D:\Logs\aaa_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
アプリケーションがデータベースを作成していて、アプリケーションを変更できない場合-
作成が完了したら、ALTER DATABASEを使用する必要があります。
ALTER DATABASE [aaa] MODIFY FILE ( NAME = N'aaa', MAXSIZE = 102400KB )
GO
ALTER DATABASE [aaa] MODIFY FILE ( NAME = N'aaa_log', FILEGROWTH = 10240KB )
GO
これには、少なくともALTER DATABASE権限が必要です
(ALTER ANY DATABASEサーバー権限によって暗示されます)
明らかに、最初のコードサンプル(FROM sys.master_files)を使用してそのスクリプトを生成できます。
SQL Server 2008R2は非推奨であるため、sysaltfilesを使用しません。
幸運、
ロイ
CREATE DATABASE
指定できないのはなぜですか。