안녕하세요.
[서버1]-MSSQL 2019, [서버2]
[서버1]에 [서버2]를 연결된 서버로 연결했습니다.
[서버1]에서 저장프로시저에 쿼리'SELECT * FROM [서버2].[DB_name].[dbo].[Tablename]' 조회구문을 등록하고 프로시저를 실행(exec 프로시저_name)하면 문제없이 조회되지만
스케줄 작업을 위해서SQL server 에이전트에 작업등록하고 작업이 실패합니다.
원인 및 해결방법 문의합니다.
실패 로그
다음 사용자로 실행되었습니다: NT SERVICE\SQLAgent$LCDATASERVER. 연결된 서버 "서버2"의 OLE DB 공급자 "MSOLEDBSQL"에 테이블 ""DB_name"."dbo"."Tablename""이(가) 없습니다. 테이블이 존재하지 않거나 현재 사용자에게 해당 테이블에 대한 사용 권한이 없습니다. [SQLSTATE 42000] (오류 7314). 단계가 실패했습니다.
Comment 1
-
코난(김대우)
2023.12.22 08:53
현재 쿼리를 실행하는 SQL Server는 OS인 Windows의 계정과 권한으로 실행됩니다.
SQL Server 서비스와 SQL Server Agent의 계정이 다르고, 권한이 없기 때문입니다.
관리도구-서비스 를 실행하시고 "SQL Server Agent" 선택, 로그온 탭에서 어떤 윈도 계정으로 실행하는지 확인하세요.
이 계정이 B 서버에도 권한이 있어야 합니다. 손쉬운 방법은 AD 로그인을 도메인 계정으로 A서버와 B서버 양쪽에 권한이 있게 설정하거나, 편법으로 A서버와 B서버에 같은계정 같은 비번의 계정을 생성하고 해당 계정으로 설정해도 되실겁니다.