2016-12-30 2 views
1

SQL 데이터베이스와 통신하는 타사 소프트웨어를 사용하여 모든 정보를 검색하고 삽입합니다.특정 응용 프로그램에 대해서만 SQL 프로파일 러의 단계를 추적하는 방법

사용자가이 소프트웨어를 사용하면 특정 단계에서 가끔 멈추는 경우가 있습니다. 문제를 해결하고 왜 발생하는지 알아야합니다.

그 때문에 SQL 프로필러를 사용하여이 병목 현상을 일으키는 쿼리를 확인합니다. 하지만 특정 소프트웨어에 대해서만 단계를 추적하고 특정 사용자에 대해서만 어떻게 추적합니까? 나는 다른 모든 정보를보고 싶지 않다. 내가 올바른 I는 단지 사용자 이름을 가정하고 NTUserName를 필터링 할 수 있어요

enter image description here

? 그러나 ApplicationName이 무엇인지 어떻게 알 수 있습니까?

이 쿼리를 실행하면 Microsoft Office, Report Server 등 13 가지 응용 프로그램이 표시됩니다. 사용하는 소프트웨어의 이름은 알 수 없습니다. (MGA 시스템, 보험 관리 시스템)

select distinct 
    program_name 
from sys.dm_exec_sessions 
where is_user_process = 1; 
+0

ApplicationName은 연결 문자열에 지정된 값이거나, 지정하지 않은 경우 클라이언트 API에 따라 달라지는 기본값입니다. 예를 들어, SqlClient는 일반적인 ".Net SqlClient Data Provider"값을 사용합니다. –

답변

1

앱을 사용하는 사람들의 사용자 이름을 알아야합니다. 그런 다음 사용자가있는 위치에서 windows AD 연결 문자열의 경우 사용자 이름을 NTUsername > Like > [User Name without the domain if they are on the same network]으로 입력하고 인 경우 username의 동일한 단계를 sqlserver 사용자로 입력하십시오. 그런 다음 들어오는 쿼리를 필터링 할 수 있습니다.

+0

호스트 이름도 많은 도움을 주셔서 감사합니다. 네, 응용 프로그램 이름은 ".Net SqlClient Data Provider"입니다. 다시 한 번 감사드립니다. – Oleg

1

그게 내가 아는 유일한 방법입니다. 프로파일 러를 실행 한 다음 사람이 응용 프로그램을 실행하게하고 응용 프로그램의 이름을 얻기 위해 실행 한 시간과 가장 가까운 시간을 봅니다. 또한 데이터베이스 이름으로 필터링하여 해당 이름을 필터링하여 트리밍 할 수도 있습니다. 프로파일 러는 때로는 까다 롭고 원하는 정보를 얻으려면 필터를 망칠 필요가 있습니다. 죄송합니다. 프로필러가 진부한 도움이 될 수 없습니다.