从另一台机器导入 MDF

importing an MDF from another machine

我买了一台新电脑,并将我正在处理的 windows 应用程序项目复制到了我的新机器上。我也复制了相关的 MDF 文件。我将 MDF 拖到我的解决方案中,我可以在服务器资源管理器、数据源和 SQL 服务器对象资源管理器中看到它。

一旦我的代码尝试访问数据库,我就会收到以下异常:

Cannot open database \"MyApp.Classes.NorthwindContext\" requested by the login. The login failed.\r\nLogin failed for user 'NEW-PC\Julien'.

连接字符串:

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=B:\MyApp\MyApp.Classes.NorthwindContext.mdf;Integrated Security=False"

我试图将我的用户名和密码放入连接字符串但没有效果,如下所示:

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=B:\MyApp\MyApp.Classes.NorthwindContext.mdf;Integrated Security=False;User ID=NEW-PC\Julien;pwd=mypwd"

一些谷歌搜索说我的登录名需要在 SQL 服务器对象资源管理器中 Security 文件夹的 Logins 文件夹中,它是。

我需要做什么才能让我的代码读取这个数据库?

我的猜测是因为您已将数据库从一台服务器移动到另一台服务器,即使数据库中有用户 Julien 并且服务器也有登录名 Julien 但用户 Julien 已成为孤儿。

您需要将此用户映射到此新 machine/server 上的登录名。你可以做类似

USE [DB_Name]
GO
ALTER USER JULIEN WITH LOGIN = JULIEN   --<-- this should be a valid login
GO

这会将这个孤立的用户映射到这个新服务器上的登录名。

首先,您应该尝试在连接字符串中启用集成安全性。这将使用您的 windows 凭据登录到 SQL 数据库。

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=B:\MyApp\MyApp.Classes.NorthwindContext.mdf;Integrated Security=True;"

问题是我需要使用

Data Source=.\SQLEXPRESS

就这么简单