CREATE REMOTE TABLE AS SELECT (Parallel Data Warehouse)

Aplica-se a:PDW (Analytics Platform System)

Seleciona os dados de um banco de dados do PDW (Analytics Platform System) e copia esses dados para uma nova tabela em um banco de dados SMP do SQL Server em um servidor remoto. O PDW (Analytics Platform System) usa o dispositivo, com todos os benefícios do processamento de consulta MPP, para selecionar os dados para a cópia remota. Use isto para cenários que exigem a funcionalidade do SQL Server.

Para configurar o servidor remoto, confira "Remote Table Copy" na documentação do produto Analytics Platform System (PDW).

Convenções de sintaxe de Transact-SQL

Sintaxe

CREATE REMOTE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }  AT ('<connection_string>')  
    [ WITH ( BATCH_SIZE = batch_size ) ]  
    AS <select_statement>  
[;]  
  
<connection_string> ::=   
    Data Source = { IP_address | hostname } [, port ]; User ID = user_name ;Password = password;  
  
<select_statement> ::=  
    [ WITH <common_table_expression> [ ,...n ] ]  
    SELECT <select_criteria>  

Argumentos

database_name
O banco de dados no qual criar a tabela remota. database_name é um banco de dados SQL Server. Default é o banco de dados padrão para o logon de usuário na instância de SQL Server de destino.

schema_name
O esquema da nova tabela. Default é o esquema padrão para o logon de usuário na instância de SQL Server de destino.

table_name
O nome da nova tabela. Para obter detalhes sobre nomes de tabelas permitidos, confiras "Regras de nomenclatura de objetos" na documentação do produto Analytics Platform System (PDW).

A tabela remota é criada como um heap. Não tem restrições de verificação nem gatilhos. A ordenação das colunas de tabela remota é a mesma ordenação das colunas de tabela de origem. Isso se aplica a colunas do tipo char, nchar, varchar e nvarchar.

connection_string
Uma cadeia de caracteres que especifica os parâmetros Data Source, User ID e Password para conexão com o banco de dados e servidor remoto.

A cadeia de conexão é uma lista delimitada por ponto-e-vírgula de pares de chave e valor. As palavras-chave não diferenciam maiúsculas de minúsculas. Espaços entre pares de chave e valor são ignorados. No entanto, os valores podem diferenciar maiúsculas de minúsculas, dependendo da fonte de dados.

Fonte de Dados
O parâmetro que especifica o nome ou endereço IP e o número da porta TCP do SQL Server SMP remoto.

hostname ou IP_address
Nome do computador do servidor remoto ou o endereço IPv4 do servidor remoto. Não há compatibilidade com endereços IPv6. Você pode especificar uma instância nomeada de SQL Server no formato Computer_Name\Instance_Name ou IP_address\Instance_Name. O servidor deve ser remoto e, portanto, não pode ser especificado como (local).

Número da porta TCP
O número da porta TCP da conexão. Você pode especificar o número da porta TCP de 0 a 65535 para uma instância do SQL Server que não escuta na porta padrão 1433. Por exemplo: ServerA,1450 ou 10.192.14.27,1435

Observação

Recomendamos que você se conecte a um servidor remoto usando o endereço IP. Dependendo da configuração da rede, a conexão com o nome do computador pode exigir etapas adicionais para usar o servidor DNS que não seja de dispositivo para resolver o nome para o servidor correto. Esta etapa não é necessária ao se conectar com um endereço IP. Para obter mais informações, confira "Usar um encaminhador de DNS para resolver nomes DNS que não são do dispositivo (Sistema de plataforma de análise)" na documentação do produto Analytics Platform System (PDW).

user_name
Um nome de logon de autenticação SQL Server válido. O número máximo de caracteres é 128.

password
A senha de logon. O número máximo de caracteres é 128.

batch_size
O número máximo de linhas por lote. O PDW (Analytics Platform System) envia linhas em lotes para o servidor de destino. Batch_size é um inteiro positivo >= 0. O padrão é 0.

WITH common_table_expression
Especifica um conjunto de resultados nomeado temporário, conhecido como uma CTE (expressão de tabela comum). Para obter mais informações, confira WITH common_table_expression (Transact-SQL).

SELECT <select_criteria> O predicado de consulta que especifica quais dados popularão a nova tabela remota. Para obter informações sobre a instrução SELECT, confira SELECT (Transact-SQL).

Permissões

Exige:

  • Permissão SELECT em cada objeto na cláusula SELECT.

  • Exige a permissão CREATE TABLE no banco de dados SMP de destino.

  • Exige as permissões ALTER, INSERT e SELECT no esquema SMP de destino.

Tratamento de erros

