web-dev-qa-db-ja.com

バージョン852なので開くことができません。このサーバーはバージョン782以前をサポートしています

Visual Studio 2017とSQL Server 2014を使用しています。データベースファイルをVisual Studioにアタッチすると、次のエラーが表示されます。

" Adding database connection "

ファイルをアップグレードした後、この接続文字列を使用しました

<connectionStrings>
    <add name="con" 
         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\binaaelmamorra.mdf;Integrated Security=True;Connect Timeout=30"/>
</connectionStrings>

私のマシンでは問題なく動作していますが、クライアントマシンではエラーがポップアップ表示されます

バージョン852であるため開くことができません。このサーバーはバージョン782以前をサポートしています

クライアント側にSQL Server 2016ローカルDBをインストールしましたが、それを取り除くことはできません。

2番目の質問は、データベースファイルと互換性のないSQL Serverの現在のインスタンスは何ですか?

Pic 1enter image description here

10
Bilal Ahmed

マシンにさまざまなバージョンのSQL Serverのインスタンスが複数あるようです。

「本格的な」バージョン(Express以降)の場合、SQL Server Configuration Managerを見ると、それらのバージョンを確認できます。

SQL Serverの「LocalDB」バージョン(開発者向けバージョン)の場合、sqllocaldbコマンドラインツールを使用できます。

このコマンドを使用して、マシン上にあるものの概要を取得します。

C:\> sqllocaldb i

MSSQLLocalDB
v11.0

次に、detailsコマンドを使用して個々のインスタンスを確認できます。

C:\> sqllocaldb i mssqllocaldb

Name:               mssqllocaldb
Version:            13.1.4206.0
Shared name:
Owner:              MSE-PC-02\Marc
Auto-create:        Yes
State:              Stopped
Last start time:    27.08.2017 12:24:45
Instance pipe name:


C:\> sqllocaldb i v11.0
Name:               v11.0
Version:            11.0.3000.0
Shared name:
Owner:              MSE-PC-02\Marc
Auto-create:        Yes
State:              Stopped
Last start time:    26.08.2017 15:41:18
Instance pipe name:

したがって、これは、使用可能なSQL Server LocalDBのインスタンスがtwoあることを示します-mssqllocaldbはバージョン13.1(SQL Server 2016)ですが、 v11.0インスタンスはバージョン11.0(SQL Server 2012)です。

したがって、.mdfファイルをこれらの2つのインスタンスのいずれかに添付する場合は、必要なバージョンで動作させるために正しいものを選択するだけです。また、データベースファイルを新しいバージョンのSQL Server(2016-内部DBバージョン852など)に「アップグレード」すると、[〜#〜] never [〜#〜]戻ることができます-これらのバイナリファイルを古いバージョンのSQL Serverに取得するためのデタッチ/アタッチ、バックアップ/復元、またはその他の方法はありません。新しいデータベースファイルの構造(および場合によってはデータ)を.sqlファイルにスクリプト化して、古いバージョンで実行する必要があります。

6
marc_s

バージョン852はSQL Server 2016、バージョン782はSQL Server 2014です。バージョンの適切なリファレンスは このMicrosoftページ にあります。

説明に基づいて、これはバージョン782 DBである必要があります。バージョン852 DBであるため、これはSQL Server 2014ではなくSQL Server 2016を使用してアップグレードされたことを意味します。したがって、ローカル/開発マシンで実行されているSQL Serverのすべてのバージョンをチェックし、SQL Server 2014のみがVS 2017によって(潜在的に)SQL Server 2016がインストールされていません。

さらに、エンドユーザーのバージョンは2016年ではなく2014年のようです。現在のDBがSQL Server 2014モードのDBである場合、これは潜在的に問題です。 DBに接続する前に、TempDBに明示的に接続してみてください。 (注:2014/2016の非互換性に遭遇したとき、これは私がしなければならなかったことですが、実際の問題が何であったか思い出せません。)

4
Laughing Vergil

プロジェクトでクライアントマシンにアタッチできるSQL Server 2014データベースを生成する場合は、マシンにサーバーのインスタンスを作成する必要があります。これを行うには、管理者モードでコマンドラインを開き、コマンド「sqllocaldb create v12.0 12.」を入力します。これにより、SQL Server 2014バージョン12.0で「v12.0」というサーバーインスタンスが作成されます。

サーバーがまだ起動していない場合は、コマンド "sqllocaldb start v12."を使用してサーバーを起動する必要があります。

次に、conectionStringを次のように変更する必要があります。

<connectionStrings>
    <add name="con" 
         connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\binaaelmamorra.mdf;Integrated Security=True;Connect Timeout=30"/>
</connectionStrings>

たぶん、あなたはapp.configにいくつかのパラメータを入れています

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
</defaultConnectionFactory>
2
Renat Baratov

私の場合、最新バージョンのVisual Studioを使用してエンティティフレームワークコードファーストテクニックでデータベースを更新した後、古いバージョンでプロジェクトを実行しようとすると、この例外が示されました。データベースを削除し、コマンドUpdate-Database -verbose -verboseフラグを再実行するだけで、実行されたコマンドを確認できます。

0
Jamshaid Kamran