Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将ASP.NET MVC数据库从LocalDb传输到SQL Server?_Sql Server_Asp.net Mvc_Database_Localdb - Fatal编程技术网

Sql server 如何将ASP.NET MVC数据库从LocalDb传输到SQL Server?

Sql server 如何将ASP.NET MVC数据库从LocalDb传输到SQL Server?,sql-server,asp.net-mvc,database,localdb,Sql Server,Asp.net Mvc,Database,Localdb,我在Visual Studio 2013(Express for Web)中创建了一个新的ASP.NET MVC 5项目,默认情况下,该项目使用LocalDb作为其数据库,但是如何将数据库传输或迁移到SQL Server? 我想对数据库使用SQL Server,而不是LocalDb。但是如何更改呢?在web.config中更改connectionString <connectionStrings> <add name="DefaultConnection" conn

我在Visual Studio 2013(Express for Web)中创建了一个新的ASP.NET MVC 5项目,默认情况下,该项目使用LocalDb作为其数据库,但是如何将数据库传输或迁移到SQL Server?


我想对数据库使用SQL Server,而不是LocalDb。但是如何更改呢?

在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>

到您自己的数据库连接字符串,例如:

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

听起来您可能想将数据从本地数据库移动到sql server。如果是这样,最简单的方法是备份本地数据库,然后在服务器上恢复它

要备份:

要恢复:

编辑:

如果需要安装SQL Server实例,请执行以下操作: 明白了

根据@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"/>

为了将其连接到SQL Server而不是LocalDB,我将连接字符串修改为:

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


感谢@warheat1990提出了只需更改Web.config的想法。我的第一个想法是确定并使用VS提供的功能(如果有的话)。因为微软没有一份关于如何做到这一点的简明文档。

尽管这个问题很老,但答案对我没有帮助,所以我想分享一下我自己是如何解决这个问题的

在服务器资源管理器上,找到您的ASPNet数据库。然后使用SQL Server对象资源管理器打开它

然后点击模式比较选项

然后在目标数据库的模式比较窗口中,选择希望ASPNet DB集成到的SQL Server数据库。然后点击比较按钮

取消选择目标数据库的所有删除操作,并保留选择的ASPNet DB的所有添加操作,然后点击更新按钮


最后,更新连接字符串,使其指向SQL Server DB。我遇到了同样的问题,刚刚解决了这个问题。因此,主要问题是默认连接字符串。您需要正确修改它,否则它将毫无意义。并且无法正确连接。所以,将您的所有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" />

这是我修改后的默认字符串:

 <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-应该是您的服务器。 端口号-应该是您的服务器端口

我花了很长时间才让它正常工作……但这个使用默认字符串的小把戏成功了!
Hops this helps

我有一个类似的问题,想从本地数据库导出到远程数据库服务器,遇到了一条错误消息,我找不到任何相关信息,但在阅读本文时我得到了答案,所以我在这里提交我的答案,以防其他人有同样的问题

我用个人用户帐户设置了一个解决方案。VS在web.config中方便地创建了一个db(App_Data下的mdf文件)和一个connectionstring

在我的智慧中,我想:“为什么不把它移到远程服务器上呢?”于是我就这么做了

我在远程服务器上还原了mdf文件,用一些简单的表格为我的网站进行了扩展,创建了一个到db的新连接,并添加了一个新的ado.net edmx文件,删除了web.config中的“DefaultConnection”,并在ApplicationDBContext中更新了对我的新连接的引用

按播放,然后。。。无sigar(尝试登录时)

事实证明,IdentityDbContex更喜欢带有providerName=“System.Data.SqlClient”的“DefaultConnection”,因此添加带有providerName=“System.Data.EntityClient”的新edmx文件是不好的

解决方案:正如warheat1990所建议的,我更新(放回)了DefaultConnections及其connectionstring值


有人可能会说,我应该有两个独立的数据库(一个用于用户),一个用于业务,但这是另一个讨论。

关于霸王回答,它对我来说非常有效,谢谢

如果有人正在使用连接字符串,请使用:

    <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" />

这对我很有用。。 更改web配置文件中指向数据库服务器的连接字符串,然后运行应用程序并注册用户。成功注册后,转到SSMS并刷新数据库,然后应显示标识表


作为

霸王移民的例子是非常恰当的。最后我的注释对于注释来说有点大,因此下面是对web.config文件所需的更改。本地驱动器上的旧方法是指定

Data Source=".\[InstanceName]
但可能无法在较新的接口上工作,因此如果向前迁移,请将[.\instance]替换为[ComputerName\instance]。这是Visual Studio Pro 2017、SQL Server 2014和实体框架6.0

首先更新连接字符串。。将括号中的项目替换为连接到数据库所需的信息

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

下一步更新实体信息。。用于SQL Server的[InstanceName]可以在[SQL Server管理]控制台-[Server属性]-[Advanced]-[Filestream共享名]中找到,默认为[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]之间

这是1db服务器的默认值

<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">

LocalDB
是面向开发人员的SQL Server版本……谢谢!但是你的代码不起作用。VS表示“数据源”密钥无法识别