web-dev-qa-db-ja.com

LocalDbからSQL ServerにASP.NET MVCデータベースを転送する方法は?

Visual Studio 2013(Express for Web)で新しいASP.NET MVC 5プロジェクトを作成しました。デフォルトでは、プロジェクトはデータベースとしてLocalDbを使用しますが、データベースをどのように転送または移行しますかSQL Server?

LocalDbの代わりにデータベースにSQL Serverを使用します。しかし、どのように?

33
doncadavona

とった!

@ warheat1990の回答に基づいて、接続文字列を変更するだけです。しかし、@ warheat1990の答えは、あまりにも大きな変化がありました。だから、ここに私の元の(LocalDb)接続文字列があります:

<add name="DefaultConnection"
     connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-my_project-20150318100658.mdf;Initial Catalog=my_project-20150318100658;Integrated Security=True"
     providerName="System.Data.SqlClient"/>

LocalDBではなくSQL Serverに接続するために、接続文字列を次のように変更しました。

<add name="DefaultConnection"
     connectionString="Data Source=SERVERNAME\SQLEXPRESS;Initial Catalog=my_project;Integrated Security=True"
     providerName="System.Data.SqlClient"/>

Web.configを単に変更するというアイデアについて@ warheat1990に感謝します。最初に考えたのは、VSが提供する機能があればそれを特定して使用することでした。Microsoftにはこれを行う方法に関する簡潔なドキュメントがない

21
doncadavona

この質問は古くても、答えは役に立たなかったので、自分で解決した方法を共有したいと思います。

サーバーエクスプローラーで、ASPNet DBを見つけます。次に、SQL Serverオブジェクトエクスプローラーを使用して開きます。

enter image description here

次に、Schema Compareオプションを押します

Compare Schemas

次に、ターゲットデータベースの[スキーマ比較]ウィンドウで、ASPNet DBを統合するSQL Serverデータベースを選択します。次に、比較ボタンを押します

Set Options

ターゲットデータベースのすべての削除アクションを選択解除し、ASPNet DBのすべての追加アクションを選択したままにして、[更新]ボタンをクリックします。

Update

最後に、SQL Server DBを指すように接続文字列を更新します

39
Overlord

Web.configのconnectionStringを変更します

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-KlikRX-20141203034323.mdf;Initial Catalog=aspnet-Test-20141203034323;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

独自のデータベースconnectionStringに、たとえば:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=7.7.7.7\sql;Initial Catalog=TestDB;User ID=sa;Password=sa" />
  </connectionStrings>
6
warheat1990

ローカルデータベースからSQLサーバーにデータを移動したいようです。その場合、これを行う最も簡単な方法は、ローカルデータベースをバックアップしてから、サーバーに復元することです。

バックアップするには: https://msdn.Microsoft.com/en-us/library/ms187510.aspx#SSMSProcedure

復元するには: https://msdn.Microsoft.com/en-us/library/ms177429.aspx

編集:

SQL Serverのインスタンスをインストールする必要がある場合: https://msdn.Microsoft.com/en-us/library/ms143219.aspx

3
Brennan Pope

私は同じ問題を抱えていて、これを解決しました...したがって、主なポイントはデフォルトの接続文字列です...あなたは正しく変更する必要があります。そうでなければ、無意味です..正しく接続することは不可能ですaspnetroles ... usersテーブルをすべてオンラインデータベースにコピーします(ローカルデータベースと同じように見えるはずです)。スキーマ(ローカルデータベース)と実際のデータベースを比較できます。 「オーバーロード」-> 説明

しかし、その後、defaultconnection文字列を正しく変更できるようになりました。これが変更前のデフォルトの文字列です。

 <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-track_spa-20180502025513.mdf;Initial Catalog=aspnet-track_spa-20180502025513;Integrated Security=True" providerName="System.Data.SqlClient" />

それは変更後の私の変更されたデフォルト文字列です:

<add name="DefaultConnection" connectionString="Data Source=servername,portnumber;Initial Catalog=AttendanceTrak;Integrated Security=False;User Id=****;Password=*****;Encrypt=True;TrustServerCertificate=False;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

servername-サーバーにする必要があります。 portnumber-サーバーのポートである必要があります

