연결된 서버 관리

이 페이지에서는 인스턴스 등록, 연결된 서버 추가 및 연결된 서버 쿼리를 포함하여 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 인수가 2개 있습니다.

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

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

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

LINKED_SERVER_NAME을 연결된 서버의 이름으로 바꿉니다.

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

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를 사용자 로그인으로 바꿉니다.

다음 단계