为什么包含的数据库用户需要Persist Security Info=True



我有一个数据库,在那里我创建了一个包含的用户,我需要使用该用户连接到我的web应用程序。我一直能够使用具有Persist Security Info=False的标准用户连接到web应用程序。

然而,我能够与包含的用户连接的唯一方法是将我的连接字符串更改为Persist Security Info=True,否则即使我能够使用SSMS进行连接,我也会收到登录失败的sql异常。我不知道它为什么有效,有人知道为什么一个包含的用户需要将属性设置为True吗?

对于您的web应用程序,您是否在使用实体框架?对于您的DbContext,您是否使用IdentityDbContext

如果是这样的话,我也有同样的问题。我能够直接与SqlConnection连接,但在与实体框架连接时遇到"拒绝访问"错误。当我给我的用户足够的权限时,所有的查询都很慢。

当实例化Context(使用IdentityDbContext)时,应该将第二个参数设置为false。

public AdeleDbContext(string connectionString) : base(connectionString, false)
{
}

第二个参数是throwIfV1Schema,当设置为true(这是默认值)时,它将通过对许多列调用SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=@Table来根据数据库验证模式。

这就是为什么在使用Entity Framework和IdentityDbContext连接到DB时,连接速度较慢,用户需要更多权限的原因。

相关内容

  • 没有找到相关文章

最新更新