TRANSFERIR DADOS ENTRE SERVIDORES
Preciso enviar as vendas locais para um servidor externo.
Consegui fazer isso usando o linkedserver.
insert openquery([srv], .... o srv e o link do outro servidor.
Problema:
Quando coloco dentro de uma transaction da erro:
[txt-color=#0000f0]set xact_abort ON
BEGIN TRANSACTION TR_ENVIA
BEGIN TRY
[/txt-color]
O problema e o serviço MSDTC... ja fiz o possÃvel e impossÃvel e não consigo liberar isso... segui milhares de tutoriais, até funciona quando estou na rede local, mas externo não funciona. (Ja coloquei o dmz para o servidor que vai receber a conexao)
Ja estou desistindo de usar o LinkedServer.
Alguém conhece alguma outra alternativa ou ja conseguiu fazer Transacton entre servidores externo (Inserido ou atualizando o servidor externo.)
Obrigado.
Caro LUISNET10
Qual a versão do S.O. e do Banco de dados?
Qual SPK do seu servidor?
Boa Sorte
Qual a versão do S.O. e do Banco de dados?
Qual SPK do seu servidor?
Boa Sorte
Bom dia Alessandro..
Estou com dois servidores na locaweb..
um com server 2003 data center SPK 2 e SQL 2008 r2 10.50.1600
outro com server 2008 r2 Data Center SPK 1 e SQL 2008 r2 10.50.1600
e tb estou com um servidor no Azure (mas pelo que li não aceita operações coordenadas)
Fazendo um teste interno eu consigo usar a Transaction, mas quanto tento externo não permite, ainda acredito que seja alguma porta do MSDTC que não atribui no firewall ou outro tipo de permissão.
Valeu Alessandro.
Caro LUISNET10
Veja bem, quando você utiliza transação distribuÃda entre dois servidores SQL Server você precisa configurar e ativar o MSDTC em ambos os nós. você já fez isso?
Tem um procedimento para essa configuração....... onde até o firewall é feito de forma manual por causa do server 2003.....
Passo a Passo
Etapas para habilitar o acesso MSDTC da rede
1.Clique em Iniciar, aponte para Painel de controle e clique em Adicionar ou remover programas.
2.Clique em Adicionar/remover componentes do Windows.
3.Selecione Servidor de aplicativo e clique em Detalhes.
4.Selecione Ativar acesso ao MSDTC da rede e depois clique em OK.
5.Clique em Avançar.
6.Clique em Concluir.
7.Pare e reinicie o serviço do Distributed Transaction Coordinator.
8.Pare e reinicie o Microsoft SQL Server e os outros serviços de gerenciamento de recursos que fazem parte da transação distribuÃda, tais como o Microsoft Message Queuing........
O 8º passo é o mais importante pois cada servidor tem algum serviço associado ao SGBD...... terá que ser todos para não gerar erros...........
Essa configuração é bem genérica do Linked Server:
EXEC sp_addlinkedserver
@server=’NomeDoLinkedServer’,
@srvproduct=â€,
@provider=’SQLNCLI’,
@datasrc=’tcp:xxx.xxx.xxx.xxx,Porta’
Porem, essa empresa remota iria bloquear a sua porta 1433 do SQL Server e colocar a instancia em outra porta.....
Boa sorte
Veja bem, quando você utiliza transação distribuÃda entre dois servidores SQL Server você precisa configurar e ativar o MSDTC em ambos os nós. você já fez isso?
Tem um procedimento para essa configuração....... onde até o firewall é feito de forma manual por causa do server 2003.....
Passo a Passo
Etapas para habilitar o acesso MSDTC da rede
1.Clique em Iniciar, aponte para Painel de controle e clique em Adicionar ou remover programas.
2.Clique em Adicionar/remover componentes do Windows.
3.Selecione Servidor de aplicativo e clique em Detalhes.
4.Selecione Ativar acesso ao MSDTC da rede e depois clique em OK.
5.Clique em Avançar.
6.Clique em Concluir.
7.Pare e reinicie o serviço do Distributed Transaction Coordinator.
8.Pare e reinicie o Microsoft SQL Server e os outros serviços de gerenciamento de recursos que fazem parte da transação distribuÃda, tais como o Microsoft Message Queuing........
O 8º passo é o mais importante pois cada servidor tem algum serviço associado ao SGBD...... terá que ser todos para não gerar erros...........
Essa configuração é bem genérica do Linked Server:
EXEC sp_addlinkedserver
@server=’NomeDoLinkedServer’,
@srvproduct=â€,
@provider=’SQLNCLI’,
@datasrc=’tcp:xxx.xxx.xxx.xxx,Porta’
Porem, essa empresa remota iria bloquear a sua porta 1433 do SQL Server e colocar a instancia em outra porta.....
Boa sorte
Boa Tarde Alessandro..
Amigo realmente esta complicado, olha o cenário, tenho dentro do escritorio dos netvirtua, coloquei o gateway de uma maquina em um virtua e no meu notebook coloquei o outro gateway.
Fiz o link server usando o ddns, sendo assim o link estava com o ip externo, funcionou, a transação foi feita com sucesso.
Fui em um cliente meu que também tem virtua, e mesmo com o meu notebook não funcionou.
O roteador está com o DMZ e a maquina está com o firewall desativado.
Não gostaria de me passar um valor para fazer isso remotamente, passo o orcamento para o escritorio, dependendo do valor eles aceitam, posso te auxiliar.
Abaixo está o codigo que crio linkserver. e a consulta de teste.
EXEC master.dbo.sp_addlinkedserver @server=[ô]srv[ô] ,@srvproduct=[ô]SQLNCLI10[ô]
,@provider =[ô]SQLNCLI10[ô]
,@datasrc = @serv
,@location = [ô][ô]
,@provstr = [ô][ô]
,@catalog = @catalog
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]collation compatible[ô], @optvalue=N[ô]true[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]data access[ô], @optvalue=N[ô]true[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]dist[ô], @optvalue=N[ô]false[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]pub[ô], @optvalue=N[ô]false[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]rpc[ô], @optvalue=N[ô]true[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]rpc out[ô], @optvalue=N[ô]true[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]sub[ô], @optvalue=N[ô]false[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]connect timeout[ô], @optvalue=N[ô]0[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]collation name[ô], @optvalue=null
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]lazy schema validation[ô], @optvalue=N[ô]false[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]query timeout[ô], @optvalue=N[ô]0[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]use remote collation[ô], @optvalue=N[ô]false[ô]
EXEC master.dbo.sp_serveroption @server=N[ô]srv[ô], @optname=N[ô]remote proc transaction promotion[ô], @optvalue=N[ô]true[ô]
--– Configura um login para acessar o Linked Server
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = [ô]srv[ô],
@locallogin =NULL , @useself = [ô]false[ô],
@rmtuser = @user, @rmtpassword = @password
--------- CONSULTA
set xact_abort ON
BEGIN TRANSACTION TR_ENVIA
BEGIN TRY
INSERT INTO openquery([srv], [ô]select
[id],[nome],[endereco] from tb_cliente_dados where 1=0[ô])
select id, nome, endereco from tb_cliente_dados
-- select * from openquery([srv], [ô]select * from tb_cliente_dados[ô])
COMMIT TRANSACTION TR_ENVIA
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION TR_ENVIA
PRINT [ô]Erro: [ô] + ERROR_MESSAGE()
END CATCH
Caro LUISNET10
Posso realizar esta processo, talvez seu problema esta nas configurações do servidor, e teria que verificar todos os serviços do servidor que recebe estes dados pelo entre o SO e o Banco de dados......
aparentemente seus scripts não são problemáticos e muito simples
Posso passar valore/hora para este serviço pelo e-mail para essa sua consulta (--------- CONSULTA) apenas para fazer as configurações dos processos necessários para utilizar o Server S.O. e o SQL Server........
SQL server 2005/2008/2012
Criar o Linked Server
Configurar Linked Server
Aplicar segurança
Configurar serviços (Windows Server 2003/2008/2012) TCP/IP
Processos Firewall
Configurar Roteador
alessandromidi@hotmail.com
Passo também uma orientação para ajustar as plataformas para uso entre server 2003/2008/2012 e SQL 2000/2005/2008/2012.........
Ótimas rotinas para integração entre as diferenças de versões e serviços.....
Boa sorte
Posso realizar esta processo, talvez seu problema esta nas configurações do servidor, e teria que verificar todos os serviços do servidor que recebe estes dados pelo entre o SO e o Banco de dados......
aparentemente seus scripts não são problemáticos e muito simples
Posso passar valore/hora para este serviço pelo e-mail para essa sua consulta (--------- CONSULTA) apenas para fazer as configurações dos processos necessários para utilizar o Server S.O. e o SQL Server........
SQL server 2005/2008/2012
Criar o Linked Server
Configurar Linked Server
Aplicar segurança
Configurar serviços (Windows Server 2003/2008/2012) TCP/IP
Processos Firewall
Configurar Roteador
alessandromidi@hotmail.com
Passo também uma orientação para ajustar as plataformas para uso entre server 2003/2008/2012 e SQL 2000/2005/2008/2012.........
Ótimas rotinas para integração entre as diferenças de versões e serviços.....
Boa sorte
LUISNET10,
Faça as configurações que nosso amigo AJSO te disse e depois faça o seguinte também:
1 - Verifique se o serviço está ativo no SQL, a opção [Ô]value_in_use[Ô] tem estar como [Ô]1[Ô]:
2 - Se não estiver habilitado, execute o script abaixo:
3 - No seu script utilize o begin transaction da seguinte maneira:
Vê se isso ai te ajuda.
Faça as configurações que nosso amigo AJSO te disse e depois faça o seguinte também:
1 - Verifique se o serviço está ativo no SQL, a opção [Ô]value_in_use[Ô] tem estar como [Ô]1[Ô]:
SELECT * FROM SYS.CONFIGURATIONS
WHERE NAME = [ô]remote proc trans[ô];
2 - Se não estiver habilitado, execute o script abaixo:
EXEC SP_CONFIGURE [ô]remote proc trans[ô],[ô]1[ô]
RECONFIGURE ;
GO
3 - No seu script utilize o begin transaction da seguinte maneira:
BEGIN DISTRIBUTED TRANSACTION;
...
COMMIT TRANSACTION;
Vê se isso ai te ajuda.
Tópico encerrado , respostas não são mais permitidas