Ir para conteúdo
Fórum Script Brasil

fulvio

Moderadores
  • Total de itens

    1.218
  • Registro em

  • Última visita

Posts postados por fulvio

  1. Bom dia Vinicius,

    Segue um exemplo. Rode o select separadamente para ver os resultados, ok?

    DECLARE @Conta VARCHAR(10)
    
    SET @Conta= '2255669-9'
    
    -- Conversão dá errado porque tem caracter
    SELECT CAST (@Conta AS integer)
    
    -- Assim dá certo
    SELECT CAST (replace(@Conta, '-', '') AS integer)

  2. Bom dia Fagner,

    Para a sintaxe ficar dinâmica, você deverá:

    - criar uma variável

    - inserir o script

    - executar a partir da variável.

    Ex.:

    DECLARE @String VARCHAR(100)
    DECLARE @Variavel VARCHAR(10)
    
    SET @Variavel = 'top 10 '
    
    SET @String = 'select ' + @Variavel + ' * from sysobjects'
    
    EXEC (@String)

  3. Creio que transações bidirecionais não resolveria este problema, pois está utilizando os limites da ferramenta.

    Para não alterar o código fonte, a view teria que ter o nome exato da tabela origem. As tabelas que conteriam as informações teriam nomes diferentes e seriam identificadas como "tabelas de transporte". Com isto não precisaria realizar alterações no código fonte.

    Não conheço nenhum caso de tabelas que tinham esta quantidade de colunas (formas normais). Estou dando algumas dicas, mas nunca vi nenhum caso concreto em relação a isto.

  4. Bom dia Rcardo,

    Você está utilizando o mesmo nome de pacote para executar a nova alteração? Caso seja, seria interessante alterar o nome, pois o sql grava as informações do pacote em sua log.

    Quando você realiza a execução, ele recupera da log informações do pacote. Para não ter problemas, renomeie o novo script.

  5. Boa tarde Vinicius,

    você poderá fazer a conversão para inteiro ou decimal, mas no campo a converter só poderá conter números.

    SELECT
        dbo.tblPlano_contas_movimento.DT_Previsao AS DT_Previsao,
        cast (dbo.tblPlano_contas_movimento.NO_Documento AS integer),
        dbo.[Contas Correntes].NúmeroDaAgência,
        dbo.[Contas Correntes].NomeDaConta,
        dbo.[Contas Correntes].NúmeroDaConta,
        dbo.tblPlano_contas_movimento.DS_Complemento AS DS_Complemento,
        dbo.tblPlano_contas_movimento.VL_Lancamento * -1 AS VL_Lancamento,
        dbo.tblPlano_contas_movimento.DT_Pagamento AS DT_Pagamento,
        dbo.tblPlano_contas_movimento.CD_Conta AS CONTA,
        dbo.tblPlano_contas_movimento.DT_Lancamento AS DT_Lancamento,
        dbo.[Contas Correntes].NO_Banco
    FROM
        dbo.tblPlano_contas_movimento
    RIGHT OUTER JOIN
        dbo.[Contas Correntes] ON dbo.tblPlano_contas_movimento.CD_Conta = dbo.[Contas Correntes].CD_Conta_Apagar
    WHERE    
        (dbo.tblPlano_contas_movimento.VL_Lancamento < 0) AND (dbo.[Contas Correntes].CÓDIGODACONTA <> 0)
    ORDER BY
        2, dbo.[Contas Correntes].NúmeroDaAgência

  6. Bom dia Eder,

    Seja bem vindo no Forum!!

    As vezes temos muitos posts e acabamos nos perdendo... rs.

    Em relação a sua dúvida, você terá que manipular o nível de linha e coluna.

    Informações do msdn:

    Se o seu aplicativo não exigir o rastreamento de nível de coluna, será recomendado que você use o rastreamento de nível de linha (o padrão) porque normalmente ele resulta em um melhor desempenho da sincronização. Se o rastreamento de linha for usado, a tabela base poderá incluir no máximo 1.024 colunas, mas as colunas devem ser filtradas do artigo de modo que sejam publicadas 246 colunas, no máximo. Se rastreamento de coluna for usado, a tabela base poderá incluir no máximo 246 colunas.

    Como utilizar (dica):

    http://msdn.microsoft.com/pt-br/library/ms...sql.105%29.aspx

  7. Bom dia Bonamim,

    O problema não está no LEFT JOIN, mas sim nos subselects e temporárias que está utilizando.

    Não sei a lógica nem os relacionamentos entre as tabelas, mas a princípio terá que:

    - Diminuir ao máximo as tabelas temporárias (criá-las só quando não tiver jeito mesmo). As tabelas temporárias além de consumir muita memória, não possui formas "boas" de indexação. Se na temporária tiver muitos registros e ainda fizer JOIN's com outras temporárias, seu tempo de resposta vai nas alturas.

    - Nunca utilizar subselects (eles mais que duplicam o tempo de execução, pois o sql aguarda o resultado de um select para executar o outro).

    Analise os relacionamentos entre as tabelas e procure extrair os dados em um sql "limpo". Esta será a melhor forma de otimizar o resultado.

    OBS.: 5 mil registros é fichinha pro sql. Manipulamos 30 milhões de registros com resultados satisfatórios.

  8. Bom dia Ricardo,

    Este script não é tão simples assim, pois este tipo de manipulação não está bem relacionada com o sql, mas com um aplicativo ou serviço.

    O sql não consegue identificar o nome da planilha, pois o comando que deve passar para o sql é "ler planilha X". Desta forma, terá que ter antecipadamente o nome da planilha.

    O melhor mesmo seria criar um serviço lendo o diretório das planilhas de tempos em tempos. Assim que identificar alguma planilha na pasta, ler e dar carga na base. Este aplicativo fará todo o controle, cabendo ao sql apenas as funções específicas a ele.

×
×
  • Criar Novo...