none
SQL Server 2014 のデータベース保存場所の変更 RRS feed

  • 質問

  • SQL Server 2014 Expressを使っています。データベースファイルの作成場所を移動しようと、SQL Server Management Studioから(local)\mssqllocaldbのプロパティを開き、「データベースの設定」から「データベースの既定の場所」を編集した(編集は可能になっています)のですが、

    「設定:'Microsoft.SqlServer.Management.Smo.ObjectKeyBase'のAlterに失敗しました。」

    のエラーメッセージが出て移動できません。

    移動できる(と思われる)データ、ログ、バックアップのフォルダ変更の方法をご存知の方がおられればお教えいただけるようお願いします。

    2014年11月10日 1:12

すべての返信

  • データベース全体であれば以下にも書かれている通り、デタッチして移動させてからアタッチすれば可能ですが、ログだけ別とかそういう話になるとGUIではできないようです。以下の記事はSQL Server 2014についてではないと思われますが、軽く調べた限り、おそらくSQL Server 2014でもその辺りの事情は変わってないように思います。

    (参考)
    SQLSERVER 物理ファイルを移動する(mdf、ldf)
    http://d.hatena.ne.jp/uyan39/20121023/1351001840

    バックアップのフォルダはバックアップの設定をする際に指定しますから、そこで変更することができるはずです。

    (追記)
    >Management Studioから(local)\mssqllocaldbのプロパティを開き、「データベースの設定」から「データベースの既定の場所」を編集した(編集は可能になっています)

    すみません。SQL Server 2008には上記の項目が無いようです。SQL Server 2014は少し事情が違うのかもしれません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 編集済み trapemiya 2014年11月10日 1:59 追記
    2014年11月10日 1:42
  • 一度backupしてから

    Restore <データベース名>

    from disk='<バックアップファイル名>'

    WITH

     MOVE '<データの論理名>' TO '<格納先のパス>\<データのファイル名>'

    ,MOVE '<ログの論理名>' TO '<格納先のパス>\<ログのファイル名>'

    でrestoreされたら如何でしょうか?

    2014年11月10日 7:15
  • お二方、返信をありがとうございます。

    デフォルトで作成される位置を、「データベースの既定の場所」で変更できるかと思っていたので、勢いあまってSQL Server 2014 Expressの再インストールまでしましたが、やはり編集しても元の値に戻ってしまいます。

    とりあえずは作成してから場所換え。で対応しようと思います。

    2014年11月12日 4:57
  • あ~、質問文をよく読むと、インスタンス名がmssqllocaldbになっていますから、LocalDBなんですね。であれば、物理的にデータベースファイル(mdfファイル)を移動し、以下のようにapp.configを変更すればVisual Studioで認識できるようになります。

    Change default location of LocalDb
    http://stackoverflow.com/questions/12043975/change-default-location-of-localdb

    LocalDBは通常のSQL Serverとは異なります(互換性はあります)が、ご存じでしょうか? 一応、以下をご紹介しておきます。

    SQL Server 2014 Express LocalDB
    http://msdn.microsoft.com/ja-jp/library/hh510202.aspx

    #ご質問は、「データベースの既定の場所」を変更されたいようですが、とりあえず、上記のようにして目的が達成できませんでしょうか?
    LocalDBの既定の作成場所は、以下を読むと、ユーザープロファイルのフォルダのルートのようです。

    LocalDB: Where is My Database?
    http://blogs.msdn.com/b/sqlexpress/archive/2011/10/28/localdb-where-is-my-database.aspx

    この場所は、LocalDBのインスタンスを作成するSqlLocalDBユーティリティのCREATEのオプションを見ても用意されていないことから、変更できないように思われます。

    SqlLocalDB ユーティリティ
    http://msdn.microsoft.com/ja-jp/library/hh212961.aspx

    #追記
    >この場所は、LocalDBのインスタンスを作成するSqlLocalDBユーティリティのCREATEのオプションを見ても用意されていないことから、変更できないように思われます。

    と書きましたが、上記の「LocalDB: Where is My Database?」に、以下のように書かれていますね。

    --- 引用開始 --------------------------

    Given that user profile folder is likely not the best location to store database files, we advise developers creating databases to always specify the location for the database files, like in this T-SQL example:

    create database foo on (name='foo', filename='c:\DBs\foo.mdf')

    --- 引用終了 --------------------------

    #追記2
    > like in this T-SQL example:
    と書かれているので、SqlLocalDB ユーティリティじゃ無理っぽいかな? MSDNにもそんなこと書かれていないし。試してなくてごめんなさい。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/



    • 編集済み trapemiya 2014年11月13日 4:57 追記2
    • 回答の候補に設定 星 睦美 2014年11月14日 4:19
    2014年11月13日 4:46