Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 重命名SQL Server数据库和MVC5_Sql Server_Entity Framework_Visual Studio_Model View Controller - Fatal编程技术网

Sql server 重命名SQL Server数据库和MVC5

Sql server 重命名SQL Server数据库和MVC5,sql-server,entity-framework,visual-studio,model-view-controller,Sql Server,Entity Framework,Visual Studio,Model View Controller,出于不值得深入探讨的原因,我不得不重命名一个ASP.NET MVC项目正在使用的Microsoft SQL Server数据库。我认为,在MVC方面,这与更改web.config中的连接字符串一样微不足道。唉,没有 数据库名称从myproject.MODELS.OSESDBCONTEXT转到myproject 因此,我更改了web.config中的默认连接块以反映这一点,在其他条件相同的情况下: <defaultConnectionFactory type="Syste

出于不值得深入探讨的原因,我不得不重命名一个ASP.NET MVC项目正在使用的Microsoft SQL Server数据库。我认为,在MVC方面,这与更改web.config中的连接字符串一样微不足道。唉,没有

数据库名称从myproject.MODELS.OSESDBCONTEXT转到myproject

因此,我更改了web.config中的默认连接块以反映这一点,在其他条件相同的情况下:

<defaultConnectionFactory  
        type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
    <parameters>
        <parameter value="Data Source=machine.company.com;Initial Catalog=MyProject;User ID=someuser; Password=somepassword@;MultipleActiveResultSets=False" />
    </parameters>
</defaultConnectionFactory>
它似乎无法连接到数据库,但由于找不到数据库,它正在尝试创建一个新的数据库,但由于.mdf文件已存在,因此失败。但是这不是问题所在,它应该连接到SQL Server。 这是我在运行网页时遇到的错误:

无法创建文件“C:\Program Files\Microsoft SQL Server\MSSQLS10\U 50.MSSQLSERVER\MSSQL\DATA\MyProject.Models.OSesDBContext.mdf”,因为它已存在。请更改文件路径或文件名,然后重试该操作


通过数据库附件,您可能能够完成您所追求的目标

您可以尝试通过SQLServerManagementStudio或T-SQL重新连接它吗

首先,将mdf和ldf文件复制到一个新的位置,并将它们命名为相对于要附加它们的新数据库的名称

然后在“附加数据库”屏幕中:

在顶部框架的“附加为”字段中输入数据库的新名称 在底部框架中,浏览到新的mdf文件和刚创建的新ldf文件。 然后应该有一个新连接的数据库。
我认为数据库名称不应该在defaultConnectionFactory中指定——它似乎首先是关于服务器的

应在其他地方指定数据库名称,例如,请参见此处的可能选项


我只能怀疑旧的数据库名称仍然在上面提到的地方。您是否尝试过在源代码中搜索旧名称?

问题在于实体框架,而不是MVC。这似乎很有希望。我可以通过MS-SSMS和Visual Studio服务器资源管理器连接到重命名的DB。但是,我在VisualStudio中看不到“附加数据库”屏幕。这可能是我的误解。数据库在我的本地计算机上不存在。它在一个服务器上,我不需要管理员。在这种情况下,我不确定底层文件名是否重要。我只是在寻找一种方法,将项目指向新的DB名称。但是,MVC拥有它。我想这需要使用SQL Server Management Studio来完成,我不认为执行数据库附件的工具将在Visual Studio的数据库工具中。数据库已经通过SMS重命名。问题是让我的MVC应用程序与重命名的DB对话。似乎重命名有问题,因为your错误使其看起来好像无法定位数据库。sys.databases中的名称正确吗?该链接对此问题没有太大帮助,除非我遗漏了什么。它主要讨论对数据库进行更改。不幸的是,我只想让MVC连接到新的DB,但它没有。在某个地方,它似乎仍然坚持要连接到旧数据库,如果不能,则尝试重新创建它。为什么不搜索呢?那么,提到旧数据库名称的地方在哪里?根据本文,它可能是ConnectionString部分中context 3连接字符串的context class 2基本构造函数参数的1个名称。我不知道您的代码中使用了哪一个,但您可以检查,或者在最坏的情况下,在文件中搜索旧的db名称。我非常确定的是,连接工厂不是地方,所以难怪它不会对您所做的更改做出反应。因此,在整个myproject.models、osesdbcontext中,唯一使用旧DB名称的地方是webconfig。重命名后,我将其更改为myproject。我在任何地方都找不到对旧名称的其他引用。myproject.models,osesdbcontext看起来非常像选项1。可以在构造函数中显式指定db名称吗?请注意,若重命名数据库,则不会重命名其文件,所以myproject仍应具有名为mdf和ldf的osesdbcontext。您可以在SSMS中重命名这些数据库,但我希望EF仍然使用针对您的dbcontext命名的数据库,除非您显式地设置了正确的db名称