我正在尝试使用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进行了比较。它们都具有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帐户/权限的步骤,并请包含应用程序池设置。
谢谢, TJ
答案 0 :(得分:2)
我会将其作为答案发布:)
如果您在连接到db时遇到问题,请打开ssms并使用相同的凭据登录db。这将确认您拥有正确的凭据;)