ようやく適切に機能するようになるまでに何年もかかりました...しかし、このデフォルトの文字列を使った小さなトリックでうまくいきました!これが役立つことを願っています

0

オーバーロードの移行の例が注目されています。最後に私のコメントはコメントのために少し大きかったので、web.configファイルに必要な変更を以下に示します。ローカルドライブでの古い方法は、指定することでした

Data Source=".\[InstanceName]

新しいインターフェイスでは動作しない可能性があるため、前方に移行する場合は[。\ instance]を[ComputerName\instance]に置き換えてください。これは、Visual Studio Pro 2017、SQL Server 2014、およびEntity Framework 6.0です。

接続文字列を最初に更新します。括弧内の項目をデータベースに接続するために必要な情報に置き換えます。

<connectionStrings>
   <add name="DefaultConnection" 
    connectionString="Initial Catalog=[DatabaseName];Integrated Security=True;User ID=[SQLASPNETUserName];Password=[UserPassword];"
    providerName="System.Data.SqlClient" />
</connectionStrings>

次にエンティティ情報を更新します。SQLServerに使用される[InstanceName]は、[SQL Server Mgmt]コンソール-[サーバーのプロパティ]-[詳細]-[ファイルストリーム共有名]から見つけることができます。デフォルトは[MSSQLSERVER]です。

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
     <parameters>
        <parameter value="[ServerName]\[InstanceName]"/>
     </parameters>
  </defaultConnectionFactory> 
  <providers>
     <provider invariantName="System.Data.SqlClient" 
      type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
  </providers>
</entityFramework>

クラウドまたは他のマルチサーバーデータベース移行の場合、web.configの[sessionState]設定も確認し、[InProc]を[Custom]に置き換えます。 [sessionState]は[/ roleManager]と[/system.web]の間にあります

1 dbサーバーのこのデフォルト

<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider"
      type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      connectionStringName="DefaultConnection"/>
  </providers>
</sessionState>

&マルチサーバーまたはクラウド環境向けのこの置き換え

<sessionState mode="Custom" customProvider="DefaultSessionProvider">
0
Joseph Poirier

これは私のために動作します。正常に登録されたら、SSMSに移動してデータベースを更新すると、IDテーブルが表示されます。

よろしく

0
Edward Hecucent

OverLordsの回答に関連して、私にとっては完璧に機能しました。

誰かが接続文字列で苦労している場合:

    <add name="CONNECTIONSTRINGNAME" connectionString='data source= DATABASE SOURCE initial catalog=&quot;DATABASE NAME &quot;;user id=&quot;USERID&quot;;password=PASSWORD;MultipleActiveResultSets=True;' providerName="System.Data.SqlClient" />
0
JackB

同様の問題があり、ローカルデータベースからリモートデータベースサーバーにエクスポートしようとして、情報が見つからないというエラーメッセージが表示されましたが、この投稿を読んだときに答えが返ってきたので、回答を送信しています他の人が同じ問題を抱えている場合に備えて。

個人ユーザーアカウントを使用してソリューションをセットアップしました。 VSは、web.configにdb(App_Dataの下のmdfファイル)と接続文字列を便利に作成します。

私のすべての知恵で、「これをリモートサーバーに移動してみませんか?」だから私はやった。

リモートサーバーにmdfファイルを復元し、Webサイト用のいくつかの簡単なテーブルで展開し、dbへの新しい接続を作成し、新しいado.net edmx-fileを追加し、web.configの「DefaultConnection」を削除し、 ApplicationDBContextの新しい接続への参照を更新しました。

押されたプレー、および... sigarはありません(ログインしようとしたとき)。

The entity type IdentityUserLogin is not part of the model for the current context.

IdentityDbContexはproviderName = "System.Data.SqlClient"を含む "DefaultConnection"を優先するため、providerName = "System.Data.EntityClient"を使用して新しいedmx-fileを追加するのは適切ではありません。

解決策:warheat1990が示唆したように、DefaultConnectionsとその接続文字列値を更新(プットバック)しました。

2つの個別のデータベース(1つはユーザー用)と1つはビジネス用のものを用意する必要があると主張するかもしれませんが、それは別の議論です。

0
hormberg