ハードドライブの設定については、あまり知りません。
http://blog.sqlauthority.com/2009/05/31/sql-server-create-multiple-filegroup-for-single-database/
http://msdn.microsoft.com/en-us/library/bb522469.aspx
最初のリンクは概念を説明します。
2 番目のリンクは構文を示します。
見ておきたいのは以下の3点です。
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ]
なんで?
最初のものは初期サイズです。2枚目は最大サイズです。これが設定されている場合、ハードドライブに空き容量がある場合でも、データベースは成長しなくなります。3 つ目は、「maxsize ルールに違反していない場合、どのくらいの大きさに拡張するか」です。
今。MAXSIZE を UNLIMITED に設定できます。
でも。ハード ドライブがいっぱいになると、エラーが発生し始めます。
したがって、DBA をプレイして、最適なオプションを選択する必要があります。
個人的には、MAXSIZE をドライブの空き容量よりも小さい値に設定して、エッジ ポイントに到達しないようにします。
また、異なるファイル グループを作成し、異なるファイル グループに異なるテーブルを配置することもできます。これは、1 つのテーブルが巨大で、もう 1 つのテーブルが小さいことがわかっている場合に便利です。
そのため... MAXSIZE 設定が既に設定されているかどうかを確認してください。
次に、テーブル、ハードドライブ、ファイル グループ、およびテーブルでルーレットをプレイする必要があります。
容量の問題に対する別のオプションとして、ログ ファイルを別のハード ドライブに置くこともできます。
ファイル グループを作成し、テーブルをその新しいファイル グループに移動する良いサンプルを次に示します。
http://www.daveturpin.com/2010/09/move-tables-to-new-filegroup/
以下は、SQLCMD モードを使用してデータベースを作成するためのスクリプトです。ディレクトリは「事前に存在する」必要があることに注意してください(実際にSQLサーバーに座っていない場合は、ローカルマシンではなく、サーバー上にあります)。
:Setvar DBName MyFirstDatabase01
:Setvar DataFilesBaseDirectory "C:\WUTemp\Some Folder\"
:Setvar LogFilesBaseDirectory "C:\WUTemp\Some Folder\"
:Setvar DatabasePrimaryDataFileStartSizeMB 9
:Setvar DatabasePrimaryDataFileGrowthMB 8
:Setvar DatabasePrimaryLogFileStartSizeMB 7
:Setvar DatabasePrimaryLogFileGrowthMB 6
Use [master];
GO
if exists (select * from sysdatabases where name='$(DBName)')
BEGIN
DROP DATABASE [$(DBName)];
END
GO
--Create Database $(DBName)
--G--O
DECLARE @device_directory_data NVARCHAR(520)
DECLARE @device_directory_log NVARCHAR(520)
--SELECT @device_directory_data = SUBSTRING(filename, 1, CHARINDEX(N'master.mdf', LOWER(filename)) - 1) FROM master.dbo.sysaltfiles WHERE dbid = 1 AND fileid = 1
--SELECT @device_directory_log = SUBSTRING(filename, 1, CHARINDEX(N'master.mdf', LOWER(filename)) - 1) FROM master.dbo.sysaltfiles WHERE dbid = 1 AND fileid = 1
select @device_directory_data = '$(DataFilesBaseDirectory)'
select @device_directory_log = '$(LogFilesBaseDirectory)'
print @device_directory_data
print @device_directory_log
EXECUTE (N'CREATE DATABASE $(DBName)
ON PRIMARY (NAME = N''$(DBName)'', FILENAME = N''' + @device_directory_data + N'$(DBName).mdf'', SIZE = $(DatabasePrimaryDataFileStartSizeMB) MB, FILEGROWTH = $(DatabasePrimaryDataFileGrowthMB)MB)
LOG ON (NAME = N''$(DBName)_log'', FILENAME = N''' + @device_directory_log + N'$(DBName).ldf'', SIZE = $(DatabasePrimaryLogFileStartSizeMB) MB, FILEGROWTH = $(DatabasePrimaryLogFileGrowthMB)MB)')
DECLARE @logsize char(1)
SELECT @logsize = CASE WHEN convert(varchar, Serverproperty('ProductVersion')) LIKE '9%'
--THEN '10'
--ELSE '5'
THEN '13'
ELSE '14'
END
EXECUTE(N'ALTER DATABASE $(DBName)
ADD LOG FILE (NAME = N''$(DBName)_log2'',
FILENAME = N''' + @device_directory_log + N'$(DBName)log2.ldf'', SIZE = ' + @logsize + ' MB)')
-- Make the database case sensitive to clean up the development effort
-- EXECUTE(N'ALTER DATABASE $(DBName) COLLATE SQL_Latin1_General_CP1_CS_AS')
exec sp_dboption '$(DBName)','trunc. log on chkpt.','true'
exec sp_dboption '$(DBName)','select into/bulkcopy','true'
GO
GO