2008-10-19 7 views
8

Ich plane, MS SQL Server 2005 Anwendungsrollen in meiner Anwendung zu verwenden. Ich werde die Rolle starten, indem ich die sp_setapprole ausführe und durch Ausführung der sp_unsetapprole SPs fertig bin. Die Anwendung ist in ASP.NET implementiert.SQL Server Anwendungsrolle, Leistungshit

Ich habe gelesen, dass "Verbindungspooling funktioniert nicht" mit Anwendungspooling und es gibt keine Möglichkeit, auf Verbindung zu reagieren "disconnect event" (execute sp_unsetapprole kurz vor dem Trennen).

Ich plane, sp_setapprole zu Beginn aller meiner SPs aufzurufen und sp_unsetapprole am Ende aller meiner SPs zu rufen.

Haben Sie SQL-Anwendungsrollen verwendet? Was sind deine XPs? Was ist mit Performance-Hit?

Antwort

-1

Ich habe noch keine App-Rollen verwendet, aber was ich über den Perf-Treffer weiß, ist, dass es nach dem Festlegen der Anwendungsrolle keine Möglichkeit gibt, zum vorherigen zurückzukehren. Sicherheitskontext. Daher kann die Verbindung nicht im Pooling wiederverwendet werden. Dies allein ist eine große Leistung. Hit, der Sie dazu zwingt, über die Verwendung von App-Rollen nachzudenken.

Die Dokumente sagen jedoch, dass ab SQL Server 2005 eine Möglichkeit besteht, den ursprünglichen Sicherheitskontext in einer Art von Cookie zu speichern, der von sp_setapprole zurückgegeben wurde, und danach sp_unsetapprole verwendet, um zu ihm zurückzukehren. Also sollte das Pooling wieder funktionieren. Wenn ich du wäre, würde ich die Perf vergleichen. mit ein paar einfachen Aussagen/Sprocs.

Gibt es einen Grund, warum Sie die standardmäßige ASP.NET-Mitgliedschafts-API nicht auf Anwendungsebene statt auf App-Rollen verwenden?

+0

Ich verwende ASP.NET Mitgliedschaft API. SQL-Anwendungsrolle wäre eine zusätzliche Sicherheitsebene – artur02

+0

Ich musste diese Antwort nach unten abstimmen, weil die Frage eindeutig nach denen fragt, die Erfahrung mit Anwendungsrollen haben. Auch der erste Absatz verwirrt den Leser unnötig. Das Problem der Anwendungspools wurde seit SQL Server 2005 behoben. Siehe http://blogs.solidq.com/dsarka/Post.aspx?ID=54&title=application+roles+und+connection+pooling – zumalifeguard

0

Ich habe in der Vergangenheit meine eigenen "apple" gerollt, es ist nicht zu schwer. Erstellen Sie eine Datenbankrolle für jeden Benutzertyp (Manager, Casher, Clerk, was auch immer). Erstellen Sie einen Datenbankbenutzer mit dem Gruppennamen (manager_user, casher_user, clerk_user usw.). Erstellen Sie Konten für Ihre echten Benutzer und ordnen Sie sie den Datenbankrollen zu. Validieren Sie Ihre asp.net-Benutzer, indem Sie sie in der Datenbank anmelden (öffnen Sie & eine Verbindung), eine Nachschlagetabelle oder am besten, wenn Sie Windows-Authentifizierung verwenden und einfach ihren Benutzernamen von IIS abrufen. Überprüfen Sie ihre Mitgliedschaft in einer Datenbankrolle, melden Sie sich jedoch mit role_user in der Datenbank an. Sie können die Datenbankobjekte über den Benutzer role_user sichern, die Benutzer loggen sich nicht ein und haben keinen Zugriff auf SQL-Objekte und Sie erhalten Verbindungspooling.

+1

Spicy Tuna Rolls sind auch sehr gut. ;) –

+0

Doh! Ich hasse es, wenn ich das tue. –

+0

Es tut mir leid, aber ich musste diesen Artikel abstimmen. Dies beantwortet die Frage nicht. Es schlägt vielmehr eine Alternative vor. Die Frage besteht speziell darin, nach Antworten von denjenigen zu fragen, die Anwendungsrollen verwendet haben. Wenn Sie das nicht getan haben, können Sie die Frage nicht beantworten, also vergeuden Sie bitte nicht die Zeit anderer Leute. Vielen Dank. – zumalifeguard

Verwandte Themen