我在Visual Studio 2013(Express for Web)中创建了一个新的ASP.NET MVC 5项目,默认情况下,该项目使用LocalDb作为其数据库, but how do you transfer or migrate the database to SQL Server?
我想将SQL Server用于数据库而不是LocalDb . 但是怎么样?
虽然这个问题很老,但答案对我没有帮助,所以我想分享一下我是如何为自己解决的 .
在Server Explorer上,找到您的ASPNet DB . 然后使用SQL Server对象资源管理器打开它 .
然后去点击 Schema Compare 选项
然后在Target数据库的Schema Compare窗口中,选择您希望ASPNet DB集成到的SQL Server数据库 . 然后点击比较按钮
取消选择目标数据库的所有删除操作,并为ASPNet DB保留所选的所有添加操作,然后单击“更新”按钮 .
最后,更新您的连接字符串,使其指向您的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提供的功能,如果有的话 . 因为Microsoft没有关于如何执行此操作的简明文档 .
更改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>
听起来您可能想将数据从本地数据库移动到SQL Server . 如果是这样,最简单的方法是备份本地数据库,然后在服务器上恢复它 .
备份: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
我有同样的问题,只是解决了这个...所以主要的一点是默认连接字符串...你需要正确修改,否则它是没有意义的..并且无法正确连接 . 因此,将所有aspnetroles ... users表复制到在线数据库(它们应该与本地数据库中的相同) . 您可以将模式(本地数据库)与实际数据库进行比较 . 这是退出很好解释"Overlord" - > Explanation
但是现在让我们正确修改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 - 应该是您的服务器端口
我花了很长时间才使它正常工作......但是这个带有默认字符串的小技巧就成了它!啤酒花有帮助
我有一个类似的问题,想要从本地数据库导出到远程数据库服务器并遇到一条错误信息,我找不到任何信息,但在阅读这篇文章时我得到了答案,所以我提交了我的答案这里以防其他人有同样的问题 .
我使用个人用户帐户设置了一个解决方案 . VS方便地创建一个db(app_Data下的mdf文件)和web.config中的连接字符串 .
在我所有的智慧中,我想:“为什么不将它移到远程服务器上?”所以我做了 .
我恢复了远程服务器上的mdf文件,用我的网站的一些简单表扩展了它,创建了一个新的数据库连接并添加了一个新的ado.net edmx文件,删除了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文件并不合适 .
解决方案:正如warheat1990建议的那样,我更新(放回)DefaultConnections及其的connectionstring值 .
有人可能会说我应该有两个单独的数据库(一个用于用户)和一个用于商业用途,但这是另一个讨论 .
关于OverLords答案,它对我来说非常有效,谢谢!
如果有人正在努力使用连接字符串:
<add name="CONNECTIONSTRINGNAME" connectionString='data source= DATABASE SOURCE initial catalog="DATABASE NAME ";user id="USERID";password=PASSWORD;MultipleActiveResultSets=True;' providerName="System.Data.SqlClient" />
您无法像这样备份LocalDB . 没有用于在那里进行备份的SSMS接口 . 您必须复制localDB的MDF文件并将其附加到SQL Server Express(或更高版本) . 然后你可以移动文件或进行备份还原 .
8 回答
虽然这个问题很老,但答案对我没有帮助,所以我想分享一下我是如何为自己解决的 .
在Server Explorer上,找到您的ASPNet DB . 然后使用SQL Server对象资源管理器打开它 .
然后去点击 Schema Compare 选项
然后在Target数据库的Schema Compare窗口中,选择您希望ASPNet DB集成到的SQL Server数据库 . 然后点击比较按钮
取消选择目标数据库的所有删除操作,并为ASPNet DB保留所选的所有添加操作,然后单击“更新”按钮 .
最后,更新您的连接字符串,使其指向您的SQL Server数据库
得到它了!
基于@ warheat1990的答案,您只需更改连接字符串即可 . 但@ warheat1990的回答有点太多变化 . 所以这是我的原始(LocalDb)连接字符串:
为了将它连接到SQL Server而不是LocalDB,我将连接字符串修改为:
感谢@ warheat1990,只需更改Web.config即可 . 我的第一个想法是识别和使用VS提供的功能,如果有的话 . 因为Microsoft没有关于如何执行此操作的简明文档 .
更改web.config中的connectionString
到您自己的数据库connectionString,例如:
听起来您可能想将数据从本地数据库移动到SQL Server . 如果是这样,最简单的方法是备份本地数据库,然后在服务器上恢复它 .
备份: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
我有同样的问题,只是解决了这个...所以主要的一点是默认连接字符串...你需要正确修改,否则它是没有意义的..并且无法正确连接 . 因此,将所有aspnetroles ... users表复制到在线数据库(它们应该与本地数据库中的相同) . 您可以将模式(本地数据库)与实际数据库进行比较 . 这是退出很好解释"Overlord" - > Explanation
但是现在让我们正确修改defaultconnection字符串这是我修改前的默认字符串:
这是我修改后的修改后的默认字符串:
servername - 应该是你的服务器 . portnumber - 应该是您的服务器端口
我花了很长时间才使它正常工作......但是这个带有默认字符串的小技巧就成了它!啤酒花有帮助
我有一个类似的问题,想要从本地数据库导出到远程数据库服务器并遇到一条错误信息,我找不到任何信息,但在阅读这篇文章时我得到了答案,所以我提交了我的答案这里以防其他人有同样的问题 .
我使用个人用户帐户设置了一个解决方案 . VS方便地创建一个db(app_Data下的mdf文件)和web.config中的连接字符串 .
在我所有的智慧中,我想:“为什么不将它移到远程服务器上?”所以我做了 .
我恢复了远程服务器上的mdf文件,用我的网站的一些简单表扩展了它,创建了一个新的数据库连接并添加了一个新的ado.net edmx文件,删除了web.config中的“DefaultConnection”和在ApplicationDBContext中更新了对我的新连接的引用 .
按下游戏,然后......没有sigar(当试图登录时) .
事实证明IdentityDbContex更喜欢带有providerName =“System.Data.SqlClient”的“DefaultConnection”,因此添加一个带有providerName =“System.Data.EntityClient”的新edmx文件并不合适 .
解决方案:正如warheat1990建议的那样,我更新(放回)DefaultConnections及其的connectionstring值 .
有人可能会说我应该有两个单独的数据库(一个用于用户)和一个用于商业用途,但这是另一个讨论 .
关于OverLords答案,它对我来说非常有效,谢谢!
如果有人正在努力使用连接字符串:
您无法像这样备份LocalDB . 没有用于在那里进行备份的SSMS接口 . 您必须复制localDB的MDF文件并将其附加到SQL Server Express(或更高版本) . 然后你可以移动文件或进行备份还原 .