web-dev-qa-db-ja.com

ログファイルとデータファイルのファイルディレクトリを変更する方法とその影響

ログファイルとデータファイルのファイルディレクトリが同じドライブの同じフォルダーにあるSQLサーバー2012インスタンスを継承しました(すべてC:\ドライブにあります)。私が行う私の仕事は、OSディスクからデータファイルを分離することです。インスタンスで実行中のデータベースはすでにいくつかあります。インスタンスの設定を変更して、新しいディレクトリを指すようにして、既存のデータベースをデタッチしてデータファイルを移動し、再度アタッチすることはできますか?これを行うための最善の方法を教えてください。

2
Keith Rivera

ログファイルとデータファイルのファイルディレクトリを変更する方法とその影響

インスタンスの設定を変更して新しいディレクトリを指すようにして、既存のデータベースをデタッチしてデータファイルを移動し、再度アタッチすることはできますか?これを行うための最善の方法を教えてください。

以下は、この目的のためにこれまで何度も使用した2つのスクリプトです。環境に合わせて調整してください。

基本的に、新しいパスの場所、データとログファイルの名前、論理SQLデータとログファイルの名前を接続し、最初のスクリプトを実行します(2番目のスクリプトの上のコメントを参照)未満)。

最初のスクリプト

環境に応じて変数をプラグインします。

ALTER DATABASE <DBName> SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE <DBName> SET OFFLINE

ALTER DATABASE <DBName> MODIFY FILE (
    NAME = <LogicalDataFileName1>
    ,Filename = 'T:\MSSQL\Data\<DBName>.mdf'
    );

ALTER DATABASE <DBName> MODIFY FILE (
    NAME = <LogicalDataFileName2>
    ,Filename = 'T:\MSSQL\Data\<DBName1>.ndf'
    );

ALTER DATABASE <DBName> MODIFY FILE (
    NAME = <LogicalLogFileName2>
    ,Filename = 'Y:\MSSQL\Logs\<DBName>.ldf'
    );

2番目のスクリプト

以下のTSQLを実行する前に、最初のスクリプトに接続するときに、適切な物理データとログファイルを新しい場所に移動する必要があります。

--Now move the files to the new location where you pointed them to before running the below.

ALTER DATABASE <DBName> SET ONLINE
ALTER DATABASE <DBName> SET MULTI_USER
4
Pimp Juice IT