2008-10-19 2 views
8

응용 프로그램에서 MS SQL Server 2005 응용 프로그램 역할을 사용할 계획입니다. sp_setapprole을 실행하여 역할을 시작하고 sp_unsetapprole SP를 실행하여 완료합니다. 응용 프로그램은 ASP.NET에서 구현됩니다.SQL Server 응용 프로그램 역할, 성능 적중

응용 프로그램 풀링과 관련하여 "연결 풀링이 작동하지 않습니다"라는 연결을 읽었으며 "연결 끊기"연결에 응답 할 방법이 없습니다 (연결 해제 직전에 sp_unsetapprole 실행).

모든 SP의 시작 부분에 sp_setapprole으로 전화를 걸고 모든 SP의 끝에 sp_unsetapprole으로 전화 할 예정입니다.

SQL 응용 프로그램 역할을 사용 해본 적이 있습니까? 당신의 XP는 무엇입니까? 성능에 어떤 영향을 줍니까?

답변

-1

이전에는 응용 프로그램 역할을 사용하지 않았지만 퍼포먼스 히트에 대해 알고있는 것으로부터 응용 프로그램 역할을 설정 한 후에는 이전 버전으로 되돌릴 수 없습니다. 보안 문맥. 따라서 연결을 다시 사용할 수 없습니다. 이것만으로도 엄청난 성능을 발휘합니다. 두 번째로 앱 역할 사용에 대해 생각하게 만듭니다.

그러나 SQL Server 2005부터는 sp_setapprole에서 반환 된 쿠키 종류의 원래 보안 컨텍스트를 기억하고 sp_unsetapprole을 사용하여 원래의 보안 컨텍스트로 되돌릴 수있는 방법이 있다고합니다. 따라서 풀링은 다시 작동해야합니다. 내가 너라면 나는 그 성령을 비교할 것이다. 몇 가지 간단한 문장/sprocs.

앱 역할 대신 응용 프로그램 수준에서 표준 ASP.NET 멤버십 API를 사용하지 않는 이유는 무엇입니까?

+0

ASP.NET 멤버십 API를 사용합니다. SQL 응용 프로그램 역할은 추가 보안 계층이 될 것입니다. – artur02

+0

응용 프로그램 역할을 사용한 경험이있는 사람들을 분명히 묻는 질문이기 때문에이 응답을 다운 투표해야했습니다. 또한 첫 단락은 불필요하게 독자를 혼란스럽게합니다. SQL Server 2005 이후로 응용 프로그램 풀 문제가 해결되었습니다. http://blogs.solidq.com/dsarka/Post.aspx?ID=54&title=application+roles+and+connection+pooling – zumalifeguard

0

나는 과거에 내 자신의 "승인 코드"를 굴 렸지만 너무 어렵지 않습니다. 각 사용자 유형 (manager, casher, clerk 등)에 대한 데이터베이스 역할을 만듭니다. 그룹 이름 (manager_user, casher_user, clerk_user 등)을 사용하여 데이터베이스 사용자를 만듭니다. 실제 사용자를위한 계정을 작성하여 데이터베이스 역할에 넣으십시오. Windows 인증을 사용하고 IIS에서 사용자 이름을 가져 오는 경우 데이터베이스에 로그인하여 (& 연결 열기), 조회 표 또는 이 가장 인 asp.net 사용자의 유효성을 검사하십시오. 데이터베이스 역할에서 멤버십을 확인하지만 role_user를 사용하여 데이터베이스에 로그인하십시오. role_user를 통해 데이터베이스 객체를 보호 할 수 있습니다. 사용자는 로그인하지 않고 모든 sql 객체에 액세스 할 수 없으며 연결 풀링을 얻습니다.

+1

Spicy Tuna Rolls 또한 매우 유용합니다. 좋은. ;) –

+0

Doh! 내가 그렇게 할 때 나는 그것을 싫어한다. –

+0

미안하지만이 기사를 다운 투표해야했습니다. 이것은 질문에 대답하지 않습니다. 오히려 그것은 대안을 제시하고 있습니다. 문제는 구체적으로 애플리케이션 역할을 사용한 사람들의 응답을 요청하는 것입니다. 그렇지 않으면 질문에 답할 수 없으므로 다른 사람의 시간을 낭비하지 마십시오. 고맙습니다. – zumalifeguard