
fulvio
Moderadores-
Total de itens
1.218 -
Registro em
-
Última visita
Tudo que fulvio postou
-
O mais interessante seria um Job mesmo. Eleja uma tabela que deseja migrar. Faça um Job migrando primeiramente as filhas e depois a mãe. Para agilizar o processo, poderá desativar as constraints antes de realizar as gravações. Após o término, ativá-las (coloque o processo em uma transação). Faça os testes com algumas milhares. Pegue a tabela com a maior quantidade de registros. Se o tempo for bom, poderá acrescentar mais tabelas no Job.
-
Bom dia Caio, Não entendi ao certo o problema. você queria retornar os registros na cronologia em que foram inseridos?
-
Boa tarde NIK, Realmente eu entendi errado. Desculpe. Para fazer esta criação / migração, seria melhor você utilizar o Wizard do sql. você vai primeiramente deletar a tabela Cliente da Base Teste. No Wizard, selecionar a tabela Cliente da Base Oficial e copia-la para a Base Teste. Selecionar a opção de criar automaticamente a tabela na base de destino. O sql vai criar a tabela e migrar os dados. Outra alternativa: no Management clique com o botão direito do mouse em cima do nome da tabela, escolha "Script Table as" / "Create To" / "New Query Editor Window". Aparecerá o script para criar a tabela com todos os seus campos. Delete a tabela na Base de Teste e crie-a novamente utilizando o script. Aí pra gravar os dados, pode usar o script q te passei logo acima, mas pegando todos os campos. Espero ter ajudado agora!!! :.)
-
Boa tarde Omega, O código 0201010046 e C211 estão na mesma COLUNA?
-
Segue exemplo de script: -- cria temporária CREATE TABLE #Temporaria (codigo int, nomecliente VARCHAR(60), endereco VARCHAR(100)) -- acesse a base Oficial USE baseoficial -- insere na temporária INSERT INTO #Temporaria SELECT codigo, nomecliente, endereco FROM Cliente -- acesse a base Teste USE baseteste -- insere na tabela cliente os códigos que ainda não existem. INSERT INTO Cliente SELECT * FROM #Temporaria WHERE codigo NOT IN (SELECT codigo FROM Cliente)
-
Bom dia Angelo, No fórum há alguns posts sobre isto. No Seven tem este problema quando se instala alguns aplicativos específicos.
-
Bom dia NIK, Com as duas bases no mesmo servidor, fica mais fácil de trabalhar... Você pode fazer uma transferência dos dados utilizando o Wizard do Sql. Ao invés de copiar a tabela toda, abra a opção de execução de script e faça o script de cópia. Outra alternativa, e para mim a mais simples e rápida: Como está no mesmo servidor, poderá alterar as bases em uma mesma janela utilizando o USE. - você cria uma temporária para transporte. - Vá até a base de produção utilizando o comando "USE baseoficial". - Dê o select e copie os dados para a tabela de transporte. - Utilize o comando "USE baseteste". - Insira os dados na tabela Cliente utilizando os dados gravados na tabela de transporte.
-
Bom dia Fernandinha, O campo Identity é "setável". Você pode colocar o número que quiser de início. No exemplo abaixo, a numeração comecará em 100. DBCC CheckIdent('Tabela1',Reseed,100) Para o segundo problema: Exemplo de como criar a coluna: ALTER tabela NomeTabela ADD NomeCOluna INT Para executar uma função, terá que criar uma Trigger. Toda vez que inserir uma linha nova na tabela, a trigger será disparada.
-
Select Descrição de produto com Codigo do Produto
pergunta respondeu ao Maeda de fulvio em SQL Server
Bom dia Maeda, Não entendi bem o seu problema. Se der para colocar um exemplo.... :.) -
Bom dia Eric, Possível de se fazer em sql sim.... mas seria mais aconselhável montar os dados na ferramenta que utiliza para desenvolver. - Você faria um "select distinct" para pegar apenas os dias de trabalho. - Colocaria os dias em colunas. - Depois faria um "select distinct" para pegar os códigos dos funcionários. - Colocaria os funcionários em linhas. - Faria um select para pegar as datas de trabalho e funcionários, colocando o X correspondentes. Já fiz uma implementação parecida em VB6, utilizando Text Grid (bem semalhante ao excel).
-
Replicação com diferentes quantidades de dados
pergunta respondeu ao Alexandre Leal de fulvio em SQL Server
Bom dia Alexandre, A sua replicação está sendo realizada pelo Replication do sql, ou está fazendo uma replicação de outra forma (como por exemplo um linked server)? Se tiver utilizando o Replication, creio que não conseguirá fazer isto. você teria que colocar o destino como "Publicador", e assim não funcionaria.... Uma alternativa é criar uma tabela de expurgo. De 3 em 3 meses o sql copiaria estes dados para a tabela de expurgo (antes de deletar da tabela principal), deixando até 2 anos (igual deseja). Aí utilizaria a replicação em cima desta tabela de expurgo. Como a tabela de expurgo seria apenas para replicação, o seu gasto será apenas com armazanamento destes dados. O mesmo seria fixo, uma vez que teriam dados de até 2 anos. -
Bom dia Tchello, você poderá utilizar um CASE para agrupar as duas descrições. Coloquei um exemplo logo abaixo utilizando uma temporária: CREATE TABLE #Teste (Tipo INT, Descricao VARCHAR(50)) INSERT INTO #Teste VALUES(1, 'Casa') INSERT INTO #Teste VALUES(2, 'Apartamento') INSERT INTO #Teste VALUES(3, 'Loja') INSERT INTO #Teste VALUES(4, 'Conjunto Comercial') INSERT INTO #Teste VALUES(5, 'Terreno') SELECT DISTINCT case descricao WHEN 'Conjunto Comercial' THEN 'Comercial' WHEN 'Loja' THEN 'Comercial' ELSE descricao END FROM #Teste
-
Bom dia Levi, O melhor caminho entre os relacionamentos das tabelas serão pelas suas chaves e/ou índices. O Management faz este relacionamento para você (no console gráfico), mas terá que selecionar as tabelas que deseja. O Tunning faz uma analise e identifica o que pode ser feito para melhorar a performance. Mas para utilizar esta ferramenta, você já deverá ter o script. Particularmente prefiro fazer a mão e se a performance não for satisfatória, utilizar o Tunning.
-
Boa tarde Samuel, Seja bem vindo ao Forum!!! :.) Você pode utilizar um CASE para contar os dígitos do CPF. Caso tenha 13 dígitos, acrescentar o zero a esquerda: DECLARE @Cpf VARCHAR(14) SET @Cpf = '33.333.333-33' SELECT case len(@Cpf) WHEN 13 THEN '0' + @Cpf else @Cpf END você pode alterar a estrura do select e acrescentar o CASE diretamente no seu select. Assim todos os CPF´s sairão formatados.
-
Boa tarde NIK, Ativar e desativar: ALTER TABLE XXXXX NOCHECK CONSTRAINT ALL ALTER TABLE XXXXX CHECK CONSTRAINT ALL O problema de deixar as constraints desativadas é não ter integridade na sua base. Elas ativas, o sql garante esta integridade. Se tirar as constraints, caberá a vc "administrar" a integridade.
-
Boa tarde Sqlzim, Terá que ser um delete para cada tabela.
-
Bom dia NIK, Tem como desativar sim as constraints... mas tem um problema: - você desativa as constraints e insere os dados. - Quando for ativar dará erro, pois será verificada as consistências. - Você não conseguirá ativar as constraints até corrigir os registros que estão sem consistência. - OBS.: tem como ativar as constraints sem fazer a verificação dos registros já inseridos, basta utilizar o NOCHECK. Mas aconselho a não mexer com isso, apenas em raras exceções. Quando pesquisa na tabela, não encontra o item na tabela e mesmo assim dá erro de chave. Este problema é bem interessante, pois as vezes é muito dificil de detectar. Na tabela não vai ter realmente o item. Então por que dá erro de chave? O item está DUPLICADO nos dados que estão sendo inderidos. Pesquise duplicidades nos dados que estão sendo inseridos. :.)
-
É por isso que o update não está alterando nada. Se no select não listar registros, o update não irá alterar nada. O seu select está incorreto, ou realmente não existem registros a serem alterados. Em relação a cor, se estiver em algum aplicativo de edição (ou até mesmo na parte gráfica do sql) as palavras reservadas, funções nativas, cláusulas, etc aparecerão de cores diferentes. Não se preocupe quanto a isto.
-
Se não alterou nada, quer dizer que seu script está correto, mas os filtros não estão "achando" nenhum registro para alterar. Para conferir, você pode pegar a estrutura do "update" como está e alterar para "select". Aí você poderá conferir o que lista como resultado. Ficará assim: SELECT * FROM Empresas Empresas INNER JOIN Locais Locais ON ( (Empresas.EMP_CdiEmpresa = Locais.LOC_CdiEmpresa) ) INNER JOIN Folhas Folhas ON ( (Locais.LOC_CdiLocal = Folhas.FOL_CdiLocal) ) INNER JOIN Contratados Contratados ON ( (Folhas.FOL_CdiFolha = Contratados.CON_CdiFolha) ) WHERE ( Empresas.EMP_OplDesativada IS NOT NULL ) AND ( Contratados.CON_CdiSituacao IN (1,3,5,6,7,9) )
-
Boa tarde Wanderley, Qual o erro q está ocorrendo? Poderá fazer desta forma também: UPDATE Contratados Set Contratados.CON_CdiSituacao = 2 FROM Empresas, Locais, Folhas, Contratados WHERE Empresas.EMP_CdiEmpresa = Locais.LOC_CdiEmpresa AND Locais.LOC_CdiLocal = Folhas.FOL_CdiLocal AND Folhas.FOL_CdiFolha = Contratados.CON_CdiFolha AND Empresas.EMP_OplDesativada IS NOT NULL
-
Boa tarde Rodrigo, Este script não é T-SQL... vou mover o tópico. :.)
-
Boa tarde NIK, A constraint se chama TXPRDCOD, e não a coluna. Quando é criada uma constraint, você pode colocar o nome que quiser. Identifique-a na estrutura e olhe em qual coluna a constraint está referenciando. :.)
-
De nada.... precisando estamos ai!!! :.)
-
Configurar todas as consultas para NOLOCK
pergunta respondeu ao Denis Courcy de fulvio em SQL Server
Bom dia Denis, Não tem como colocar o NOLOCK como default no Banco. :.( -
Contar valores apartir de registros repetidos em 1 unica linha de uma
pergunta respondeu ao kameibr de fulvio em SQL Server
Boa tarde, No seu string há 8 ocorrências do 160. Alguns você não colocou em negrito. Segue script. Se não entender pode postar. Seleciona tudo e roda: DECLARE @String VARCHAR(1000) DECLARE @Contador INT SET @Contador = 0 SET @String = '0x1600006CA87A000000E000000000000016000092A1C8000000E0000000000000160000DB786B000000E00000000000001600001F4282000000E0000000000000160000945A3D000000E00000000000001600009BDE0C000000E 000000000000016000028479F000000E00000000000001600001404E6000000E0000000000000' while (SELECT CHARINDEX('160', @String)) > 0 BEGIN SET @Contador = @Contador + 1 SET @String = (SELECT RIGHT (@String, LEN(@String) - (CHARINDEX('160', @String))-2)) END SELECT @Contador