SQL Serverでデータベースファイルを添付しようとしています。以下のエラーが表示されます。 Visual Studioからデータベースをアタッチしようとしているときにも同じエラーが発生します。 Visual Studio 2013とSQL Server 2014 Management Studioを使用しています。
私の接続文字列:
<add name="Sample"
connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\M\Desktop\SampleApplication1\App_Data\Sample.mdf;Initial Catalog=SampleDBContext;Integrated Security=True;"
providerName="System.Data.SqlClient"/>
エラー:
データベース 'sample'はバージョン851であるため開くことができません。このサーバーはバージョン782以前をサポートしています。ダウングレードパスはサポートされていません。新しいデータベース「サンプル」を開けませんでした。 CREATE DATABASEは中止されます。
visual Studioで設定されるデフォルトのSQL Serverインスタンスは次のとおりです。
あなたは[〜#〜]できません[〜#〜]これを行います-新しいバージョンからデータベースをアタッチ/デタッチまたはバックアップ/復元することはできませんSQL Serverの旧バージョンまで-内部ファイル構造があまりにも異なるため、後方互換性をサポートできません。明らかに、データベースはSQL Server 2016プレリリース(内部バージョン:852)のものですが、接続しようとしているエンジンはSQL Server 2014(内部バージョン:782)です。
この問題を回避するには
すべてのマシンで同じバージョンのSQL Serverを使用する-インスタンス間でデータベースを簡単にバックアップ/復元できる
それ以外の場合は、SQL Server Management Studioのいずれかの構造(テーブル、ビュー、ストアドプロシージャなど)とコンテンツ(テーブルに含まれる実際のデータ)の両方のデータベーススクリプトを作成できます(Tasks > Generate Scripts
)またはサードパーティのツールを使用
または、Red-Gateの SQL Compare および SQL Data Compare などのサードパーティツールを使用して、ソースとターゲットの「差分」を実行し、それらの差分から更新スクリプトを生成できます。 、そしてターゲットプラットフォームでそれらのスクリプトを実行します。これは、異なるSQL Serverバージョン間で機能します。
古い Pluralsight MVC4チュートリアル を実行しているときにこの問題が発生していました。
コースではv11.0を使用するように求められましたが、2015バージョンを実行していました。 SQL Serverオブジェクトエクスプローラーを開き、さまざまなバージョンのLocalDBを確認して、データベースが含まれているバージョンの名前を取得しました([名前の変更]を右クリックします)。
次に、「接続の追加」ウィンドウの「サーバー名」の下に名前を貼り付けました。 [更新]をクリックすると、出来上がりです。これが誰にも役立つことを願っています。
この Microsoftリンク は、Visual Studio 2015を実行しているときにこのエラーが表示される場合に問題を解決する可能性があります。上記の回答は回答の一部です。 (megamaiku)データベースのマウント/アクセスに問題がないと仮定すると、Mark_Sからの「スクリプトの生成」の回答は機能します。 SQL Compareはかなり高価ですが、Visual Studioアプリケーションで作成されたデータベースをマウントできると仮定すると、これは素晴らしいソリューションです。
バージョンの問題として852/856が表示されることを除いて、Visual Studio 2017とSQL Server 2017でも同様の問題が発生します。
データベースを移動した後、web.config connectionStringをサーバーに合わせて変更します。 (localdb)\ MSSQLLocalDBまたは実行しているものに応じてローカルホスト(SQL 2016/2017/2019)。
<add name="DefaultConnection"
connectionString="Data Source=(localdb)\MSSQLLocalDB;myDB.mdf;Initial Catalog=MyDBName;Integrated Security=True"
providerName="System.Data.SqlClient"/>
OR
<add name="DefaultConnection"
connectionString="Data Source=localhost;myDB.mdf;Initial Catalog=MyDBName;Integrated Security=True"
providerName="System.Data.SqlClient"/>
古い記事では、データベースからピースを一度に1つずつ取り出す方法について説明しています。運が良ければ、それでも動作します(10年前に行った-分離してからパーツを元に戻します)。必要-新しいバージョンを古いバージョンに復元します。私はトリックへの参照を見つけることができませんが、データベース全体のスクリプトを作成するのではなく、ヘッダーを復元してヘッダーを復元することで復元する方法があります(ヘッダーのみを復元します)一致している場合は、新しいバックアップからそのデータベースを復元できます。
ただし、生成スクリプトは複雑でなく、人気があります。