연결된 서버 관리

이 페이지에서는 인스턴스 등록, 연결된 서버 추가 및 연결된 서버 쿼리를 포함하여 Cloud SQL 인스턴스에서 연결된 서버를 관리하는 방법에 대한 정보를 제공합니다.

연결된 서버를 허용하도록 인스턴스 등록

인스턴스에 cloudsql enable linked servers 플래그를 추가하려면 다음 명령어를 사용합니다.

gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on

INSTANCE_NAME을 연결 서버에 사용할 인스턴스의 이름으로 바꿉니다.

자세한 내용은 데이터베이스 플래그 구성을 참조하세요.

연결된 서버 추가

연결된 서버를 추가하려면 Transact-SQL sp_addlinkedserver 명령어를 실행합니다.

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID'

다음을 바꿉니다.

  • LINKED_SERVER_NAME: 생성할 연결 서버의 이름
  • TARGET_SERVER_ID: 연결 서버의 네트워크 이름, DNS 이름 또는 IP 주소. 인스턴스 이름에는 servername\instancename 형식을 사용합니다. 인스턴스에서 비표준 포트를 사용하는 경우 포트 번호를 추가합니다. 예를 들면 servername\instancename, 8080입니다.

현재 로그인한 사용자의 사용자 매핑을 추가하려면 다음 명령어를 실행합니다.

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @useself=N'True'

LINKED_SERVER_NAME: 연결된 서버의 이름

기본 원격 로그인 및 비밀번호를 만들거나 업데이트하고 모든 로컬 로그인에 적용하려면 다음 명령어를 실행합니다.

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @useself=N'False',
    @locallogin=N'LOGIN',
    @rmtuser=N'USER_ID',
    @rmtpassword='PASSWORD';

다음을 바꿉니다.

  • LINKED_SERVER_NAME: 연결 서버의 이름
  • LOGIN: 로컬 서버의 로그인. locallogin은 기본값이 NULL인 sysname입니다. NULL은 이 항목이 rmtsrvname에 연결되는 모든 로컬 로그인에 적용됨을 지정합니다. NULL이 아니면locallogin은 SQL Server 로그인 또는 Windows 로그인입니다. Windows 로그인을 사용하는 경우 직접 또는 액세스 권한이 있는 Windows 그룹에서 해당 멤버십을 통해 SQL Server에 액세스할 수 있어야 합니다.
  • USER_ID: 사용자 로그인
  • PASSWORD: 사용자 비밀번호

암호화된 연결이 있는 연결된 서버 추가

암호화된 연결을 사용하여 연결된 서버를 추가하려면 Transact-SQL sp_addlinkedserver 명령어를 실행합니다.

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID,
    @provstr=N'Encrypt=yes;'

다음을 바꿉니다.

  • LINKED_SERVER_NAME: 생성할 연결 서버의 이름
  • TARGET_SERVER_ID: 대상 서버의 이름 또는 대상 서버의 IP 주소 및 포트 번호

서버 이름이 인증서의 이름과 다른 경우 SQL Server가 서버 인증서를 신뢰할 수 있음을 나타내야 합니다. 제공업체 문자열을 업데이트하려면 다음 명령어를 실행합니다.

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID,
    @provstr=N'Encrypt=yes;TrustServerCertificate=yes;'

다음을 바꿉니다.

  • LINKED_SERVER_NAME: 생성할 연결 서버의 이름
  • TARGET_SERVER_ID: 대상 서버의 이름 또는 대상 서버의 IP 주소 및 포트 번호

연결된 서버 쿼리

Cloud SQL은 다음 명령어 외에도 4단계 이름(서버 이름, 데이터베이스 이름, 스키마 이름, 객체 이름)을 사용하여 연결된 서버를 쿼리합니다.

  • OPENQUERY는 지정된 서버에서 쿼리를 실행합니다.
  • EXECUTE를 사용하면 연결된 서버에 동적 SQL을 실행할 수 있습니다.

