【发布时间】:2013-04-30 16:57:35
【问题描述】:
我正在尝试在 SQL Server 2008 上使用 EF 5 Code First 创建数据库。我可以使用集成安全性创建数据库,但无法使用自定义用户创建数据库。该代码在我的家用计算机上为集成安全性和自定义用户运行初始化程序。
连接字符串的区别如下。除了这些,我根据connectionstrings.com 将数据源更改为服务器,并将初始目录更改为数据库。
<!--<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MVCTesting;Integrated Security=False;User Id=Green;Password=******" providerName="System.Data.SqlClient" />-->
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MVCTesting;Integrated Security=True;" providerName="System.Data.SqlClient" />
我比较了 SQL 用户 MachineName/LoginName 和 Green。它们都具有公共和系统管理员的服务器角色,在创建数据库之前都没有任何用户映射,然后将它们映射到该数据库。
在 global.asax.cs 我有
protected void Application_Start()
{
Database.SetInitializer(new MVCTestingInitializer());
//Database.SetInitializer(new DropCreateDatabaseAlways<MVCTestingContext>());
ViewDb();
//Other setup
}
//Init the db by looking up a contact
private void ViewDb()
{
using (var context = new MVCTestingContext())
{
var user = context.Contacts.Where(u => u.FirstName.StartsWith("T"));
var asdf = "";
}
}
我的初始化程序是...
public class MVCTestingInitializer : DropCreateDatabaseAlways<MVCTestingContext>
{
protected override sealed void Seed(MVCTestingContext context)
{
//Code to init the db
}
}
使用NLog 我可以验证种子是否运行。当我集成安全时它运行,当我没有时种子不会运行。
我还在机器上创建了一个帐户,将该帐户添加到 AppPool 和 SQL Server,然后重新测试。我仍然看到连接失败。
System.Data.SqlClient.SqlException: Login failed for user 'Green'.
我决定为用户“Green”添加所有可能的权限,但我仍然看到上述错误。有人看到我错过了什么吗?我相信它是如此简单,然后我会打自己的头,但我只是看不到它。
如果我真的很遥远,请提供创建可以在我的网络配置中使用的 SQL 帐户/权限的步骤,并请包括应用程序池设置。
谢谢, TJ
【问题讨论】:
-
首先,能不能用ssms连接数据库,登录green?你有 ;密码后?您是否尝试删除 IntegratedSecurity=false?
-
@Mariusz - 感谢您的 cmets。我是对的,拍脑袋修复。使用 SSMS 登录失败。登录失败仅是由于 Win Auth 模式下的数据库设置所致。将其更改为混合模式可以解决问题。
标签: sql-server-2008 entity-framework ef-code-first entity-framework-5