sp_addlinkedsrvlogin(Transact-SQL)sp_addlinkedsrvlogin (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server 로컬 인스턴스의 로그인과 원격 서버 보안 계정 간의 매핑을 만들거나 업데이트합니다.Creates or updates a mapping between a login on the local instance of SQL ServerSQL Server and a security account on a remote server.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'   
     [ , [ @useself = ] 'TRUE' | 'FALSE' | NULL ]   
     [ , [ @locallogin = ] 'locallogin' ]   
     [ , [ @rmtuser = ] 'rmtuser' ]   
     [ , [ @rmtpassword = ] 'rmtpassword' ]   

인수Arguments

[ @rmtsrvname = ] 'rmtsrvname'[ @rmtsrvname = ] 'rmtsrvname'
로그인 매핑이 적용되는 연결된 서버의 이름입니다.Is the name of a linked server that the login mapping applies to. rmtsrvnamesysname, 기본값은 없습니다.rmtsrvname is sysname, with no default.

[ @useself = ] 'TRUE' | 'FALSE' | ' NULL'[ @useself = ] 'TRUE' | 'FALSE' | 'NULL'
에 연결할지 여부를 결정 rmtsrvname 로컬 로그인을 가장 하거나 로그인 및 암호를 명시적으로 제출 합니다.Determines whether to connect to rmtsrvname by impersonating local logins or explicitly submitting a login and password. 데이터 형식이 varchar (8), 기본값은 TRUE입니다.The data type is varchar(8), with a default of TRUE.

값이 true 이면 로그인에 연결 하는 데 자신의 자격 증명을 사용 한다는 지정 rmtsrvnamermtuserrmtpassword 인수를 무시 합니다.A value of TRUE specifies that logins use their own credentials to connect to rmtsrvname, with the rmtuser and rmtpassword arguments being ignored. FALSE를 지정 하는 rmtuserrmtpassword 인수에 연결 하는 데 사용 됩니다 rmtsrvname 지정 된 locallogin .FALSE specifies that the rmtuser and rmtpassword arguments are used to connect to rmtsrvname for the specified locallogin. 경우 rmtuserrmtpassword 로그인 또는 암호를 NULL로 설정 하는 데 연결된 된 서버에 연결 됩니다.If rmtuser and rmtpassword are also set to NULL, no login or password is used to connect to the linked server.

[ @locallogin = ] 'locallogin'[ @locallogin = ] 'locallogin'
로컬 서버의 로그인입니다.Is a login on the local server. localloginsysname, 기본값은 NULL입니다.locallogin is sysname, with a default of NULL. NULL이이 항목에 연결 하는 모든 로컬 로그인에 적용 되도록 지정 rmtsrvname합니다.NULL specifies that this entry applies to all local logins that connect to rmtsrvname. NULL이 아닌 경우 locallogin 수는 SQL ServerSQL Server 로그인 또는 Windows 로그인 합니다.If not NULL, locallogin can be a SQL ServerSQL Server login or a Windows login. Windows 로그인은 직접적인 방법으로든 또는 액세스 권한이 있는 Windows 그룹의 멤버 자격을 이용한 방법으로든 반드시 SQL ServerSQL Server에 대한 액세스 권한을 보유해야 합니다.The Windows login must have been granted access to SQL ServerSQL Server either directly, or through its membership in a Windows group granted access.

[ @rmtuser = ] 'rmtuser'[ @rmtuser = ] 'rmtuser'
에 연결 하는 데 사용 되는 원격 로그인 rmtsrvname 때 @useself 은 FALSE입니다.Is the remote login used to connect to rmtsrvname when @useself is FALSE. 원격 서버 인스턴스의 경우 SQL ServerSQL Server Windows 인증을 사용 하지 않는 rmtuserSQL ServerSQL Server 로그인 합니다.When the remote server is an instance of SQL ServerSQL Server that does not use Windows Authentication, rmtuser is a SQL ServerSQL Server login. rmtusersysname, 기본값은 NULL입니다.rmtuser is sysname, with a default of NULL.

[ @rmtpassword = ] 'rmtpassword'[ @rmtpassword = ] 'rmtpassword'
연결 된 암호 rmtuser합니다.Is the password associated with rmtuser. rmtpasswordsysname, 기본값은 NULL입니다.rmtpassword is sysname, with a default of NULL.

반환 코드 값Return Code Values

0(성공) 또는 1(실패)0 (success) or 1 (failure)

주의Remarks

사용자가 로컬 서버에 로그온하여 연결된 서버의 테이블에 액세스하는 분산 쿼리를 실행하는 경우 로컬 서버는 반드시 해당 테이블에 액세스하는 사용자를 대신하여 연결된 서버에 로그온해야 합니다.When a user logs on to the local server and executes a distributed query that accesses a table on the linked server, the local server must log on to the linked server on behalf of the user to access that table. 로컬 서버가 연결된 서버에 로그온할 때 사용할 로그인 자격 증명을 지정하려면 sp_addlinkedsrvlogin을 사용합니다.Use sp_addlinkedsrvlogin to specify the login credentials that the local server uses to log on to the linked server.

참고

연결된 서버의 테이블을 사용하여 최적의 쿼리 계획을 만들려면 연결된 서버로부터의 데이터 분포 통계를 쿼리 프로세서가 가지고 있어야 합니다.To create the best query plans when you are using a table on a linked server, the query processor must have data distribution statistics from the linked server. 테이블의 열에 대해 제한된 사용 권한을 가진 사용자는 유용한 모든 통계를 가져올 권한이 없으므로 덜 효율적인 쿼리 계획을 받게 되어 성능 저하 문제를 겪을 수 있습니다.Users that have limited permissions on any columns of the table might not have sufficient permissions to obtain all the useful statistics, and might receive a less efficient query plan and experience poor performance. 연결된 서버가 SQL ServerSQL Server의 인스턴스라면 사용자는 모든 사용 가능한 통계를 얻기 위해 해당 테이블의 소유자 또는 연결된 서버에서 sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.If the linked server is an instance of SQL ServerSQL Server, to obtain all available statistics, the user must own the table or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role on the linked server. SQL Server 2012 SP1에서는 통계를 가져오기 위해 권한 제한을 수정하여 사용자가 SELECT 권한을 사용하여 DBCC SHOW_STATISTICS를 통해 통계에 액세스할 수 있게 되었습니다.SQL Server 2012 SP1 modifies the permission restrictions for obtaining statistics and allows users with SELECT permission to access statistics available through DBCC SHOW_STATISTICS. 자세한 내용은의 사용 권한 섹션을 참조 하십시오. DBCC show_statistics( Transact SQL ) .For more information, see the Permissions section of DBCC SHOW_STATISTICS (Transact-SQL).

sp_addlinkedserver를 실행하면 로컬 서버의 모든 로그인과 연결된 서버의 원격 로그인 간의 기본 매핑이 자동으로 생성됩니다.A default mapping between all logins on the local server and remote logins on the linked server is automatically created by executing sp_addlinkedserver. 기본 매핑은 SQL ServerSQL Server가 로컬 로그인 대신 연결된 서버에 연결할 때 해당 로그인의 사용자 자격 증명을 사용함을 나타냅니다.The default mapping states that SQL ServerSQL Server uses the user credentials of the local login when connecting to the linked server on behalf of the login. 이 해당와 sp_addlinkedsrvlogin을 실행 하는 @useself 로 설정 true 로컬 사용자 이름을 지정 하지 않고 연결된 된 서버에 대 한 합니다.This is equivalent to executing sp_addlinkedsrvlogin with @useself set to true for the linked server, without specifying a local user name. 기본 매핑을 변경하거나 특정 로컬 로그인에 새 매핑을 추가하는 경우에만 sp_addlinkedsrvlogin을 사용합니다.Use sp_addlinkedsrvlogin only to change the default mapping or to add new mappings for specific local logins. 기본 매핑 또는 다른 매핑을 삭제하려면 sp_droplinkedsrvlogin을 사용합니다.To delete the default mapping or any other mapping, use sp_droplinkedsrvlogin.

SQL ServerSQL Server에서는 sp_addlinkedsrvlogin을 사용하여 미리 지정된 로그인 매핑을 만드는 대신 다음 조건이 모두 충족될 때 쿼리를 실행하는 사용자의 Windows 보안 자격 증명(Windows 로그인 이름 및 암호)을 사용하여 연결된 서버에 자동으로 연결할 수 있습니다.Instead of having to use sp_addlinkedsrvlogin to create a predetermined login mapping, SQL ServerSQL Server can automatically use the Windows security credentials (Windows login name and password) of a user issuing the query to connect to a linked server when all the following conditions exist:

  • 사용자가 Windows 인증 모드를 사용하여 SQL ServerSQL Server에 연결합니다.A user is connected to SQL ServerSQL Server by using Windows Authentication Mode.

  • 클라이언트 및 보내는 서버에서 보안 계정 위임을 사용할 수 있습니다.Security account delegation is available on the client and sending server.

  • 공급자가 Windows에서 실행되는 SQL ServerSQL Server의 경우와 같이 Windows 인증 모드를 지원합니다.The provider supports Windows Authentication Mode; for example, SQL ServerSQL Server running on Windows.

참고

단일 홉 시나리오에는 위임을 사용할 필요가 없지만 다중 홉 시나리오에는 위임이 필요합니다.Delegation does not have to be enabled for single-hop scenarios, but it is required for multiple-hop scenarios.

연결된 서버가 SQL ServerSQL Server의 로컬 인스턴스에서 sp_addlinkedsrvlogin을 실행하여 정의된 매핑을 사용하여 인증을 수행하면 이후 로컬 서버가 아니라 연결된 서버에 의해 원격 데이터베이스의 개별 개체에 대한 사용 권한이 결정됩니다.After the authentication has been performed by the linked server by using the mappings that are defined by executing sp_addlinkedsrvlogin on the local instance of SQL ServerSQL Server, the permissions on individual objects in the remote database are determined by the linked server, not the local server.

사용자 정의 트랜잭션 내에서는 sp_addlinkedsrvlogin을 실행할 수 없습니다.sp_addlinkedsrvlogin cannot be executed from within a user-defined transaction.

PermissionsPermissions

서버에 대한 ALTER ANY LOGIN 권한이 필요합니다.Requires ALTER ANY LOGIN permission on the server.

Examples

1.A. 자체 사용자 자격 증명을 사용하여 연결된 서버에 모든 로컬 로그인 연결Connecting all local logins to the linked server by using their own user credentials

다음 예에서는 로컬 서버의 모든 로그인이 자체 사용자 자격 증명을 사용하여 Accounts 연결된 서버에 연결되도록 하는 매핑을 만듭니다.The following example creates a mapping to make sure that all logins to the local server connect through to the linked server Accounts by using their own user credentials.

EXEC sp_addlinkedsrvlogin 'Accounts';  

또는Or

EXEC sp_addlinkedsrvlogin 'Accounts', 'true';  

참고

개별 로그인에 대해 생성된 명시적 매핑이 있는 경우 이 매핑은 해당 연결된 서버에 존재할 수 있는 모든 전역 매핑보다 우선합니다.If there are explicit mappings created for individual logins, they take precedence over any global mappings that may exist for that linked server.

2.B. 다른 사용자 자격 증명을 사용하여 연결된 서버에 특정 로그인 연결Connecting a specific login to the linked server by using different user credentials

다음 예에서는 Domain\Mary Windows 사용자가 Accounts 로그인과 MaryP 암호를 사용하여 d89q3w4u 연결된 서버로 연결되도록 하는 매핑을 만듭니다.The following example creates a mapping to make sure that the Windows user Domain\Mary connects through to the linked server Accounts by using the login MaryP and password d89q3w4u.

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

중요

이 예에서는 Windows 인증을 사용하지 않습니다.This example does not use Windows Authentication. 암호는 암호화되지 않은 상태로 전송됩니다.Passwords will be transmitted unencrypted. 암호는 디스크, 백업 및 로그 파일에 저장되는 데이터 원본 정의와 스크립트에 표시될 수 있습니다.Passwords may be visible in data source definitions and scripts that are saved to disk, in backups, and in log files. 따라서 이러한 유형의 연결에는 관리자 암호를 사용하지 마십시오.Never use an administrator password in this kind of connection. 사용자의 환경과 관련된 보안 지침에 대해서는 해당 네트워크 관리자에게 문의하십시오.Consult your network administrator for security guidance specific to your environment.

관련 항목:See Also

연결 된 서버 카탈로그 뷰 ( Transact SQL ) Linked Servers Catalog Views (Transact-SQL)
sp_addlinkedserver(Transact-SQL) sp_addlinkedserver (Transact-SQL)
sp_droplinkedsrvlogin ( Transact SQL ) sp_droplinkedsrvlogin (Transact-SQL)
시스템 저장 프로시저(Transact-SQL)System Stored Procedures (Transact-SQL)