我正在尝试在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'.
在疯狂的情况下,我决定将所有可能的权限添加到用户'绿色',我仍然看到上述错误。有人看到我失踪了吗?我确信它非常简单,之后我会把自己的脑袋砸在脑后,但我只是看不到它。
如果我真的很遥远,请提供步骤来创建一个SQL帐户/权限,我可以使用我的网络配置,并请包括应用程序池设置。
感谢, TJ
首先,你可以连接到数据库使用ssms和登录绿色?你有 ;密码后?你尝试去除IntegratedSecurity = false? – 2013-04-30 20:54:00
@Mariusz - 感谢您的意见。我是对的,打耳光了。使用SSMS登录失败。登录失败是由于仅在Win Auth模式下设置数据库。将其更改为混合模式可解决问题。 – JabberwockyDecompiler 2013-04-30 22:28:10