2009-12-02 2 views
2

우리는 SQL 2005를 사용하고 개별 사용자를 식별하여 성능 목적으로 SQL을 추적 할 수 있지만 고유 한 사람을 식별하는 것은 어렵습니다.SQL 프로파일 러에서 개별 sql 사용자 식별 및 활동 모니터

우리는 모든 사용자가 활동 모니터에서 동일한 사용자를 가지도록 연결 풀링으로 SQL 2005를 사용하고 있습니다. 그들의 NT 사용자 이름이 설정되지 않은 것 같습니다. 아마도 우리가 도메인 사용자가 아닌 SQL Server 사용자를 사용하고 있고 Citrix도 사용하고 있으므로 개별 IP 주소가 설정되어 있지 않습니다. 이 (매우 일반적인) 환경에서 개별 사용자를 어떻게 식별합니까?

답변

0

Sql 프로필러에서 클라이언트 프로세스 ID를 추적하여 문제를 해결했습니다. Citrix 또는 Task Manager에서 특정 사용자와 해당 PID를 식별 할 수 있습니다. 그런 다음 해당 PID로 Sql 프로필의 출력을 필터링하십시오.

이것은 DB에서 작업하고 있지만 응용 프로그램의 소스에 액세스 할 수 없을 때 훌륭합니다. 종종 표준 보고서를 수정해야하고, SP의 수정 등이 필요하지만 실행중인 것을 모르는 경우 건초 더미에 바늘이 있습니다. Sql 프로필을 사용하여 사용자를 추적하고 Sql을 캡처하고 분석/디버그 수정을 수행하십시오.

1

모든 사용자가 동일한 사용자 이름을 사용하고 동일한 IP에서 온 경우 사용자가 따로 말할 수 없습니다. Windows 인증을 사용하지 않는 한 MSSQL은 사용자가 연결하는 Windows의 사용자 이름을 알지도 못합니다.

Windows 인증을 사용하도록 설정을 변경 했습니까? 그것은 문제에 대한 논리적 인 해결책처럼 보입니다. 모두 또는 SQL에 대한 모든 사람에 대한 별도의 로그인을 설정하지만 그 Active Directory 사용자 목록을 복제하고있을거야 ...

+0

Windows 인증을 사용하면 연결 풀링이 많은 이점을주지 않습니다. http://msdn.microsoft.com/en-us/library/8xx3tyca(VS.80).aspx – MrTelly

+0

그런 다음 연결 풀링 이점이 사용자를 개별적으로 식별 할 수 없기 때문에 유효한 트레이드 오프인지 여부 개인적으로, 나는 그것이라고 생각하지 않는다. 병목 현상으로 인해 연결이 설정되면 확장 할 수있는 다양한 방법 (예 : memcached 또는 다른 분산 시스템)을 식별해야 할 수 있습니다. –

+0

네가 어디에서 왔는지 알고 있지만, 90 % 이상의 사이트에서 연결 풀링을 사용합니다. '일이 완료된 것뿐입니다.'그리고 보안 추적은 물론 성능 추적의 진정한 고통입니다. – MrTelly

0

SQL 프로파일 러에서 사용자를 식별하기 위해서는 SQL Server에 어떤 식 으로든 해당 정보를 제공해야합니다 각 요청 또는 연결 컨텍스트의 일부로. 한 가지 방법은 다른 사용자로 연결하는 것이지만 수천 명의 사용자가있는 경우 수천 개의 계정 (SQL Auth 또는 Windows Auth)이 필요하며 신속하게 관리하기가 어려워집니다.

더 좋은 방법은 연결 문자열의 Application Name 매개 변수를 사용자의 이름으로 설정하는 것입니다. 설정이 완료되면 SQL 프로파일 러에서 해당 필드를 필터링 할 수 있습니다. Data Source=.;Initial Catalog=Northwind;Integrated Security=SSPI;Application Name=RickNZ

이 접근법의 단점은 연결 풀링 (기본적으로 사용됨)은 연결 문자열이 바이트 단위로 동일한 경우에만 연결을 공유한다는 것입니다. 따라서 사용자마다 다른 것을 만들면 더 많은 연결이 이루어 지므로 성능에 영향을 미칩니다. 무겁게 멀티 스레드 환경에서는 풀링 된 연결이 부족할 수도 있습니다. 그렇더라도 단기간의 디버깅에 유용 할 수 있습니다.

관련 문제