Ir para conteúdo
Fórum Script Brasil

fulvio

Moderadores
  • Total de itens

    1.218
  • Registro em

  • Última visita

Tudo que fulvio postou

  1. Bom dia Thiago, você pode utilizar o CASE no Update....
  2. Boa tarde Dju, Rs.... caminhando com calma a gente chega lá... No exemplo que postei com as temporárias (acima), fiz outro select utilizando o UNION (abaixo). Desta forma, pego as pessoas que trabalharam no setor 1 no período que informou; e pego as pessoas de qualquer setor no período que informou. Ficaria assim: select f.matricula, f.funcionario, s.setor, s.DtMudanca from #Funcionarios f, #Setor s where f.matricula=s.matricula and Setor=1 and DtMudanca between '2007-04-01' and '2007-04-30' UNION select f.matricula, f.funcionario, s.setor, s.DtMudanca from #Funcionarios f, #Setor s where f.matricula=s.matricula and DtMudanca between '2007-04-01' and '2007-04-30' Caso não seja isto, estou sempre on line no horário comercial. Podemos resolver on line pelo MSN (daasabh@hotmail.com).
  3. Bom dia Dju, Não seria os funcionários que estão entre as datas pesquisadas? O funcionário que foi admitido em 2006 e em janeiro de 2009 para o setor 1, sairá na relação desde que esteja entre as datas de pesquisa. Se o intervalo da pesquisa for apenas 2009, ele sairá uma vez. Se o intervalo da pesquisa for de 2006 a 2009, ele sairá duas vez. você queria todos os funcionários em uma relação? E caso o funcionário passe por vários setores, selecionar o setor mais recente? Desculpe, mas não entendi ao certo. Poste um exemplo com dados (igual no 1º post), e com o resultado que deseja obter. Pode deixar que resolveremos... rs.
  4. fulvio

    Cursor e View

    Cursor é um ponteiro para uma tabela que você cria. A View é uma tabela criada, para agrupar dados de várias tabelas.
  5. fulvio

    Cursor e View

    Bom dia Roger, Dê uma olhada nestes dois tópicos: http://scriptbrasil.com.br/forum/index.php?showtopic=150409 http://scriptbrasil.com.br/forum/index.php?showtopic=150425
  6. Bom dia Dju, Criei duas temporárias, inserindo os dados de exemplo que passou acima. Fiz os selects de acordo com o que necessita. Segue os exemplos abaixo: create table #Funcionarios (Matricula int, Funcionario varchar(50)) create table #Setor (Matricula int, DtMudanca datetime, Setor int) insert into #Funcionarios values (10020, 'JOAO BATISTA') insert into #Funcionarios values (10242, 'MARIA TERESINHA') insert into #Funcionarios values (09632, 'JOAQUIM DA SILVA') insert into #Setor values (10020, '2007-04-01', 1) insert into #Setor values (10020, '2009-07-31', 2) insert into #Setor values (10020, '2009-10-01', 5) insert into #Setor values (09632, '2007-04-30', 1) insert into #Setor values (09632, '2008-03-05', 3) insert into #Setor values (10242, '2009-10-31', 5) insert into #Setor values (10242, '2007-05-15', 1) -- 1º resultado select f.matricula, f.funcionario, s.setor from #Funcionarios f, #Setor s where f.matricula=s.matricula and DtMudanca between '2007-04-01' and '2007-04-30' -- 2º resultado select f.matricula, f.funcionario, s.setor from #Funcionarios f, #Setor s where f.matricula=s.matricula and DtMudanca between '2009-01-15' and '2009-10-01'
  7. OBS.: mudei o título do Tópico para ficar mais específico. :.)
  8. Como é uma função, você pode chamá-la no próprio select mesmo, já retornando o valor da próxima segunda-feira. Se for pra relatório, acrescente a função já no script que gera o relatório. Ficaria assim: select SeusCampos, dbo.ProximaSegunda(ColunaContendoData) from TABELA
  9. Bom dia Amigo, Pode-se criar uma função com um loop, retornando a data da próxima segunda-feira. Não há necessidade de temporária para isto. Caso tenha alguma dúvida em fazer o script, posta aí q ajudo a implementar. :.) Opa.... fiz aqui um exemplo.... create function ProximaSegunda (@Data datetime) RETURNS Datetime Begin While DATEPART(DW,@Data) <> 2 Begin Set @Data = dateadd (day, 1, @Data) End return @Data End select dbo.ProximaSegunda ('2010-06-11')
  10. Tópico movido para o Fórum Script Brasil > Banco de Dados > Demais Bancos.
  11. Boa tarde Amigo, Na cláusula WHERE, identifique se as colunas referenciadas são chaves ou estão indexadas. Faça os testes verificando quais índices o script utiliza. Coloque as colunas nos respectivos joins das tabelas. Quanto menos dados os joins retornarem, mais rápido a consulta será (pesquisa excludente). Ex.: No seu script: ... FROM vts LEFT JOIN swap ON vts.contrato=swap.cd_net... ... WHERE agendamento > CURDATE() AND contrato > 0 ... Alteração: ... FROM vts LEFT JOIN swap ON vts.contrato=swap.cd_net AND contrato > 0... ... WHERE agendamento > CURDATE() ... Sempre coloque as chaves / índices nas primeiras posições do relacionamento. No exemplo acima, caso a coluna "Contrato" seja chave (apenas uma suposição), coloque-a para frente: ... FROM vts LEFT JOIN swap ON contrato > 0 AND vts.contrato=swap.cd_net ... Faça as alterações no script e teste. Dúvida: a performance da função CURDATE() está ok? Enquanto ela não retornar o valor desejado, o script não roda. Teste chamar a função por fora, gravando o dado em uma temporária e utilizar a temporária no script principal. Meça o tempo. Caso as alterações não dê resultado, abra o mapa de execução do script e verifique em qual das tabelas há a % maior de processamento. Outra forma é utilizar o Tunning do SQL. Ele executa seu script e te passa dicas para otimizar a consulta.
  12. Esta sintaxe também é simples e eficiente, mas para manutenção é pior, pois pode passar despercebida (por ser implícita). Quando a sintaxe é maior e mais complexa, prefiro ser explícito. ;.)
  13. Boa Flávio.... é isso ai. O esquema é compreender a lógica. Em relação a passar o código para camada de objeto, seria interessante abrir um outro post no Fórum específico. Irei alterar o post para resolvido, pois o problema inicial está ok!! :.)
  14. Bom dia Flávio, Aos poucos a gente consegue... rs. Quando colocar a sintaxe (convert (varchar(10),mdb.casd.cr.open_date, 102)), não coloque somente no select. Perceba q sua query funciona porque a sintaxe (convert (varchar(10),mdb.casd.cr.open_date)) está igual no select e no Group By, ok? Perceba: SELECT (convert (varchar(10),mdb.casd.cr.open_date)), count(mdb.casd.cr.ref_num) FROM mdb.casd.cr, mdb.casd.crs WHERE ( mdb.casd.crs.code=mdb.casd.cr.status ) AND ( ((mdb.casd.crs.sym = 'Resolvido') or (mdb.casd.crs.sym = 'Pendente')) ) GROUP BY (convert (varchar(10),mdb.casd.cr.open_date)) Por que está dando erro? porque para o sql, a função de agregação está com tipos diferentes. Sendo assim, terá que trocar nos dois pontos da query. Ficaria assim: SELECT (convert (varchar(10),mdb.casd.cr.open_date, 102)) count(mdb.casd.cr.ref_num) FROM mdb.casd.cr, mdb.casd.crs WHERE ( mdb.casd.crs.code=mdb.casd.cr.status ) AND ( ((mdb.casd.crs.sym = 'Resolvido') or (mdb.casd.crs.sym = 'Pendente')) ) GROUP BY (convert (varchar(10),mdb.casd.cr.open_date, 102)) Vê se roda...
  15. Desculpe. Vi agora a sua ultima mensagem com as duas imagens. Em relação ao DHCP: "servidor que fornece endereço IP, formado por um Scopo no qual você pode definir o IP , Mascara , Gateway , Wins , DNS entre outras opções para que seja entregue a estação de trabalho". Parece que a máquina teve alguma alteração em sua configuração de rede. O SPN está relacionado com autenticações entre SQL e Client (autenticação Kerberos). O SPN é uma configuração da máquina Servidora. Dê uma olhada: http://support.microsoft.com/kb/950599/pt http://msdn.microsoft.com/pt-br/library/cc281382.aspx http://msdn.microsoft.com/pt-br/library/cc280459.aspx Nunca tive problemas com o SPN. Mas algumas pessoas relatam que quando ocorre o problema, é necessário você deletar as configurações e refazê-la manulamente...
  16. A ultima linha da mensagem de log está referenciando o SPN. Pode estar relacionado com a conta de domínio. Você já tentou acessar utilizando uma conta de administrador de domínio? Outra coisa: o servidor é Windows Server 2003?
  17. Boa tarde Lucas, você já deu uma olhada nas Fontes de Dados (ODBC)? (Painel de Controle / Ferramentas Administrativas). Parou de funcionar de uma hora pra outra, ou foi feita alguma instalação? Dê uma olhada na porta de conexão se está ok.
  18. beleza.... você está referenciando uma coluna q não existe. Verifique se a coluna está na tabela referenciada; ou se tem algum erro na digitação; ou pode ser no referenciamento da coluna no group by.
  19. Ai eu já não.... faz os testes com o script que te passei utilizando esta ferramenta.
  20. Boa tarde Amigo, Esta ferramenta tem em todas as versões do SQL. Mas o problema dela é q toda vez q tiver de exportar, deverá ser a mão: entrar no Import Export e fazer todos os passos. Com SSIS, você cria uma vez, salva e aí é só mandar executar toda vez q precisar. Se preferir poderá agendar sua execução. :.)
  21. Bom dia Flávio, As coisas estão um pouco complicadas.... rs. Fiz um exemplo logo abaixo. Dê uma olhada. Criei duas temporárias e fiz alguns selects para identificar as diferenças. Todos os selects estão explicados. Outra coisa: na sua cláusula OR, creio que está faltando um parênteses.... dê uma olhada nisso também. Caso não seja isto, pode postar!! :.) Exemplo: -- cria temporária create table #crs (code int, sym varchar(10)) create table #cr (status int, ref_num int, Open_date datetime) -- insere valores nas temporárias insert into #crs values (100, 'Resolvido') insert into #cr values (100, 1, getdate()) insert into #crs values (150, 'Resolvido') insert into #cr values (150, 1, getdate()) insert into #crs values (350, 'Resolvido') insert into #cr values (350, 1, getdate()) insert into #crs values (360, 'Pendente') insert into #cr values (360, 1, getdate()) -- Conferência select * from #crs select * from #cr -- neste select, está faltando os parênteses select count(r.ref_num) from #crs s, #cr r where(s.code=r.status) AND (s.sym = 'Resolvido') or (s.sym = 'Pendente') -- é o mesmo select, agora com o parênteses concatenando o OR select count(r.ref_num) from #crs s, #cr r where(s.code=r.status) AND ((s.sym = 'Resolvido') or (s.sym = 'Pendente')) -- Neste select, acrescentei a data. Perceba que o count não funciona, pois a data tem horas. select r.Open_date, count(r.ref_num) from #crs s, #cr r where(s.code=r.status) AND ((s.sym = 'Resolvido') or (s.sym = 'Pendente')) group by r.Open_date -- Neste select, corrigi o count retirando as horas da data. select (convert (varchar(10), r.open_date, 102)), count(r.ref_num) from #crs s, #cr r where(s.code=r.status) AND ((s.sym = 'Resolvido') or (s.sym = 'Pendente')) group by (convert (varchar(10), r.open_date, 102))
  22. Bom dia Paulo, Quando ocorre um problema destes, as variáveis podem ser infinitas. Para isto, temos que levar em consideração alguns pontos. O mais importante é identificar o que de "diferente" ocorreu (pois o sistema não apresentava este problema). Seria interessante você fazer algumas verificações: - Verificar a(s) tabela(a) que o aplicativo está manipulando. Identifique se sua estrutura está íntegra e não há problemas de acesso. - Verifique os processos na Base. Como é um problema que não existia, pode estar relacionado com processos pesados ou processos "travando" a Base. - Verifique a quantidade de acessos e processos simultâneos ocorridos no decorrer do problema. - Verifique a rede. Se a tabela possui muita manipulação (inserção e exclusão), pode-se recriar os índices. Faça um Plano de Manutenção: http://msdn.microsoft.com/pt-br/library/ms189953.aspx Quando o problema não é corriqueiro, deve-se identificar algum "acontecimento novo" para direcionar a correção. O processo de "limite excedido" pode estar relacionado com a configuração do aplicativo. Caso a configuração de TimeOut esteja muito baixo e o processo "pesado", pode ser abortado. O processo pode estar relacionado com a configuração de TimeOut do Sql. Neste caso, pode-se acessar: - Management Studio - Botão direito em cima do nome do Servidor - Propriedades - Opção Connections (esquerda) - Na opção "Remote Server Connections", você pode colocar quantos segundos para a query ser abortada. Pelo que explicou, creio que seja um problema pontual na tabela. A mensagem de "limite excedido" é visualizada APENAS ao salvar novas solicitações? Se for, seu foco será na(s) tabela(s) manipulada(s) e no processo de gravação. Qualquer dúvida, posta aí!!! :.)
  23. É... como é servidor contratado, seria melhor solicitar o arquivo de backup mesmo. Mas tenta ai via comando: Backup Database NomeBanco to Disk = '\\111.111.11.11\backup\dados\NomeBanco .bak' with init Se não der, pode ser configuração de segunrança...
×
×
  • Criar Novo...