우리 회사의 표준은 레코드가 삽입되거나 업데이트 될 때 레코드를 삽입하거나 업데이트하는 사용자 이름을 기록하는 것입니다. 응용 프로그램에서 저장 프로 시저를 호출하는 테이블을 삽입하고 업데이트합니다. SUSER_SNAME()
이름을 가져 오기 위해 저장 프로 시저에서 사용 합니다. 이제 연결된 서버의 테이블에 레코드 삽입을 추가했습니다. SUSER_SNAME
는 기본 데이터베이스에서와 마찬가지로 기능은 동일한 로그인 이름을 반환하지. 대신 연결하기 위해 생성 된 계정의 이름을 반환합니다. 사용자 이름을 쿼리에 대한 또 다른 매개 변수로 전달할 수 있다는 것을 알고 있지만 서버에 직접 연결할 때와 연결된 서버에 연결할 때 모두 작동하는 내장 기능이 있으면 더 쉬울 것입니다. 이를 수행하는 내장 함수가 있습니까?
저장 프로 시저
INSERT INTO Account (ForeignKey, AccountNumber, IsProcessed,
Origin, Updated, LoginName, Total)
VALUES (@ForeignKey, @AccountNumber, @IsProcessed,
GETDATE(), NULL, SUSER_SNAME(), @Total)
RETURN SCOPE_IDENTITY()
아니요,이 작업을 수행 할 기능이 없습니다. 연결된 서버를 만들면 연결된 서버가 두 번째 서버에 대한 "연결을 엽니 다". 사용자 인 귀하는 첫 번째 서버에 연결되어 있습니다. 따라서 suser_sname()
첫 번째 서버에서 실행 하면 연결된 사용자 이름을 얻게됩니다. 두 번째 서버에서 실행하면 두 번째 서버에 연결하는 데 사용하는 사용자 이름을 계속 얻을 수 있습니다. 차이점은 두 번째 서버에 대한 연결은 연결된 서버를 구성한 관리자가 제어한다는 것입니다. 귀하의 경우에는 연결된 서버 연결에 사용되는 특수 계정을 만든 것 같습니다. 또 다른 옵션은 현재 서버의 계정을 두 번째 서버의 계정에 매핑하는 것입니다. 당신의 DBA가 그 일을했다면 (, 당신은 수도 현재 원하는 결과를 얻고 문제가 없습니다.) 연결된 서버를 구성하는 방법에는 여러 가지가 있으며 일반적으로 그렇게 할 때 보안이 우선되어야합니다.
따라서 두 번째 서버에서 쿼리를 실행하고 첫 번째 서버의 사용자 이름을 사용하려면 다른 컴퓨터에있는 사용자를 알 수있는 방법이 없기 때문에 두 번째 서버로 전달해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다