我试图在SQL Server 2008上使用EF 5 Code First创建一个数据库。我可以使用集成安全性创建数据库,但不能使用自定义用户创建数据库。该代码在我的家用计算机上为集成安全性和自定义用户运行初始化器。
连接字符串的区别如下。除此之外,我还将数据源更改为服务器,并将初始目录更改为数据库。
<!--<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。它们都有public和sysadmin的服务器角色,都没有任何用户映射,直到一个数据库被创建,然后它们被映射到那个数据库。
在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帐户/权限,我可以在我的web配置中使用,请包括应用程序池设置。
谢谢,TJ
我会把它作为答案贴出来的:)
如果连接到db有问题,打开ssms并使用相同的凭据登录到db。这将确认您有正确的凭据;)