자세한 내용은 쿼리 원격 실행 옵션 비교를 참고하세요.

연결된 서버에서 원격 프로시저 호출 사용 설정

리모트 프로시져 콜(RPC)을 사용하면 연결된 서버에서 저장 프로시져를 실행할 수 있습니다. RPC를 추가하려면 RPC 인수가 있는 Transact-SQL sp_serveroption 명령어를 실행합니다. RPC 인수는 두 가지가 있습니다.

  • rpc은 지정된 서버에서 RPC를 사용 설정합니다.
  • rpc out은 지정된 서버에 RPC를 사용 설정합니다.

rpc 인수와 함께 다음 sp_serveroption 명령어를 사용하여 LINKED_SERVER_NAME에서 RPC를 사용 설정합니다.

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc',
    @optvalue='TRUE'

LINKED_SERVER_NAME: 연결된 서버의 이름

rpc out 인수와 함께 다음 sp_serveroption 명령어를 사용하여 RPC를 사용 설정합니다.

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc out',
    @optvalue='TRUE'

LINKED_SERVER_NAME: 연결된 서버의 이름

연결된 서버의 사용자 매핑 삭제

이전에 추가한 사용자 매핑을 삭제하려면 다음 명령어를 실행합니다.

EXEC master.dbo.sp_droplinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @locallogin=N'LOGIN';

다음을 바꿉니다.

  • LINKED_SERVER_NAME: 삭제할 연결된 서버의 이름
  • LOGIN: 로컬 서버의 로그인. locallogin은 기본값이 NULL인 sysname입니다. NULL은 이 항목이 rmtsrvname에 연결되는 모든 로컬 로그인에 적용됨을 지정합니다. NULL이 아니면locallogin은 SQL Server 로그인 또는 Windows 로그인입니다. Windows 로그인을 사용하는 경우 직접 또는 액세스 권한이 있는 Windows 그룹에서 해당 멤버십을 통해 SQL Server에 액세스할 수 있어야 합니다.

등록된 인스턴스를 연결된 서버 허용에서 삭제

연결된 서버를 삭제하려면 다음 단계를 따르세요.

  • Transact-SQL sp_dropserver 저장 프로시저를 사용하여 기존 연결된 서버를 삭제합니다.
  • 등록된 인스턴스를 삭제하려면 cloudsql enable linked servers 플래그를 삭제합니다.

    gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off

    INSTANCE_NAME을 연결된 서버를 삭제하려는 인스턴스의 이름으로 바꿉니다.

    또는 다음 명령어를 실행하여 모든 데이터베이스 플래그를 지울 수 있습니다.

    gcloud sql instances patch INSTANCE_NAME --clear-database-flags

    INSTANCE_NAME을 연결된 서버를 삭제하려는 인스턴스의 이름으로 바꿉니다.

문제 해결

오류 메시지 문제 해결
Msg 7411, Level 16, State 1, Line 25

Server 'LINKED_SERVER_NAME' is not configured for DATA ACCESS.
DataAccess 옵션이 사용 중지되었습니다. 다음 명령어를 실행하여 데이터 액세스를 사용 설정합니다.
EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='data access',
    @optvalue='TRUE'

LINKED_SERVER_NAME: 연결된 서버의 이름

Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) 암호화된 연결을 설정하는 동안 이 문제가 발생하면 연결된 서버에 액세스할 때 사용자 ID를 제공하는 다른 방법을 시도해야 합니다. 이렇게 하려면 다음 명령을 실행합니다.
EXEC master.dbo.sp_addlinkedserver
   @server = N'LINKED_SERVER_NAME',
   @srvproduct= N'',
   @provider= N'SQLNCLI',
   @datasrc= N'TARGET_SERVER_ID',
   @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID'

다음을 바꿉니다.

  • LINKED_SERVER_NAME: 연결 서버의 이름
  • TARGET_SERVER_ID: 대상 서버의 이름 또는 대상 서버의 IP 주소 및 포트 번호
  • USER_ID: 사용자 로그인

다음 단계