最近、SANがいくつかのRAIDアレイとともにデータベースサーバーに適用され、パフォーマンスを向上させるために与えられました。私はDDAS
という1つのユーザーデータベースを持っています、SQL Serverと共にインストールされるシステムデータベースに加えて。
私の意図は、DDAS
が独自のドライブを指し、tempdb
が独自のドライブを指し、トランザクションログが独自のドライブを指し示すことでした。 SQL Serverを実行しているユーザーアカウントには、すべてのドライブへのフルコントロールアクセス権があります。何かを行う前に、それを確認しました。
次のSQLステートメントを使用してtempdb
を正常に移動しました。
_ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev', FILENAME = N'F:\tempdb.mdf')
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog', FILENAME = N'F:\templog.ldf')
_
SQL Serverを再起動しましたが、tempdb
は再配置されました(古いtempdb
ファイルを元の場所から安全に削除できますか?おそらく別の質問です...)
現在、DDAS
はまだ開発中であるため、独自のドライブに移動する前に、すべてのテーブルからすべてのデータを削除することができました。したがって、ファイルのサイズは約5MBになります。 DDAS
ファイルを使用して同じステートメントを実行します。
_ALTER DATABASE [DDAS] MODIFY FILE ( NAME = N'DDAS', FILENAME = N'E:\DDAS.mdf')
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'DDAS_log', FILENAME = N'G:\DDAS_log.ldf')
_
SQL Serverを再起動すると動作しません... Management StudioのデータベースでDDAS (Recovery Pending)
を無期限に取得します。すべてのオブジェクトなどを作成するスクリプトがあるので、データベースを完全に削除しました...存在するはずのドライブにデータベースを再作成しようとするだけです。次のステートメントでデータベースを作成しようとしました。
_IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'DDAS')
BEGIN
CREATE DATABASE [DDAS]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'DDAS', FILENAME = N'E:\DDAS.mdf' , SIZE = 1024000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024000KB )
LOG ON
( NAME = N'DDAS', FILENAME = N'G:\DDAS_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
END
GO
_
しかし、私は今このエラーを受け取ります:
このクエリを使用して、SQL Serverで使用されているファイル名を一覧表示しました。
_SELECT DB_NAME(database_id) AS DatabaseName,
name AS LogicalFileName,
physical_name AS PhysicalFileName
FROM sys.master_files AS mf
_
そしてこの結果を得ました:
これはどのようにして可能ですか?何回かSQL Serverを再起動してみましたが、うまくいきませんでした。また、DDAS
が使用していた_C:\
_ドライブ上の元のファイルとそのトランザクションログが削除されていることも確認しました。このエラーメッセージ以外にDDAS
の痕跡はありません。また、DDAS
への接続が開いていないため、これらの再起動が何とか続いた可能性があります。
重要な場合:SQL Server Enterprise 2014 x64
以下のクエリから正しく理解できる場合
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'DDAS_log', FILENAME = N'G:\DDAS_log.ldf')
tempdb
は[DDAS]
ここに..
また、CREATE DATABASE
クエリ
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'DDAS')
BEGIN
CREATE DATABASE [DDAS]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'DDAS', FILENAME = N'E:\DDAS.mdf' , SIZE = 1024000KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024000KB )
LOG ON
( NAME = N'DDAS', FILENAME = N'G:\DDAS_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
END
GO
LOG ONではなく、ログファイルの論理ファイル名の上が間違っているようです
(NAME = N'DDAS '....)NAME = N'DDAS_log '..
詳しくは CREATE DATABASE を参照してください