SQL Server には アタッチ/デタッチ という機能がある。実は、先日まで知らなかった。

どういうものかというと、SQL Server が管理しているデータベースをデタッチすると、そのSQL Server の管理下から外れる。アタッチすると、SQL Server の管理下に属する。
あるサーバーのSQL Server で稼働しているデータベースをデタッチし、実体である mdf/ldfファイルをコピーし、別のサーバーのSQL Server でアタッチすれば、そのまんま使える。

これまで私は master とかでデータベースを管理しているものだと信じ込んでいた。が、こういう事が可能である、ということは、各データベース内に管理情報を持っている、ということになる。

こういうことができるなら、といろいろと運用上便利に使えることがある。例えば、データベースのフルバックアップをコピーし持ち運ぶには容量的に厳しい場合、テンポラリのデータベースを作り、必要なテーブルだけコピーしてデタッチする。そうすれば持ち運び可能なサイズにできる可能性も高い。

ただ、バージョン間での互換はないようだ。



もう一つおまけ。Visual Studio などの言語からは、SQL Server のデータベースに直接アクセスできるようだ。定義ファイルや参照ファイルをDBにしたい場合などには便利だろう。