sp_addlinkedsrvlogin(Transact-SQL)

적용 대상:SQL Server

SQL Server의 로컬 인스턴스에 있는 로그인과 원격 서버의 보안 계정 간에 매핑을 만들거나 업데이트합니다.

Transact-SQL 구문 표기 규칙

구문

sp_addlinkedsrvlogin
    [ @rmtsrvname = ] N'rmtsrvname'
    [ , [ @useself = ] 'useself' ]
    [ , [ @locallogin = ] N'locallogin' ]
    [ , [ @rmtuser = ] N'rmtuser' ]
    [ , [ @rmtpassword = ] N'rmtpassword' ]
[ ; ]

인수

[ @rmtsrvname = ] N'rmtsrvname'

로그인 매핑이 적용되는 연결된 서버의 이름입니다. @rmtsrvname 기본값이 없는 sysname입니다.

[ @useself = ] 'useself'

로컬 로그인을 가장하거나 로그인 및 암호를 명시적으로 제출하여 rmtsrvname에 연결할지 여부를 결정합니다. @useself 기본값true인 varchar(8)입니다.

  • true 은 로그인이 고유한 자격 증명을 사용하여 @rmtsrvname 연결하도록 지정하며, @rmtuser@rmtpassword 인수는 무시됩니다.
  • false는 @rmtuser 및 @rmtpassword 인수를 사용하여 지정된 @locallogin 대한 @rmtsrvname 연결하도록 지정합니다.

@rmtuser@rmtpassword 설정된 NULL경우 연결된 서버에 연결하는 데 로그인 또는 암호가 사용되지 않습니다.

[ @locallogin = ] N'locallogin'

로컬 서버에 로그인합니다. @locallogin sysname이며 기본값은 .입니다NULL. NULL는 이 항목이 @rmtsrvname 연결하는 모든 로컬 로그인에 적용되도록 지정합니다. 그렇지 않은 NULL경우 @locallogin SQL Server 로그인 또는 Windows 계정일 수 있습니다. Windows 계정은 SQL Server에 직접 액세스하거나 Windows 그룹의 멤버 자격을 통해 액세스할 수 있어야 합니다.

[ @rmtuser = ] N'rmtuser'

@rmtsrvname 연결하는 @useself 데 사용되는 원격 로그인입니다.false @rmtuser 기본값NULL인 sysname입니다. 원격 서버가 Windows 인증을 사용하지 않는 SQL Server 인스턴스인 경우 @rmtuser SQL Server 로그인입니다.

[ @rmtpassword = ] N'rmtpassword'

@rmtuser 연결된 암호입니다. @rmtpassword sysname이며 기본값은 .입니다NULL.

반환 코드 값

0 (성공) 또는 1 (실패).

설명

사용자가 로컬 서버에 로그온하고 연결된 서버의 테이블에 액세스하는 분산 쿼리를 실행하는 경우 로컬 서버는 해당 테이블에 액세스하기 위해 사용자를 대신하여 연결된 서버에 로그온해야 합니다. 로컬 서버에서 연결된 서버에 로그인하는 데 사용하는 자격 증명을 지정하는 데 사용합니다 sp_addlinkedsrvlogin .

참고 항목

연결된 서버에서 테이블을 사용할 때 최상의 쿼리 계획을 만들려면 쿼리 프로세서에 연결된 서버의 데이터 배포 통계가 있어야 합니다. 테이블의 열에 대한 권한이 제한된 사용자는 모든 유용한 통계를 가져올 수 있는 충분한 권한이 없을 수 있으며 덜 효율적인 쿼리 계획을 받고 성능이 저하될 수 있습니다. 연결된 서버가 SQL Server의 인스턴스인 경우 사용 가능한 모든 통계를 얻으려면 사용자가 테이블을 소유하거나 sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할 또는 연결된 서버의 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다. SQL Server 2012 SP1(11.0.3x)은 통계 가져오기에 대한 사용 권한 제한을 수정하고 SELECT 권한이 있는 사용자가 DBCC SHOW_STATISTICS 통해 사용할 수 있는 통계에 액세스할 수 있도록 허용합니다. 자세한 내용은 DBCC SHOW_STATISTICS 권한 섹션 (Transact-SQL)을 참조하세요.

