none
Stored procedure para importar tabelas RRS feed

  • Pergunta

  • Pessoal,

    Tenho 2 bancos (A e B) e estao em servidores diferentes.

    Como crio uma stored procedure que traga as informacoes das tabelas de A para B e ainda eu consiga fazer os mappings dos campos ?

    segunda-feira, 5 de maio de 2014 15:26

Respostas

  • AGA Neto,

    Você vai precisar criar um linked server no servidor de destino dos dados.

    Para criar um linked server, adapte o script abaixo para sua necessidade:

    sp_addlinkedserver 'SEU_SERVIDOR\SUA_INSTANCIA', N'SQL Server'
    GO
    
    sp_addlinkedsrvlogin @rmtsrvname ='SEU_SERVIDOR\SUA_INSTANCIA'
    , @useself = 'FALSE' 
    , @locallogin = null 
    , @rmtuser ='SeuUsuario'
    , @rmtpassword = 'SuaSenha'
    GO

    Você deve incluir às referências do linked server na sua instrução SQL dentro da procedure, antes da declaração do nome da tabela de origem. Veja abaixo um exemplo:

    USE BANCO_A
    GO
    
    --INSERIR DADOS NA TABELA EXEMPLO DO SERVIDOR "A"
    INSERT INTO TB_EXEMPLO_A (NM_EXEMPLO)
    SELECT NM_EXEMPLO FROM [SEU_SERVIDOR\SUA_INSTANCIA].[BANCO_B].dbo.TB_EXEMPLO_B
    GO

    Para maiores informações veja:

    http://technet.microsoft.com/en-us/library/ms188279.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 5 de maio de 2014 15:48
    Moderador
  • Qdo eu executo ja a primeira linha:

    sp_addlinkedserver 'SEU_SERVIDOR\SUA_INSTANCIA', N'SQL Server'
    GO

    Msg 15247, Level 16, State 1, Procedure sp_MSaddserver_internal, Line 34
    User does not have permission to perform this action.

    Mas como se eu estou logado como administrator ?

    Você está logado como Administrador no Windows, mas você está executando esta tarefa como "sa" ?

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Marcado como Resposta Giovani Cr quarta-feira, 7 de maio de 2014 19:52
    segunda-feira, 5 de maio de 2014 17:18
    Moderador
  • AGA,

    Para criar um Linked Server é necessário que seu usuário tenha permissão de SysAdmin no SQL Server.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Giovani Cr quarta-feira, 7 de maio de 2014 19:52
    quarta-feira, 7 de maio de 2014 19:29

Todas as Respostas

  • AGA Neto,

    Você vai precisar criar um linked server no servidor de destino dos dados.

    Para criar um linked server, adapte o script abaixo para sua necessidade:

    sp_addlinkedserver 'SEU_SERVIDOR\SUA_INSTANCIA', N'SQL Server'
    GO
    
    sp_addlinkedsrvlogin @rmtsrvname ='SEU_SERVIDOR\SUA_INSTANCIA'
    , @useself = 'FALSE' 
    , @locallogin = null 
    , @rmtuser ='SeuUsuario'
    , @rmtpassword = 'SuaSenha'
    GO

    Você deve incluir às referências do linked server na sua instrução SQL dentro da procedure, antes da declaração do nome da tabela de origem. Veja abaixo um exemplo:

    USE BANCO_A
    GO
    
    --INSERIR DADOS NA TABELA EXEMPLO DO SERVIDOR "A"
    INSERT INTO TB_EXEMPLO_A (NM_EXEMPLO)
    SELECT NM_EXEMPLO FROM [SEU_SERVIDOR\SUA_INSTANCIA].[BANCO_B].dbo.TB_EXEMPLO_B
    GO

    Para maiores informações veja:

    http://technet.microsoft.com/en-us/library/ms188279.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    segunda-feira, 5 de maio de 2014 15:48
    Moderador
  • Qdo eu executo ja a primeira linha:

    sp_addlinkedserver 'SEU_SERVIDOR\SUA_INSTANCIA', N'SQL Server'
    GO

    Msg 15247, Level 16, State 1, Procedure sp_MSaddserver_internal, Line 34
    User does not have permission to perform this action.

    Mas como se eu estou logado como administrator ?

    segunda-feira, 5 de maio de 2014 16:11
  • Qdo eu executo ja a primeira linha:

    sp_addlinkedserver 'SEU_SERVIDOR\SUA_INSTANCIA', N'SQL Server'
    GO

    Msg 15247, Level 16, State 1, Procedure sp_MSaddserver_internal, Line 34
    User does not have permission to perform this action.

    Mas como se eu estou logado como administrator ?

    Você está logado como Administrador no Windows, mas você está executando esta tarefa como "sa" ?

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    • Marcado como Resposta Giovani Cr quarta-feira, 7 de maio de 2014 19:52
    segunda-feira, 5 de maio de 2014 17:18
    Moderador
  • AGA,

    Para criar um Linked Server é necessário que seu usuário tenha permissão de SysAdmin no SQL Server.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Giovani Cr quarta-feira, 7 de maio de 2014 19:52
    quarta-feira, 7 de maio de 2014 19:29