Se a cópia de dados para o banco de dados remoto falhar, o PDW (Analytics Platform System) anulará a operação, registrará um erro em log e tentará excluir a tabela remota. O PDW (Analytics Platform System) não assegura uma limpeza bem-sucedida da nova tabela.

Limitações e Restrições

Servidor de destino remoto:

  • TCP é o padrão e é o único protocolo compatível com a conexão a um servidor remoto.

  • O servidor de destino deve ser um servidor que não seja de dispositivo. CREATE REMOTE TABLE não pode ser usado para copiar dados de um dispositivo para outro.

  • A instrução CREATE REMOTE TABLE apenas cria novas tabelas. Portanto, a nova tabela não pode já existir. O banco de dados remoto e o esquema já devem existir.

  • O servidor remoto deve ter um espaço disponível para armazenar os dados que são transferidos do dispositivo para o banco de dados remoto do SQL Server.

Instrução SELECT:

  • Não há compatibilidade com as cláusulas ORDER BY e TOP nos critérios de seleção.

  • CREATE REMOTE TABLE não pode ser executado dentro de uma transação ativa ou quando a configuração de AUTOCOMMIT OFF está ativa para a sessão.

SET ROWCOUNT (Transact-SQL) não tem nenhum efeito nessa instrução. Para obter um comportamento semelhante, use TOP (Transact-SQL).

Comportamento de bloqueio

Depois de criar a tabela remota, a tabela de destino não é bloqueada até que a cópia seja iniciada. Portanto, é possível que outro processo exclua a tabela remota depois que ela é criada e antes do início da cópia. Quando isso ocorrer, o PDW (Analytics Platform System) gerará um erro e a cópia falhará.

Metadados

Use sys.dm_pdw_dms_workers (Transact-SQL) para exibir o progresso de copiar os dados selecionados para o servidor SMP remoto. Linhas com o tipo PARALLEL_COPY_READER contêm essas informações.

Segurança

CREATE REMOTE TABLE usa a Autenticação do SQL Server para se conectar à instância remota do SQL Server; ele não usa a Autenticação do Windows.

A rede externa do PDW (Analytics Platform System) deve ter o firewall ativado, com exceção de portas SQL Server, portas administrativas e portas de gerenciamento.

Para ajudar a prevenir a perda acidental de dados ou que os dados sejam corrompidos, a conta de usuário usada para a cópia por meio do dispositivo para o banco de dados de destino deve ter as permissões mínimas necessárias no banco de dados de destino.

As configurações de conexão permitem que você se conecte à instância de SQL Server do SMP com o SSL protegendo os dados de nome de usuário e senha, mas com os dados reais enviados descriptografados em texto sem formatação. Quando isso ocorrer, um usuário mal-intencionado poderá interceptar o texto da instrução CREATE REMOTE TABLE, que contém o nome de usuário e a senha do SQL Server para fazer logon na instância de SQL Server SMP. Para impedir esse risco, use a criptografia de dados na conexão com a instância SMP do SQL Server.

Exemplos

a. Criando uma tabela remota

Este exemplo cria uma tabela remota SMP do SQL Server chamada MyOrdersTable no banco de dados OrderReporting e o esquema Orders. O banco de dados OrderReporting está em um servidor chamado SQLA que escuta na porta padrão 1433. A conexão com o servidor usa as credenciais do usuário David, cuja senha é e4n8@3.

CREATE REMOTE TABLE OrderReporting.Orders.MyOrdersTable  
AT ( 'Data Source = SQLA, 1433; User ID = David; Password = e4n8@3;' )  
AS SELECT <select_criteria>;  

B. Consultando a DMV sys.dm_pdw_dms_workers para obter o status da cópia de tabela remota

Esta consulta mostra como exibir o status da cópia de uma cópia de tabela remota.

SELECT * FROM sys.dm_pdw_dms_workers   
WHERE type = 'PARALLEL_COPY_READER';  

C. Usando uma dica de junção de consulta com CREATE REMOTE TABLE

Essa consulta mostra a sintaxe básica para uso de uma dica de consulta de junção com CREATE REMOTE TABLE. Depois que a consulta é enviada para o nó de Controle, o SQL Server, em execução nos nós de Computação, aplicará a estratégia de junção hash ao gerar o plano de consulta do SQL Server. Para obter mais informações sobre dicas de junção e como usar a cláusula OPTION, confira Cláusula OPTION (Transact-SQL&).

USE ssawPDW;  
CREATE REMOTE TABLE OrderReporting.Orders.MyOrdersTable  
AT ( 'Data Source = SQLA, 1433; User ID = David; Password = e4n8@3;' )  
    AS SELECT T1.* FROM OrderReporting.Orders.MyOrdersTable T1   
    JOIN OrderReporting.Order.Customer T2  
    ON T1.CustomerID=T2.CustomerID OPTION (HASH JOIN);