web-dev-qa-db-ja.com

デタッチ後にSqlExpressデータベースを同じデータベースサーバーに再アタッチできませんか?

これは少し奇妙に思われます。テスト環境でデータベースをあるサーバー(SqlExpress)から別のサーバー(フルSqlServer)に移行しました。最初のサーバーからデータベースを切り離し、mdfファイルとldfファイルをコピーしてから、それらを新しいサーバーに接続しました。それはうまくいきましたが、パフォーマンスの低下がいくつかあります。したがって、速度とおそらくは実行計画に関していくつかの比較を行いたいと思います。ここで問題が始まります

元のサーバー(SQLExpress)に残した元のデータベースを再接続することはできません。デタッチされたため、何もしませんでした。そうするまで、それは魅力のように機能しました。

しかし、元のデータベースサーバー(Sql Express)に接続したい場合、次のメッセージが表示されます。

結果の累積データベースサイズがデータベースごとのライセンス制限の10240 MBを超えるため、CREATE DATABASEまたはALTER DATABASEが失敗しました。 (.Net SqlClientデータプロバイダー)

悲しいことに、これはパーティーの真実であり、データベースのサイズは10,911,616 KB(ログの場合は1,024 KB)です。切り離した後は何もせず、それまでは動作していたので、正直なところ、私は困惑しています。

しかし、私は非常に確信しています、そのデータベース内にはたくさんの空き容量があります(約9GB程度)

したがって、これは3つの部分からなる質問です。

  1. この問題につながる可能性のある状況を誰かが私に指摘することはできます(データベースはまったく同じサーバーで動作していて、デタッチされ、変更されていません(少なくとも私は)、その後再アタッチできませんか?
  2. 実際にアタッチせずにmdfファイル内のスペースを解放する方法はありますか?
  3. または新しい(フル)SqlServerにすでにアタッチされているデータベースを取得し、サイズを縮小してからSQLExpressにアタッチすることは可能ですか?(またはフルSqlServerにアタッチすると、前述の形式が変更されますSqlExpressで使用できないmdfファイル?)

その他のサーバー情報:

  • 新しいデータベースサーバーのバージョンはMicrosoft SQL Server 2012(SP1)-11.0.3128.0(X64)
  • 古いデータベースサーバーのバージョンはMicrosoft SQL Server 2008 R2(RTM)-10.50.1600.1(X64)
  • データベースは互換性レベルで実行されていますSQL Server 2008(100)
2
DrCopyPaste
  1. この問題につながる可能性のある状況をデータベースに指摘することはできますか(まったく同じサーバー上でデータベースが動作し、接続が解除され、変更されず(少なくとも私は)、その後再接続できない)。

2つの問題があります。

  1. 「古い」サーバーは2008R2で、新しいサーバーは2012です。したがって、@ sepupicが述べたように、2012から2008R2にデータベースをアタッチすることはできません。
  2. 10Gbsの制限を超えています

何をすべきか:

  • SQL Server 2012より上位のエディションのSQL Express(またはそれ以上)にDBを接続します
  • そこからSQL Server 2008R2にデータをエクスポートします(2008R2バージョンを実行する必要がある場合)
  1. 実際に添付せずにmdfファイル内のスペースを解放する方法はありますか?

実際には必要ありません。私はそのような方法を知りません。

  1. または、新しい(フル)SqlServerに既に接続されているデータベースを取得し、サイズを縮小してからSQLExpressに接続することは可能でしょうか? (または、完全なSqlServerにアタッチすると、mdfファイルの形式がSqlExpressで使用できないように変更されますか?)

SQL Server 2012 Expressで作業する場合は、それを行うことができます。いいえ-形式は変更されません。

2
George K