none
Erro query link server RRS feed

  • Pergunta

  • Prezados,

    boa tarde!

    Criei um Link Server do Sql Server 2008 para o MySql, testei a conexão e deu certo.

    Quando eu vou executar a consulta abaixo me retorna o erro

    select authuser from traffic where date="2013-04-26"


    O provedor do OLE DB "MSDASQL" para o servidor vinculado "MYSQL" retornou a mensagem "[MySQL][ODBC 5.1 Driver][mysqld-5.1.52]MySQL client ran out of memory".
    Mensagem 7320, Nível 16, Estado 2, Linha 6
    Não é possível executar a consulta "select authuser from traffic where date="2013-04-26"" no provedor do OLE DB "MSDASQL" para o servidor vinculado "MYSQL". 

    Porem se eu coloco um Distinct antes ele me traz os valores, so que eu preciso pegar todos os campos mesmo que repetido porque é uma tabela que guarda informações de acesso a internet. Entao com esse select vou pegar os dados coletados por dia na base Mysql, fazer um insert em uma tabela Sql Server.
    Alguém sabe o que pode esta ocasionando esse erro?

    sexta-feira, 26 de abril de 2013 20:36

Respostas

  • Carlos, um monte de gente usa Linked Server pra fazer o que vc quer mas todos que precisam trazer grande quantidade de dados sofrem do mesmo problema. Com o SSIS você consegue sim criar os pacotes e automatizar sem passar por esses transtornos. Abs!

    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br


    Se a resposta foi útil de alguma forma, classifique.

    segunda-feira, 29 de abril de 2013 13:12
    Moderador

Todas as Respostas

  • Fala Carlos, blz?

    Roda um @@VERSION e passa pra gente a versão do seu SQL Server.

    O mais correto pra extrair dados de uma base MySQL e inserir em outra base do SQL Server seria utilizando o Integration Services:

    http://www.packtpub.com/article/mysql-data-transfer-using-sql-server-integration-services-ssis

    Tem certeza que os data types estão corretos (os dados que estão vindo do MySQL estão no formato correto da coluna destino?

    Abs!


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br


    Se a resposta foi útil de alguma forma, classifique.

    segunda-feira, 29 de abril de 2013 00:55
    Moderador
  • Oi Luiz,

    bom dia!
    Obrigado pelo retorno, segue a versão

    Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86)   Apr  2 2010 15:53:02   Copyright (c) Microsoft Corporation  Express Edition with Advanced Services on Windows NT 6.0 <X86> (Build 6002: Service Pack 2) (Hypervisor) 

    Sim os data types estão corretos como eu citei se eu fizer um select com o distinct ele me retorna os valores, porem eu tenho que trazer todos os registros na data especifica, estou montando um relatório de acesso a internet então o distinct não vai ser útil nesse caso. Eu estava pensando em utilizar o link server para fazer o select das informações e em seguida inserir numa base SQL... com isso eu iria criar uma procedure e um agendamento para fazer o select e inserção nas tabelas para melhorar o desempenho da consulta. 

    Vou olhar sua dica do Integration Services, mas com o Integration eu consigo pegar dados do Mysql e puxar para o SQL de forma automatizada?

    segunda-feira, 29 de abril de 2013 11:38
  • Carlos, um monte de gente usa Linked Server pra fazer o que vc quer mas todos que precisam trazer grande quantidade de dados sofrem do mesmo problema. Com o SSIS você consegue sim criar os pacotes e automatizar sem passar por esses transtornos. Abs!

    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br


    Se a resposta foi útil de alguma forma, classifique.

    segunda-feira, 29 de abril de 2013 13:12
    Moderador
  • Meu caro, por favor, colabore com o Fórum e dê um retorno para continuarmos te ajudando. Abs!

    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br


    Se a resposta foi útil de alguma forma, classifique.

    quinta-feira, 2 de maio de 2013 16:10
    Moderador
  • Pessoal,

    desculpa pela demora... Vejam como ficou, dessa forma esta funcional

    INSERT INTO [icsar].[dbo].[Trafego] (Cod_Usuario, Des_Login,Dta_Trafego,Hor_Trafego,Num_Bytes,Des_Url)
    SELECT usersID,authuser,date,time,bytes,url
    FROM OPENQUERY (MYSQL,'SELECT usersID,authuser,date,time,bytes,url FROM traffic where date = curdate()');
    GO
    

    Porem vejam que ele esta pegando de acordo com a data atual no select, gostaria que viesse a data de uma consulta sql. Ou seja ele vai fazer um select na tabela Trafego, checar qual é a ultima data, guarda esse valor em variavel e com isso fazer o select onde a data or maior que a ultima data no banco.

    Obrigado

    segunda-feira, 13 de maio de 2013 14:09
  • Meu caro,

    Acho que você está querendo criar uma procedure, onde você coloca como parâmetro o valor que quer para a data, tipo:

    EXEC usp_ImportMySQL @Data = '13/05/2013"

    Se for, dá uma lida aqui:

    http://www.mssqltips.com/sqlservertutorial/162/how-to-create-a-sql-server-stored-procedure-with-parameters/

    Abs!


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br


    Se a resposta foi útil de alguma forma, classifique.

    segunda-feira, 13 de maio de 2013 19:22
    Moderador
  • Oi Luiz,

    na verdade não é bem uma procedure, se for o caso criar a procedure posso criar sim... o que eu quero é que no lugar onde esta

    FROM traffic where date = curdate()

    seja substituído pelo resultado de uma consulta, ou seja eu vou selecionar qual é a ultima data que esta no banco guardar em uma variável e subsituir o curdate() pela variável... só que não estou conseguindo usar a variável.

    Mas de qualquer forma obrigado!

    segunda-feira, 13 de maio de 2013 19:36