Asp.net 使用ASN.NET了解SQL中应用程序角色的性能影响

Asp.net 使用ASN.NET了解SQL中应用程序角色的性能影响,asp.net,performance,sql-server-2005,Asp.net,Performance,Sql Server 2005,我在应用程序中使用MS SQL Server 2005应用程序角色。我执行sp\u setapprole以启动SPs角色并完成sp\u unsetapprole。 “连接池在应用程序池中不起作用,”,并且无法对连接“断开连接事件”(在断开连接之前执行sp_unsetapprole) 我决定在所有sp开始时调用sp_setapprole,在所有sp结束时调用sp_unsetapprole 您是否使用过SQL应用程序角色?你的XPs是什么?性能命中率如何?我以前没有使用过应用程序角色,但从我对性能命

我在应用程序中使用MS SQL Server 2005应用程序角色。我执行
sp\u setapprole
以启动SPs角色并完成
sp\u unsetapprole。

连接池在应用程序池中不起作用,”,并且无法对连接“断开连接事件”(在断开连接之前执行
sp_unsetapprole

我决定在所有sp开始时调用
sp_setapprole
,在所有sp结束时调用
sp_unsetapprole


您是否使用过SQL应用程序角色?你的XPs是什么?性能命中率如何?

我以前没有使用过应用程序角色,但从我对性能命中率的了解来看,设置应用程序角色后,无法恢复到上一个角色。安全上下文。因此,连接不能在池中重用。这本身就是一个巨大的性能。这会迫使你在使用应用程序角色时三思而后行

然而,文档说,从SQLServer2005开始,有一种方法可以记住从sp_setapprole返回的cookie中的原始安全上下文,然后使用sp_unsetapprole恢复到它。因此,池应该再次起作用。如果我是你,我会比较性能。通过几个简单的语句/存储过程


你为什么不在应用程序级别而不是应用程序角色上使用标准ASP.NET成员API?

我过去也有过自己的“认可”,这并不难。为每种类型的用户(经理、收银员、职员等)创建一个数据库角色。创建组名为的数据库用户(经理用户、收银员用户、职员用户等)。为您的真实用户创建帐户,并将他们置于数据库角色中。通过将asp.net用户登录到数据库(打开和关闭连接)、查找表或best验证您的asp.net用户(如果您使用windows身份验证并仅从IIS获取他们的用户名)。检查他们在数据库角色中的成员身份,但使用role\u user登录数据库。您可以通过角色\用户保护数据库对象,用户不登录,也无权访问任何sql对象,您可以获得连接池

我确实使用ASP.NET成员API。SQL应用程序角色将是一个额外的安全层。我不得不否决这个回答,因为这个问题显然是问那些有使用应用程序角色经验的人。此外,第一段不必要地混淆了读者。自SQL Server 2005以来,应用程序池问题已得到解决。请注意,当您生活在现实世界中时,SQL Server 2005中创建的“解决方案”不起作用:如果您的网络连接中断,您将无法调用
sp\u unsetapprole
。很抱歉,我不得不否决这篇文章。这并不是在回答问题。相反,它提出了一个替代方案。这个问题特别要求那些使用过应用程序角色的人做出回应。如果你没有,那么你就无法回答这个问题,所以请不要浪费别人的时间。非常感谢。