SQL Server의 저장 프로 시저에서 연결을 소유 한 실행 파일 (예 : MyApp.exe)의 이름을 가져올 수 있습니까? APP_NAME()이 있다는 것을 알고 있지만 연결 문자열의 'Application Name'매개 변수에 전달 된 문자열을 반환하는 것으로 보입니다.T-SQL 저장 프로 시저에서 응용 프로그램 실행 파일 이름 얻기
가능하다면 어떻게 할 수 있습니까? 감사.
SQL Server의 저장 프로 시저에서 연결을 소유 한 실행 파일 (예 : MyApp.exe)의 이름을 가져올 수 있습니까? APP_NAME()이 있다는 것을 알고 있지만 연결 문자열의 'Application Name'매개 변수에 전달 된 문자열을 반환하는 것으로 보입니다.T-SQL 저장 프로 시저에서 응용 프로그램 실행 파일 이름 얻기
가능하다면 어떻게 할 수 있습니까? 감사.
불행히도 저는 그러한 일을 전혀 모르고 있습니다. 연결이 완전히 다른 기계에서 오는 것임을 기억하십시오.
아마도 보안을 설계하여 다른 앱이 다른 사용자 이름을 사용하여 데이터베이스에 액세스하도록 할 수 있습니다. 현재 사용자를 찾는 것은 쉽습니다.
고마워, 그것이 우리가해야 할 일입니다. – joelsand
앱 이름을 전달하도록 스토어드 프로 시저를 수정하지 않으면 APP_NAME()의 결과가 계속됩니다. 바라건대, 개발자는 단순히 앱을 빌드하는 데 사용 된 개발 도구의 표시 인 기본값을 받아들이 기보다는 의미있는 값을 설정하고 있습니다. 이 도움이
희망,
빌
는 컴퓨터와 연결 문자열에서 정보를 얻을 수 있지만이 기본적으로 있습니다.
모니터링 및 기타 방법을 통해 개발자는 항상 연결 문자열에 Application Name을 사용할 수 있습니다. 예를 들어, 승인 된 애플리케이션 이름이 아닌 경우를 기록하거나 프로파일 러를 사용하여 사물을 감시 할 수 있습니다.
오라클은 exe의 이름을 제공 할 수 있지만 SQL Server는 다른 아키텍처를 사용할 수 없습니다.
나는 이것이 당신이 찾고있는 것과 정확히 일치하지 않는다는 것을 알고 있습니다. 그러나 DBCC INPUTBUFFER를 사용하여 약간의 호출 스택을 결정할 수 있습니다. 이 논리를 storeprodedure 내부에 넣고 어딘가에 로그하면 호출자에 대한 정보를 얻을 수 있습니다.
CREATE TABLE #dbc
(
EventType VARCHAR(15),
Parameters INT,
EventInfo VARCHAR(255)
)
DECLARE @execStr VARCHAR(500)
SET @ExecStr = 'DBCC INPUTBUFFER(' + STR(@@SPID) + ')'
INSERT INTO #dbc
EXEC (@execStr
)
SELECT *
FROM #dbc
클라이언트 컴퓨터에서 프로세스 ID를 얻을 수도 있습니다. 따라서 프로세스 이름에 매핑 할 수있는 마법 같은 방법이 있다면 할 수 있습니다.
나는 그게 가능하지 않다는 것을 확신합니다 ... –