
fulvio
Moderadores-
Total de itens
1.218 -
Registro em
-
Última visita
Tudo que fulvio postou
-
Bom dia Gilberto, A sua consulta está demorando por causa da quantidade de subselects que está fazendo. Quando você roda esta consulta, o sql aguarda o resultado de todos os subselects para remontar o select principal. Isso faz com que o tempo fique realmente muuuuito alto. Tente retirar os subselects, fazendo apenas um select. Se não der, tente fazer passo a passo a consulta, utilizando temporárias.
-
(Resolvido) Visual Basic 6.0 com Tabela em Banco de Dados SQL Compact
pergunta respondeu ao Danleonhart de fulvio em Visual Basic
Bom dia Danleon, O string se conexão você fará no fonte. Moverei o tópico para o Fórum de VB. -
(Resolvido) Visual Basic 6.0 com Tabela em Banco de Dados SQL Compact
pergunta respondeu ao Danleonhart de fulvio em Visual Basic
Não entendi a dúvida. você quer criar um Banco de Dados utilizando a "conexao" criada? -
Bom dia Luiz, Jeito tem.... rs. No sql temos a tabela SysObjects e SysColumns. Estas contém basicamente as tabelas e as colunas do sistema (basicamente porque a SysObjects possuem mais objetos do que apenas as tabelas). Daria para você identificar as tabelas, juntamente com suas colunas (com seus tipos) e fazer um script dinâmico para pesquisa. Teria que identificar qual o dado que seria de pesquisa (inteiro, caracter, data) para pesquisar nas colunas correspondentes. O problema seria a performance.... teria q vasculhar as colunas de várias tabelas e, com certeza, a grande maioria não é indexada.
-
(Resolvido) Visual Basic 6.0 com Tabela em Banco de Dados SQL Compact
pergunta respondeu ao Danleonhart de fulvio em Visual Basic
Se você não colocar junto, poderá colocar na mão mesmo. Se for enviar para o cliente, teria que ser no Pack mesmo, para que tudo seja transparente. -
(Resolvido) Visual Basic 6.0 com Tabela em Banco de Dados SQL Compact
pergunta respondeu ao Danleonhart de fulvio em Visual Basic
Bom dia, Não necessariamente precisa ser na mesma pasta. Coloque o caminho de acesso à Base. -
(Resolvido) Visual Basic 6.0 com Tabela em Banco de Dados SQL Compact
pergunta respondeu ao Danleonhart de fulvio em Visual Basic
Rs... mais um com XP... \o/ \o/ \o/ você conseguiu abrir o Management? Se conseguiu, procure pelo atalho "Object Explorer". Abra as opções do seu Servidor. Terá o arquivo DataBases. Clique com o botão da direita e esolha "New DataBase". -
Monitorar arquivo de log SQL Server [Resolvido]
pergunta respondeu ao Raul_Kl de fulvio em SQL Server
Boa tarde Raul, - Management Studio / Nome do Banco de Dados. - Botão direito do mouse em cima do Nome do BD / Propriedades. - Opção Transaction Log Shipping. Seria isto que está procurando? -
Bom dia Felipe, Demorou mas achei o post antigo (que comentei acima). Dá uma olhada... http://scriptbrasil.com.br/forum/index.php?showtopic=148246
-
Bom dia Dimac, Moverei seu post para o Forum correto.
-
Boa tarde Felipe, Uns posts mais antigos fiz uma listagem de passos que poderiam ser adotados para tentar diminuir o tamanho do Banco. Uma coisa importante e as vezes as pessoas não se atentam: quando se cria a Base, você fala qual o tamanho da mesma, e como irá "crescer" (pode ser em KB ou em %). Sendo assim, se eu crio uma Base que tenha um tamanho de 10 GB (a mesma pode ter pouquissimos dados), mas o tamanho não mudará. Ao preencher os 10 GB, a Base loca mais espaço de acordo com a configuração de criação --> se colocou 10%, a mesma crescerá de 1 em 1 GB.
-
Quando você mexer, nunca mais vai querer fazer de outra forma... rs.
-
Bom dia Cissa, Se passar o vendedor, retornará os clientes relacionados a este vendedor (o certo é já passar o código do vendedor): select c.Cliente from clientes c, clientes_vendedores cv where cv.codVendedor=SELECAO_COD_VENDEDOR and cv.codCliente=c.codCliente Agora você quer pegar, depois do resultado dos clientes acima, os vendedores relacionados a cada um dos clientes? select distinct v.Vendedor from vendedores v, clientes_vendedores cv where cv.codVendedor=c.codVendedor and cv.codCliente in (select c.Cliente from clientes c, clientes_vendedores cv where cv.codVendedor=SELECAO_COD_VENDEDOR and cv.codCliente=c.codCliente) No primeiro select, se não der pra passar o código do Vendedor, aí terá que referenciar a tabela Vendedor para pegar o código: select c.Cliente from clientes c, vendedor v, clientes_vendedores cv where v.NomeVendedor=NOME_VENDEDOR and cv.CodVendedor=c.CodVendedor and cv.codCliente=c.codCliente
-
Boa tarde Felipe, O Import and Export é a maneira mais simples de se fazer isto. É identificar as Bases, ticar as colunas que deseja manipular e mandar executar. Mas se tiver realmente utilizar o BULK INSERT.... http://msdn.microsoft.com/en-us/library/ms188365.aspx
-
Criar Job para adicionar e remover dados automaticamente.
pergunta respondeu ao VelhoJack de fulvio em SQL Server
Bom dia meu Velho, você pode implementar um JOB para ser exeutado todo dia. O nivel='30' seria a quantidade de dias que o usuário tem acesso? Se for, prefira colocar uma Data. Assim, você consguirá fazer a diferença entre a "Data Corrente" e a "Data de Ativação". Se a diferença for maior que 30 dias, retire o acesso. O JOB pode ser agendado para rodar qualquer dia / hora. Assim poderá por exemplo, colocar todo dia de madrugada para executar o processo. -
Bom dia Sims, O select que postou: Select nome_cliente, dt_pedito from cliente left outer join pedido on codcli = cod_cliente order by nome_cliente É exatamente igual ao exemplo que postei: select nome_cliente, dt_pedito from cliente left join pedido on codcli = cod_cliente Perceba que não possui a sintaxe OUTER, pois a mesma pode ser suprimida. Expliquei que a sintaxe *= ou =* será descontinuada: "você pode utilizar a sintaxe *= ou =* - especificação Ansi 92. Mas a partir do SQL2005, estas implementações estão descontinuadas." você pode sim alterar o nível de compatibilidade do SQL, mas sua performance diminuíra, pois o SQL realiza internamente a conversão da sintaxe.
-
Bom dia Rafa, No Sql existe a função DATEDIFF. você passa as dastas e identifica como será o retorno. Ex.: SELECT DATEDIFF (mi, '2010-11-16 08:00', GETDATE()) Neste caso, o retorno será em minutos. Caso queira em horas, trocar o "mi" por "hh".
-
Boa tarde João, Não percebi que havia uma variável dentro da string de execução. É isto aí que fez. OBS.: Caso a variável seja inteira, dará erro pois o sql identificará a sintaxe "+" como sendo uma adição. Aí é só utilizar o CAST para converter pra VARCHAR. Aí irá funcionar. De nada. Precisando estamos aí. :.)
-
Tenta fazer esta forma: CREATE PROCEDURE [dbo].[VERSAO_MSSQL]( @Codigo VARCHAR(10) ) as BEGIN declare @VersaoSQL VARCHAR(4), @SQL VARCHAR(1500) SELECT @VersaoSQL = CAST(SERVERPROPERTY('productversion') AS VARCHAR) IF @VersaoSQL = '8.00' BEGIN SELECT Nome, Senha FROM MinhaTabela WHERE Codigo = @Codigo END ELSE BEGIN Set @SQL = 'OPEN SYMMETRIC KEY MinhaChave DECRYPTION BY CERTIFICATE ChaveSimetrica; ' + 'SELECT Nome, convert(VARBINARY(300), decryptbykey(Senha)) as Senha ' + 'FROM MinhaTabela ' + 'WHERE Codigo = @Codigo' EXEC (@SQL) END END
-
Bom dia João, Qual o complemento q está utilizando que não existe nas versões anteriores do 2005? O que pode fazer é gerar o script dinamicamente. O problema é que se o script for grande, fica muito ruim a implementação (complicado). Ex.: DECLARE @SQL VARCHAR(100) SET @SQL = ('SELECT getdate()') EXEC (@SQL)
-
Boa tarde Felipe, Pra criar uma Procedure, basta colocar o script abaixo antes do Update: CREATE PROCEDURE dbo.TestedeProcedure as Mas para garantir a execução dos dois comandos, deverá utilizar o BEGIN TRAN e COMMIT TRAN. Caso não saiba, seria interessante pesquisar na net algumas explicações e exemplos. OBS.: o seu script possui muitos subselects. O interessante seria tentar fazer os relacionamentos diretos entre as tabelas. Perceba que está utilizando o INNER JOIN chamando um subselect. Em termo de performance é muito ruim.
-
(Resolvido) Base SQL - Select com clausulas
pergunta respondeu ao Felipe Leocadio de fulvio em SQL Server
Boa tarde Felipe, Para ver se os valores se repetem, você terá que fixar um a um e ir comparando. No seu exemplo, os Grupos estão em ordem crescente. Caso, na tabela principal não esteja nesta ordem, será necessário criar uma tabela temporária e inserir os dados ordenados. Será necessário também criar uma coluna Indetity para controle. Dá uma olhada no exemplo que diz e vê se é isso que precisa. O código está comentado. -- Sua tabela create table #Tmp (CO INT, CR int, Grupo INT, Controle INT IDENTITY) -- Inserção dos dados INSERT INTO #tmp VALUES (1, 2, 1) INSERT INTO #tmp VALUES (2, 3, 2) INSERT INTO #tmp VALUES (5, 7, 3) INSERT INTO #tmp VALUES (6, 7, 3) INSERT INTO #tmp VALUES (9, 10, 4) INSERT INTO #tmp VALUES (9, 11, 5) INSERT INTO #tmp VALUES (14, 16, 6) INSERT INTO #tmp VALUES (15, 16, 6) INSERT INTO #tmp VALUES (16, 17, 7) INSERT INTO #tmp VALUES (16, 18, 8) INSERT INTO #tmp VALUES (16, 19, 9) -- Selecionar daqui até no fim. DECLARE @ValorCO INT DECLARE @ValorCR INT DECLARE @Contador INT DECLARE @MenorGrupo INT SET @Contador = 1 WHILE @Contador <= (SELECT MAX(Controle) FROM #Tmp) BEGIN SET @ValorCO = (SELECT top 1 co FROM #Tmp WHERE Controle=@Contador) SET @ValorCR = (SELECT top 1 cr FROM #Tmp WHERE Controle=@Contador) DELETE #Tmp WHERE CO=@ValorCO AND Controle<>@Contador DELETE #Tmp WHERE CR=@ValorCR AND Controle<>@Contador DELETE #Tmp WHERE CR=@ValorCO AND Controle<>@Contador DELETE #Tmp WHERE CO=@ValorCR AND Controle<>@Contador SET @Contador = @Contador + 1 END -- Conferência dos dados select * from #Tmp -
Bom dia Alex, Dê uma olhada no COLLATE que está utilizando. você poderá forçar a troca do COLLATE quando for enviar o email.
-
Boa tarde Gadelha, Perceba que na tabela Gente possui mais campos do que a tabela Crianca. Sendo assim você terá que referenciar quais as colunas deverão receber os valores. Ex.: insert Labs.dbo.gente (cod_gente, nome_gente, sexo_gente, serie_gente) select cod_cri,nome_cri,sexo_cri,serie_cri from Aula.dbo.crianca
-
Bom dia Romani, Rs... vamos lá. Se quiser fazer outra tabela conforme postado, poderá fazer a separação utilizando a coluna Info1. você pode fazer um insert testando se ó valor contido não é numérico. Fica simples e rápido de fazer a nova tabela. Mas voltando ao problema, postei logo abaixo um script que imprime as PK´s. Criei uma tabela com os dados, para simular a sua. Dei um print no resultado, para conferência. O script está comentado. Dê uma olhada se é isto que precisa. Caso seja, aí é só fazer as adaptações. Espero que ajude!! :.) -- Criação de tabela. CREATE TABLE #Dados (Pk INT, Tipo VARCHAR(15), Info1 VARCHAR, info2 int) -- Inserção dos dados INSERT INTO #dados VALUES (1, 'C100', '1', 1000) INSERT INTO #dados VALUES (2, 'C110', 'A', 500) INSERT INTO #dados VALUES (3, 'C110', 'B', 500) INSERT INTO #dados VALUES (4, 'C100', '2', 1000) INSERT INTO #dados VALUES (5, 'C110', 'A', 1000) INSERT INTO #dados VALUES (6, 'C100', '3', 1000) INSERT INTO #dados VALUES (7, 'C110', 'A', 500) INSERT INTO #dados VALUES (8, 'C110', 'B', 500) -- Conferência SELECT * FROM #Dados -- Seleciona daqui pra baixo a manda executar tudo. DECLARE @Contador INT DECLARE @PK INT DECLARE @UltimaPK INT DECLARE @Tipo VARCHAR(15) SET @Contador = 1 IF @Contador = 1 BEGIN SET @PK = (SELECT Pk FROM #Dados WHERE pk=@Contador) SET @UltimaPK = @PK PRINT 'PK=' + CAST (@PK AS VARCHAR(100)) SET @Contador = @Contador + 1 END WHILE @Contador <= (SELECT MAX(PK) FROM #Dados) BEGIN SET @Tipo = (SELECT tipo FROM #Dados WHERE pk=@Contador) IF @Tipo <> 'C100' BEGIN SET @PK = @UltimaPK END ELSE BEGIN SET @PK = (SELECT Pk FROM #Dados WHERE pk=@Contador) SET @UltimaPK = @PK END PRINT 'PK=' + CAST (@PK AS VARCHAR(100)) SET @Contador = @Contador + 1 END