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 Marco, Creio que tenha entendido seu problema... rs. Olhei apenas o que estava precisando. O seu script de alteração apenas corri o olho. Tentei fazer um aqui pra resolver o problema. Criei uma temporária baseada no exemplo de tabela que postou. Aí fiz o script para manipulação dos dados. Postei logo abaixo o script. Dá uma olhada se é isso que deseja. Qualquer dúvida, pode postar. CREATE TABLE #HistoricoInventario ( [HistoricoID] bigint, [DispositivoID] int NOT NULL, [DataAtivacao] datetime NOT NULL, [DataDesativacao] datetime CONSTRAINT [DF__Historico__DataD__66603565] DEFAULT '3000/01/01' NULL ) ON [PRIMARY] GO -- Inserção dos dados insert into #HistoricoInventario ([HistoricoID], [DispositivoID], [DataAtivacao], [DataDesativacao]) values (1,1,'2010-01-01', '2010-01-05') insert into #HistoricoInventario ([HistoricoID], [DispositivoID], [DataAtivacao], [DataDesativacao]) values (2,1,'2010-01-06', '2010-01-20') insert into #HistoricoInventario ([HistoricoID], [DispositivoID], [DataAtivacao], [DataDesativacao]) values (3,1,'2010-01-21', '2010-01-22') -- Conferência select * from #HistoricoInventario -- Rodar tudo, até o final Declare @Id int Declare @DataAtivacao datetime Declare @DataDesativacao datetime Declare @Contador int Set @Id = 2 Set @DataAtivacao = '2010-01-08' Set @DataDesativacao = '2010-01-22' update #HistoricoInventario set DataAtivacao=@DataAtivacao, DataDesativacao=@DataDesativacao where HistoricoID = @Id update #HistoricoInventario set DataAtivacao = (dateadd(d, 1, @DataDesativacao)), DataDesativacao = (dateadd(d, 1, @DataDesativacao)) where DataAtivacao between @DataAtivacao and @DataDesativacao and HistoricoID <> @Id update #HistoricoInventario set DataAtivacao = (dateadd(d, 1, @DataDesativacao)), DataDesativacao = (dateadd(d, 1, @DataDesativacao)) where @DataDesativacao between @DataDesativacao and @DataAtivacao and HistoricoID <> @Id ------------------------------------------------ -- Conferência select * from #HistoricoInventario
  2. Bom dia Juliano, Ativado apenas quando for Update. Recupera o valor da coluna "maxpos" contido na tabela "r900lcn" Se o select retornou algum valor, o valor será atribuida a variável @IMAGIC. No @@RowCount é identificado se retornou algum resultado no select anterior (número). Se o @@RowCount for 1, o @ChkError receberá 0 Se o @@RowCount for 0, o @ChkError receberá -50 Se o @@RowCount for diferente de 0 ou 1, o @ChkError receberá 512 Se o @ChkError for diferente de 0, vai pro FIM (IF @ChkError <> 0) Se o valor atribuido a variável @IMAGIC for diferente de -7271, você reportará a descrição de erro "ACCESS DENIED" Se o @ChkError for diferente de 0, dá ROLLBACK
  3. Bom dia Daniel, Na mesma tela em que colocou o script de backup, pode colocar os outros scripts. Se ficar muito grande ou "bagunçado", pode criar um novo Step. Aí terá q fazer mais algumas configurações: Qual step rodará em primeiro e depois de executado, qual o passo a seguir (ir para o próximo step, finalizar, reportar erro, etc). Mas como você quer que este script rode apenas final de semana, você terá que criar outro JOB. O agendamento é do JOB em si. Não tem como você agendar parte dele. Se quiser tudo em um JOB apenas, pode-se fazer uma "adaptação"... rs. Fazer um script que recupere o dia da semana e colocar um IF. Caso seja sábado ou domingo, executar o IF. Bem, coloquei várias opções pra ver a melhor para vc. Qualquer dúvida, pode postar! Funcionou perfeitamente aqui também! Obrigado fulvio. Ps.: Você é DBA? Em todos os tópicos de Banco de Dados você auxilia hehe. Abraço. Bom dia Lucas, Sim, sou DBA. rs. Quando comecei com SQL, sempre tive muitas dúvidas e não havia ninguém pra auxiliar. Pra diminuir o "sofrimento" de quem está começando, tento sempre colaborar com o pessoal do Fórum.... :.)
  4. Bom dia Davidson, O problema está na cláusula WHERE. Perceba que está fazendo WHERE Character.RESETS= RESETS+1. Sendo assim, o sql pegará a coluna RESETS e fará a comparação dela mesma com o incremento de 1. você nunca terá uma igualidade aí... :.)
  5. Bom dia Fernando, Bem, acho que não me expressei bem... rs. No 1º script que rodou, você identifica na sysobjects as FK´s e deleta todas. Antes de deletar, você deveria ter gerado o script original da tabela (com todas as constraints). Aí sim deletaria as FK´s. você truncaria a tabela e rodaria apenas o script de geração das FK's (que gerou antes de deletar as FK´s), entendido? Por isso que as FK´s foram pro espaço... rs. Seria mais ou menos assim. Gerar script da tabela: CREATE TABLE [dbo].[Tabela]( A [int] NOT NULL, B [int] NOT NULL, ) ON [PRIMARY] ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( A ) REFERENCES [dbo].[Tabela] ( A ) GO ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( B ) REFERENCES [dbo].[Tabela] ( B ) Guardar apenas os scripts que gera as FK´s: ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( A ) REFERENCES [dbo].[Tabela] (A ) GO ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( B ) REFERENCES [dbo].[Tabela] ( B ) Deletar as FK´s e truncar as tabelas. Criar as FK´s: ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( A ) REFERENCES [dbo].[Tabela] ( A ) GO ALTER TABLE [dbo].[Tabela2] WITH NOCHECK ADD CONSTRAINT [FK_Tabela2] FOREIGN KEY( B ) REFERENCES [dbo].[Tabela] ( B )
  6. Tenta instalar a versão 4.5. Como pré-requisito, esta versão é a recomendada. Teoricamente, como está com uma versão mais atual, deveria estar ok... mas não custa tentar.... rs.
  7. Bom dia Ranel, Verifique se o seu MSI (Microsoft Windows Installer) é a versão 4.5.
  8. Vamos lá: - Abra o Management Studio. - Abra a janela Object Explorer. - Duplo clique no nome do Servidor, para abrir as pastas. - Duplo clique em SQL Server Agent. - Aparacerá a pasta JOB. - Clique com o botão direito do mouse, e escolha New JOB. - Aparecerá uma tela para você configurar todo o processo. É bem intuitiva.... rs. - Na opção General, você fará uma descrição do que se trata o JOB. - Na opção STEP, embaixo da tela você clicará em NEW e dará o nome a um novo STEP. - Coloque seu script na tela q aparecerá. Só não esqueça de identificar nesta tela, qual BD o script rodará....rs... - Na opção Schedules você fará o agendamento. Clique em NEW e faça as configurações.
  9. Desculpe Fernando.... não é desativar, mas sim deletar. - Gere o script das tabelas, copie as FK´s criadas. - Delete as FK´s e trunque a tabela. - Recrie as FK´s.
  10. Bom dia Rafa, O campo auto incremento não precisa ser referenciado no insert. Se você tivesse uma tabela com 3 campos (sem identity), a sua sintaxe funcionaria. Explicando: - Depois do nome da tabela "estado", você pode suprimir as colunas desde que a relação esteja correta de valores X colunas. Ex.: insert into TABELA (A, B, C) values ('aaa','bbb', 'ccc') Seria a mesma coisa você escrever (abaixo), se os campos da TABELA forem apenas A, B e C: insert into TABELA values ('aaa','bbb', 'ccc') No seu caso, possui a coluna Identity. Aí você terá q especificar qual coluna você colocará os dados. Ficaria assim: insert into estado (nome, sigla) values ('Acre','AC') Qualquer dúvida, pode postar.... :.)
  11. Bom dia Lucas, No log você encontrará informações referentes aos comandos executados, datas, usuários, processos, ect.... mas infelizmente os DADOS afetados não são "recuperáveis". Se os dados não estiverem em backup, infelizmente os dados vão embora.... :.( Conheço alguns programas que recuperam arquivos pessoais deletados por engano. Mesmo deletando os arquivos da lixeira, o Win não exclui fisicamente no HD. Mas não é o caso...
  12. Bom dia Daniel, você pode criar um JOB, onde poderá agendar a execução do comando de backup (no Management Studio mesmo). Caso tenha dúvida na criação, pode postar... :.)
  13. Desative as constraints e depois faça a ativação delas novamene. ALTER TABLE TABELA NOCHECK CONSTRAINT ALL ALTER TABLE TABELA CHECK CONSTRAINT ALL
  14. Boa tarde Daniel, Fazer backup Full apenas? BACKUP DATABASE NomeBanco TO DISK='C:\Backup\Backup.bak' Se for do Servidor, crie uma temporária com o nome dos BD´s, depois com o WHILE vá alterando o nome do Banco.
  15. Boa tarde Fernando, Para "driblar" a forenKey, você poderá desativá-la. Mas quando for ativar, não conseguirá... ou você pode excluir a constraint. Mas por que queria "driblar"? Se quiser "truncar" a tabela mãe, delete primeiro os registros na filha que faz referênia, depois "trunca" a mãe. :.)
  16. Bom dia Ranel, O seu Win7 é a versão completa? Se for versão beta, o FrameWork não é ativado. Certifique que qualquer programa do sql esteja desinstalado. Instale o FrameWork e verifique se está atualizado. Instale o sql. Certifique se os updates do sistema estão em dia (o Win7 possui muita incompatibilidade).
  17. rs... Vai entender mesmo. Tem algumas coisas q é preferível nem tentar... hehehe. Um abraço!!
  18. Bom dia Lucas, Tente reinstalar a ultima versao do .NET Framework. Verifique se o serviço do SQL na sua instância está iniciado. Verifique a opção Windows Authentication.
  19. Por nada Eric. Principalmente no ponto de vista de controle. Sempre terá que atualizar duas colunas. Se em uma implementação esquecer, o controle ficará furado. Precisando estamos ai!! :.)
  20. Boa tarde Eric, Em relação a sua dúvida: comparar um campo BIT sem dúvida é mais rápido do que comparar um campo DATA. Da mesma forma que comparar um campo DATA é mais rápido do que comparar um campo STRING. Se a coluna for chave ou índice, a performance fica ainda melhor. Mas uma coisa importante: o que um processamento rápido para vc? Mesmo processando milhares de registros e o resultado for de milisegundos, para mim dará na mesma se utilizei um campo BIT ou DATA. Outra questão: você terá que criar dois campos. Um para a Data de Processamento e outro para informar se foi ou não processado. Deverão ser realizados dois controles. Logicamente quando a Data de Processamento está preenchida, o processamento foi realizado. Será que vale realmente a pena ter dois campos de controle, dois campos para manipular, mais espaço alocado, etc... para ganhar alguns milisegundos de processamento? :.) Faça os testes no sql, simulando as duas execuções. Veja custo/benefício em relação ao tempo de resposta (Mapa de Execução). Se eu fosse implementar, escolheria a 1ª opção (processamento muito rápido também, pois estaria pegando as datas NULAS).
  21. Prefira sempre utilizar o WHILE ao invés de Cursor. Os cursores consomem muita memória e processamento. No exemplo que passou, creio que a função SUM resolveria o problema para realizar a soma, ao invés de ficar somando os valores em variável. Segue um exemplo e algumas explicações. Dê uma olhada e vê se entende. A tabela criada é uma temporária em instância. Enquanto a instância existir, ela existirá. Após fechar a instância, ela será excluida. Qualquer dúvida, pode postar. -- Criação de temporária em instância create table #ClienteRegistros (CodCliente varchar(100), Controle int Identity) -- Inserção dos dados na temporária. Aqui você faz o select contendo apenas o código do cliente insert into #ClienteRegistros (CodCliente) select CodCliente from ..... -- Declaração de variável declare @resultado float declare @CodCliente int declare @Controle int -- Setando contador Set @Controle = 1 -- Loop para pegar o código do cliente e fazer a (SOMA DO RECEBIMENTO - SOMA DO PAGAMENTO). -- Perceba que não cloquei os meses. Fiz o soma do total do cliente. -- Caso necessite do mês, poderá criar mais uma variável para isto. While @Controle <= (select max(Controle) from #ClienteRegistros) Begin -- Seleciona o codigo do cliente que irá realizar o calculo Set @CodCliente = (select CodCliente from #ClienteRegistros where controle=@Controle) -- Faz o calculo. Set @resultado = ((select SUM(ColunaValores) from Lancamentos where codcliente = @CodCliente and tipo = 'R' and codLancamento = Y) - (select SUM(ColunaValores) from Lancamentos where codcliente = @CodCliente and tipo = 'P' and codLancamento = Y)) -- Se for negativo, grava a informação. if @resultado < 0 update TABELA set COLUNA = @resultado where ..... Set @Controle = @Controle + 1 End
  22. você está querendo fazer uma função em sql para pegar os códigos de clientes. Depois disso, o que deseja fazer? Caso prefira, coloque um exemplo de dados.
  23. Bom dia Wander, você pode ler os registros gravando-os em uma temporária e depois fazer o while. Para navegar pela tabela temporária, poderá criar uma coluna identity. Qualquer dúvida, pode postar. :.)
  24. Por nada... precisando é só postar!!! :.)
  25. rs... sem probelmas. Verifica se os dados estão corretos e roda para fazer testes. Qualquer dúvida, pode postar!! :.) update cliente set codmunibge = Case when cidadeclie='4117107' then 'NOVA LONDRINA' when cidadeclie='4313300' then 'NOVA PRATA' when cidadeclie='4117503' then 'PAIÇANDU' when cidadeclie='4118402' then 'PARANAVAÍ' End
×
×
  • Criar Novo...