Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
SQL Serverのデータベース名を変更する理由は複数存在します。命名ミスの修正、プロジェクトリブランドへの対応、環境整理などが挙げられます。手順自体は単純ですが、単なるラベルの変更だけではない点に注意が必要です。
本ガイドではSQL Serverのデータベース名変更に対応する3種類の手法を解説します。SSMSのGUI操作、T-SQLコマンドの実行、デタッチ&アタッチ方式です。それぞれ適したシナリオが異なるため、自身の状況に合わせて選択可能です。
はい、SQL Serverはデータベース名の変更に対応しています。名前を変更すると、オブジェクトエクスプローラーとsys.databasesに表示される論理名が更新されます。以降のすべてのクエリや管理作業は新しい名称を使用するようになります。
ただし、自動的に変更されない要素がいくつか存在します。
.mdfおよび.ldf)は元のファイル名を維持するSQL Serverのデータベース名変更には複数の手法があります。論理名のみ変更するか、物理ファイル名も併せて変更するかによって適切な方法を選びます。
管理コンソールに直接アクセスでき、コード記述よりGUI操作を優先する場合はSSMSが最速の手段です。
スクリプトによる自動実行やリモート操作にはT-SQLが適しています。古いスクリプトではsp_renamedbが使用されている場合がありますが、この手順は非推奨となっています。代わりにALTER DATABASEを使用してください。SQL Server 2012以降の標準構文です。
データベースに接続中のユーザーが存在しない場合は、1行のコマンドのみで完了します。
ALTER DATABASE [旧データベース名] MODIFY NAME = [新データベース名];
アクティブな接続が存在する場合は、まずシングルユーザーモードに切り替えてから名前変更を実行し、最後にマルチユーザーモードに戻します。
ALTER DATABASE [旧データベース名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [旧データベース名] MODIFY NAME = [新データベース名];
ALTER DATABASE [新データベース名] SET MULTI_USER;
sp_renamedbは非推奨構文です。今後はALTER DATABASE構文の使用が推奨されます。論理データベース名だけでなく、ディスク上の物理的な.mdf・.ldfファイル名も変更したい場合にこの手法を使用します。
.mdfファイルを選択します。アタッチ名列には古い論理名が初期表示されるため、ここを新しいデータベース名に書き換えます。ALTER DATABASE [新データベース名] MODIFY FILE (NAME = [旧論理ファイル名], NEWNAME = [新論理ファイル名]);
単純なデータベース名変更作業でもトラブルが発生する場合があります。頻出する3種類のエラーと解決策を記載します。
エラー1:データベースが使用中 / データベースを開けません
SQL Serverは名前変更に排他ロックを必要とするため、アクティブな接続が存在すると処理がブロックされます。事前にシングルユーザーモードに切り替えて既存接続を強制切断します。
USE master;
ALTER DATABASE [旧名称] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [旧名称] MODIFY NAME = [新名称];
ALTER DATABASE [新名称] SET MULTI_USER;
エラー2:非推奨構文警告(sp_renamedb)
古いストアドプロシージャsp_renamedbを使用すると本警告が出力されます。SQL Server 2012以降正式対応のALTER DATABASE ... MODIFY NAMEに置き換えてください。
エラー3:デタッチ・アタッチ時の物理ファイルアクセス拒否
デタッチアタッチ作業中に発生するエラーです。SQL Serverサービスアカウントにファイル格納フォルダへの適切な権限が付与されていないことが原因です。エクスプローラーからフォルダのセキュリティ設定を開き、SQL Serverサービスアカウントに変更またはフルコントロール権限を付与します。
データベース名の変更は構造変更作業に該当します。接続文字列や権限設定の更新が不十分な場合、予期せぬ業務停止が発生し、復旧手段がなくなる恐れがあります。環境に変更を加える前に最新のバックアップを取得するのが業界標準の手順であり、ここでi2Backupが活用できます。
i2BackupはSQL Server、Oracle、MySQLなど重要なデータベースワークロード向けに開発されたデータ保護プラットフォームです。
分散アーキテクチャと一元管理コンソールにより、複雑な環境全体のデータガバナンスを簡素化。重要な局面でSQL Serverインスタンスの安定稼働と確実な復旧を保証します。
Q1:データベース名を変更すると既存アプリの接続に影響しますか?
はい。名前変更はSQL Server内部の論理名のみ更新されるため、旧名称を記載した接続文字列、スクリプト、リンクサーバー参照は動作しなくなり、手動更新が必須です。
Q2:SQL Serverのdb_nameを変更する方法は?
ALTER DATABASE [旧名称] MODIFY NAME = [新名称];を実行してデータベース名を更新します。他ユーザーが接続中の場合は事前にシングルユーザーモードへ切り替え、ロックエラーを回避してください。
Q3:SQL Serverのテーブル名を変更する方法は?
sp_renameストアドプロシージャを使用します:EXEC sp_rename '旧テーブル名', '新テーブル名'; 注意点として、この操作はテーブル名のみ変更するため、旧テーブル名を参照するストアドプロシージャやビューは手動で修正する必要があります。
Q4:データベース名を変更するためにオフラインにする必要がありますか?
常に必要ではありません。SSMSまたはALTER DATABASEを使用する場合は、アクティブ接続がなければオフライン化せずに変更可能です。デタッチ&アタッチ方式は一時的にオフラインにする必要がありますが、物理ファイル名も同時に変更できるメリットがあります。
Q5:SQL Serverのシステムデータベース名は変更可能ですか?
いいえ。master、model、tempdbなどのシステムデータベースは名称変更に対応していません。SQL Serverの動作に必須のため、変更を試行するとエラーが発生します。
Q6:データベース名変更で.mdf/.ldfファイル名も自動的に変わりますか?
いいえ。論理名のみ更新されます。物理ファイル名を変更したい場合はデタッチ&アタッチ手法を使用し、データベースをデタッチ後ディスク上のファイル名を手動で書き換え、新名称でアタッチし直します。
Q7:データベース名の変更を元に戻せますか?
はい。ALTER DATABASE [新名称] MODIFY NAME = [旧名称];を実行するだけで復元可能です。物理ファイル名も変更した場合は再度デタッチ&アタッチ作業を実施する必要があります。
自身の環境に適した手法を選べば、SQL Serverのデータベース名変更は難しくありません。SSMSは単発で簡単に実施したい場合に適し、T-SQLはスクリプト運用や自動化に優位性があります。物理ファイル名も併せて変更する必要がある場合はデタッチ&アタッチ方式を選択します。
いずれの手法を使用する場合も、作業前に必ずデータベースのバックアップを取得し、名前変更完了後は旧名称を参照する接続文字列やスクリプトをすべて更新してください。
このようなデータベース構造変更作業の前に信頼できるバックアップソリューションをお探しなら、i2Backupが各段階でSQL Serverデータを保護し、確実な復旧を実現します。