none
データベースを高速にオフラインにする方法はあるでしょうか? RRS feed

  • 質問

  • いつもお世話になっております。

    SQL Server 2008 R2 stdでデータベースをオフラインにしてバックアップを取ろうと思うのですが、

    オフラインにすること自体に時間がかかっています。DBへのコネクションを強制切断して素早くオフラインにする方法は無いでしょうか?

    データベースへのアクセスが存在しても更新が無いことは保証されています。

    どなたかご存知であればご教授頂けると幸いです。

    以上です。よろしくお願い致します。

    2013年11月12日 7:20

回答

  • DBへのコネクションを強制切断するのであれば、ユーザーからの接続を処理しているプロセスをKILLしてしまうという手があります。
    ただしかなり乱暴な手法ですので、お勧めはしません。
    http://technet.microsoft.com/ja-jp/library/ms173730(v=sql.105).aspx

    なお蛇足ながら、バックアップは要件にも依りますが以下にあるとおり一般的にはオンラインバックアップがお勧めです。
    http://support.microsoft.com/kb/949060/ja
    http://d.hatena.ne.jp/matu_tak/20091210/1260408212

    ご参考まで。


    MCITP(Database Developer/Database Administrator)

    2013年11月18日 6:55
  • WITH ROLLBACK IMMEDIATE オプションを付けて、

    ALTER DATABASE database-name SET OFFLINE WITH ROLLBACK IMMEDIATE

    とか。

    あるいは、WITH NO_WAIT オプションを付けて、

    ALTER DATABASE database-name SET OFFLINE WITH NO_WAIT

    とか。

    2013年11月26日 8:31

すべての返信

  • DBへのコネクションを強制切断するのであれば、ユーザーからの接続を処理しているプロセスをKILLしてしまうという手があります。
    ただしかなり乱暴な手法ですので、お勧めはしません。
    http://technet.microsoft.com/ja-jp/library/ms173730(v=sql.105).aspx

    なお蛇足ながら、バックアップは要件にも依りますが以下にあるとおり一般的にはオンラインバックアップがお勧めです。
    http://support.microsoft.com/kb/949060/ja
    http://d.hatena.ne.jp/matu_tak/20091210/1260408212

    ご参考まで。


    MCITP(Database Developer/Database Administrator)

    2013年11月18日 6:55
  • フォーラム オペレーターの星 睦美です。
    nagino - 引退エンジニア さん、アドバイスありがとうございます。

    SQLServer2008R2_Standard さん、
    質問の参考にしていただけたのでないかと思いますので、私のほうでnagino さんの返信を[回答の候補に設定] しました。ユーザー同士の情報交換がより盛んになりますように、役立つ回答には投稿者からの[回答としてマーク]をお願いします。

    今後ともSQL Server フォーラムをお役立てください。


    フォーラム オペレーター 星 睦美 - MSDN Community Support


    • 編集済み 星 睦美 2013年11月22日 6:34 改行
    2013年11月22日 6:33
  • ご回答ありがとうございます。

    やはりコネクション強制切断しかないのですね。

    別のコネクションからキャンセルクエリを送るといったことができればよかったのですが…

    もともとオンラインバックアップがあまりにも遅いので、オフライン取得を検討していました。

    現状お手上げ状態なので、もう少し試行錯誤してみます。

    アドバイスありがとうございます。

    2013年11月26日 1:13
  • WITH ROLLBACK IMMEDIATE オプションを付けて、

    ALTER DATABASE database-name SET OFFLINE WITH ROLLBACK IMMEDIATE

    とか。

    あるいは、WITH NO_WAIT オプションを付けて、

    ALTER DATABASE database-name SET OFFLINE WITH NO_WAIT

    とか。

    2013年11月26日 8:31
  • なちゃ様

    アドバイスありがとうございます!

    No_waitは試したことがありますが、WITH ROLLBACK IMMEDIATEはまだ試したことがないので、

    検証してみます。

    ありがとうございます!

    2013年12月2日 9:26