로컬 서버의 모든 로그인과 연결된 서버의 원격 로그인 간의 기본 매핑은 실행하여 sp_addlinkedserver자동으로 만들어집니다. 기본 매핑은 SQL Server가 로그인을 대신하여 연결된 서버에 연결할 때 로컬 로그인의 사용자 자격 증명을 사용한다는 것을 나타냅니다. 이는 로컬 사용자 이름을 지정하지 않고 연결된 서버에 대해 설정된 true 상태에서 실행하는 sp_addlinkedsrvlogin@useself 것과 같습니다. 기본 매핑을 변경하거나 특정 로컬 로그인에 대한 새 매핑을 추가하는 데만 사용합니다 sp_addlinkedsrvlogin . 기본 매핑 또는 다른 매핑을 삭제하려면 .를 사용합니다 sp_droplinkedsrvlogin.

미리 결정된 로그인 매핑을 만드는 데 사용할 필요 대신 SQL Server는 다음 조건이 모두 있는 경우 쿼리를 실행하는 사용자의 Windows 보안 자격 증명(Windows 로그인 이름 및 암호)을 자동으로 사용하여 sp_addlinkedsrvlogin 연결된 서버에 연결할 수 있습니다.

  • 사용자가 Windows 인증 모드를 사용하여 SQL Server에 연결됩니다.

  • 클라이언트 및 보내는 서버에서 보안 계정 위임을 사용할 수 있습니다.

  • 공급자는 Windows 인증 모드를 지원합니다. 예를 들어 Windows에서 실행되는 SQL Server입니다.

참고 항목

단일 홉 시나리오에 위임을 사용하도록 설정할 필요는 없지만 다중 홉 시나리오에는 필요합니다.

SQL Server의 로컬 인스턴스에서 실행하여 정의된 매핑을 사용하여 연결된 서버에서 인증을 sp_addlinkedsrvlogin 수행한 후 원격 데이터베이스의 개별 개체에 대한 사용 권한은 로컬 서버가 아닌 연결된 서버에 의해 결정됩니다.

sp_addlinkedsrvlogin 는 사용자 정의 트랜잭션 내에서 실행할 수 없습니다.

사용 권한

서버에 대한 ALTER ANY LOGIN 권한이 필요합니다.

예제

A. 자체 사용자 자격 증명을 사용하여 연결된 서버에 모든 로컬 로그인 커넥트

다음 예제에서는 로컬 서버에 대한 모든 로그인이 자체 사용자 자격 증명을 사용하여 연결된 서버에 Accounts 연결되도록 매핑을 만듭니다.

EXEC sp_addlinkedsrvlogin 'Accounts';

또는

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';

참고 항목

개별 로그인에 대해 생성된 명시적 매핑이 있는 경우 연결된 서버에 대해 존재할 수 있는 모든 전역 매핑보다 우선합니다.

B. 다른 사용자 자격 증명을 사용하여 연결된 서버에 특정 로그인 커넥트

다음 예제에서는 Windows 사용자가 Domain\Mary 로그인 및 암호를 d89q3w4u사용하여 연결된 서버에 Accounts 연결할 수 있도록 매핑 MaryP 을 만듭니다.

EXEC sp_addlinkedsrvlogin 'Accounts', 'false', 'Domain\Mary', 'MaryP', 'd89q3w4u';

주의

이 예제에서는 Windows 인증을 사용하지 않습니다. 암호는 암호화되지 않은 상태로 전송됩니다. 암호는 디스크, 백업 및 로그 파일에 저장된 데이터 원본 정의 및 스크립트에 표시될 수 있습니다. 이러한 종류의 연결에서 관리자 암호를 사용하지 마세요. 사용자 환경과 관련된 보안 지침은 네트워크 관리자에게 문의하세요.