Sobre

This is an example of a WordPress page, you could edit this to put information about yourself or your site so readers know where you are coming from. You can create as many pages like this one or sub-pages as you like and manage all of your content inside of WordPress.

66 Respostas para “Sobre

  1. Thomaz Stepheson

    Boa Tarde

    Gustavo,

    Sou Aluno da UEA – Universidade do Estado do Amazonas, sei um pouco sobre Banco de Dados, até o momento só trabalhei com SGBD MySQL em questão de acadêmica. Tenho muita vontade de me especializar na área de Banco de Dados.

    Gostaria de saber se Sr. poderia me ajudar e/ou me auxiliar a passar nos exames 70-432 e 70-433. Tbm gostaria de saber se o Sr. tem alguns simulados e/ou livros sobre esses exames em português, pois meu inglês é muito fraco.

    Skype: Thomaz Stepheson
    MSN: thomaszinho@hotmail.com

    • Olá Thomaz,

      Seja bem vindo ao mundo de banco de dados. É um assunto que muito me fascina e espero que você também possa achá-lo divertido.
      No meu site há vários simulados para a prova 70-433 com questões elaboradas por mim e em português. Infelizmente não possuo material publicado sobre o exame 70-432, mas há algumas bibliografias em português que são preparatório para essa prova. Recomendo procurar pelo Training Kit.

      [ ]s,

      Gustavo

  2. Ola Gustavo , antes de colocar minha pergunta, parabens por dividir parte de seu conhecimento em SQL com todos,
    Tenho uma pequena Empresa e preciso de um mirror, não posso parar, a aplicação tem que rodar 24 horas, faço transações por terminais GPRS e consigo entregar a transação em outro IP caso o primeiro esteja c/ problemas. Qual seria a melhor solução custo beneficio em se tratar c/ SQL

    Obrigado

    • Olá Silvio,

      Obrigado pelo feedback. Compartilhar é algo que eu gosto muito de fazer e enquanto puder vou fazer com certeza.
      Acredito que se você tem a flexibilidade redirecionar o IP, o Database Mirroring já seja uma ótima alternativa no seu caso. Temos outras alternativas de alta disponibilidade, mas em uma visão geral, o Database Mirroring parece se aplicar bem ao seu cenário.

      Tratar no SQL Server é normalmente uma alternativa mais efetiva para alta disponibilidade na camada de persistência. Veja que o SQL Server vai gerenciar automaticamente e de forma transparente as gravações entre o principal e o espelho. Isso é bem mais fácil que programar sua aplicação para gravar nos dois lugares ou ainda sincronizar os dados quando o site que caiu voltar a ficar disponível.

      Ainda assim, é preciso lembrar que alta disponibilidade deve envolver todos os componentes e não somente o banco de dados. Os outros componentes também terão alta disponibilidade (link, servidor de aplicação, etc) ?

      Não sei qual cidade você está atualmente, mas estou elaborando um curso voltado para o Database Mirroring em parceria de outros influentes profissionais de SQL Server. Caso você tenha interesse, há um descrito sobre esse treinamento:

      http://luticm.blogspot.com/2011/04/novo-treinamento-database-mirroring.html

      [ ]s,

      Gustavo

  3. Boa tarde.

    Tenho uma base de dados no sql Server 2008 R2. Acontece que a base está com tamanho de 100Mb enquanto o Log está com 3gb. Li teus artigos, fiz diversas tentantivas mas não consigo reduzir o tamanho desse log. O que devo fazer?

    • Oi Jean,

      Tenho dois artigos que explicam porque isso acontece e como fazer para resolver. Os artigos referem-se a piores práticas – utilizar o comando backup log com a opção truncate_only. Irão lhe ajudar significativamente a entender porque isso acontece e como resolver da forma correta.

      Por hora, faça um (ou dois) backups de log e rode um comando de SHRINK sobre o arquivo de log.
      Não trunque o log de jeito nenhum…

      [ ]s,

      Gustavo

  4. NASSER SIMONATO DA SILVA

    Ola Gustavo,

    Bom, sou um leitor assíduo de suas materias, (em diversos canais de comunicação, como blog, forum, myspace e outros ) apesar de ser mais um oculto, digo isso por que muitas pessoas devem utilizar suas materias e acho que você acaba sabem o quando ajuda, bom aqui vai o meu muito obrigado, pois ja me ajudaram muito em diversos casos profissionais. Suas explicações são muito bem estruturadas e escritas. Chega de puxar o saco… rsss…
    Bom, gostaria de saber se é possível enviar retorno de um consulta sql em um determinado email, pode ser de qualquer forma, xls, txt….não sei. Procurei algumas formas no Google mais não encontrei.
    Abraços

    • Olá Nasser,

      Não seja oculto, você pode aparecer mais vezes e se identificar (rs).
      Eu espero que as pessoas possam beneficiar-se das matérias, pois, escrevo tendo exatamente esse objetivo, ou seja, ajudar a quem precisa no assunto SQL Server e afins. É gratificante saber que você é uma dessas pessoas :)

      É possível sim enviar o retorno de uma consulta por email através da procedure sp_send_dbmail. Essa procedure permite o envio de emails a partir do SQL Server (2005 e superiores). No caso do SQL Server 2000, podemos recorrer a xp_sendmail também. É possível formatar o resultado, mas há muito pouca flexibilidade nesse sentido já que o propósito principal do SQL Server não é atender esse tipo de recurso. Para usar a sp_send_dbmail, você terá que configurar o Database Mail previamente. Possuo alguns artigos que mostram como fazer isso no Plugmasters. Os parâmetros que você irá utilizar na SP são Query e Body_Format.

      [ ]s,

      Gustavo

  5. Boa tarde
    Gustavo
    Gostaria de saber se você poderia me ajudar em Mirror, pois já fiz todas as configurações e ainda não consigo executar a operação. Fiz Principal, Mirror e Witness, só que na minha máquina que está o Mirror sempre da o erro 1418, dizendo que o endereço de rede ou portas do ponto extremidade não estão OK.
    Não sei mais o que fazer…

    Se puder me ajudar eu Agradeço
    Grande Abraço

    • Oi Eduardo,

      Possivelmente as portas não estão abertas ou as contas configuradas estão sem permissão nos endpoints. Você já verificou esses itens ?
      Recentemente tivemos nos fóruns de SQL Server (MSDN e TechNET) uma dúvida parecida. Há algumas sugestões que podem ser utilizadas, caso você queira dar uma olhada.

      Abs,

  6. Gustavo,

    Bom dia,

    Gostaria de saber se você tem algum artigo que fale sobre como consumir um web service em uma stored procedure no SQL SERVER 2000?

  7. Olá Gustavo.

    Tenho um banco de dados com milhares de pessoas cadastradas. Fui solicitado a listar todos que estão como nomes repetidos ou muito parecido.

    Você sabe informar algum recurso para pode identificar?

    Estrutura da TABELA

    nome da tabela: pessoa

    id
    nome

    esses são as propriedades relevantes

    • Oi Alex,

      Listar os nomes repetidos é fácil. Basta usar um SELECT com GROUP BY. Ex: SELECT Nome, COUNT(*) FROM Tabela GROUP BY Nome HAVING COUNT(*) > 1.
      Entretanto, listar nomes parecidos já é uma tarefa mais complexa e não instrução T-SQL para tal. Até porque o conceito de “parecido” é relativo. Joaquim é parecido com o Joaqui, mas Maria embora parecida com Mara são nomes diferentes.

      O que você pode tentar fazer é utilizar o SSIS com os componentes Fuzzy para encontrar similaridades. Não é tão simples como uma instrução T-SQL, mas ajuda muito.

      [ ]s,

      Gustavo

  8. Boa tarde,
    Estou fazendo um trabalho para faculdade sobre BI, achei super interessante uma publicação em seu site, e gostaria de usar como referencia, se me permitir é claro.
    Qual a sua formação, para que eu possa citá-lo? procurei no site mas nao achei o seu perfil.
    Grata, desde já e parabéns! Sabe como falar de assunto difícil (para leigos como eu) e de maneira clara.

    • Oi Myrian,

      Obrigado pelo interesse e pelos elogios. Não há problema em citar o blog. Coloquei no blog justamente para compartilhar. Pode citar como referência.
      Sou graduado em administração de empresas pela UnB e pós graduado em Banco de Dados pela Universidade Católica de Brasília.
      Boa sorte em seu trabalho.

      [ ]s,

      Gustavo

  9. anderson petry

    Olá Gustavo,
    bem legal esse seu blog.
    Pretendo me aventurar em Certificações, já trabalho com ASP e .net a 5 anos , mas me identifico mais com o Banco de Dados.

  10. Boa tarde. estou fazendo meu trabalho de monografia e gostaria de colocar alguns dados la, como por exemplo: quantidade de empresas (ou licenças) que utilizam sql server versos oracle, ou só o numero do sql server.
    vc sabe onde eu encontro essas informações? to procurando aqui no google e pagina da microsoft. porenquanto nada.

    • Oi Wesley,

      Muitos clientes reservam-se ao direito de não informarem que SGBD utilizam e isso realmente impede muitas vezes que o fabricante possa divulgar números fechados. É por isso que você terá dificuldades em encontrar informações sobre o número de licenças de Oracle e SQL Server. Claro que informalmente é possível obter essa informação com algum contato na Microsoft, mas não sei se servirá de citação na sua monografia. Não encontrei essa informação em nenhum local público e gratuito. O máximo que posso indicar é que você envie um email para a Microsoft (acredite, eles respondem). Opcionalmente pagar por essa informação em alguma fonte reconhecida (Computer World, Gartner, etc).

      [ ]s,

      Gustavo

  11. Olá Gustavo, estou procurando a dias uma forma de fazer consultas hierárquicas com soma dos grupos. achei um artigo seu que esta um show, é exatamente o que eu preciso. (http://social.technet.microsoft.com/Forums/pt-BR/transactsqlpt/thread/b092a634-5130-425b-9cba-479b586c9d6d) porem eu preciso implementar mais uma coluna com o nivel da hierarquia, para mostrar a profundidade e identanção, você pode me ajudar? desde já agradeço.
    Grande abraço e parabens pelos post´s.

  12. Olá Gustavo,
    primeiramente gostaria de parabenizá-lo por expor suas idéias de maneira livre e extremamente didática.
    Estou com uma dúvida em php que é a seguinte:
    Tenho um banco de dados com a tabela usuários, nessa mesma tabela tem a coluna ‘user’.
    De que forma eu poderia adicionar um dígito por método POST em todos os campos da ‘user’ de forma que permanecesse o user cadastrado, sendo acrescentado somente um dígito. Ex:

    Coluna ‘user’ original:
    joao
    mauricio
    mateus

    Após pegar o dígito ‘1’ pelo post, todos dessa coluna ficariam assim:
    joao1
    mauricio1
    mateus1

    Preciso fazer essa query, pois tenho um bd com 32mil users e fazer um por um é complicado. A idéia final é unir um BD ao outro sem a perda de dados, pois trata-se de um jogo em que usuários tem o mesmo ‘user’ no outro servidor.
    Se não tiver entendido entre em contato comigo ou me informe um email para q eu possa esclarecer o que estou precisando.
    Desde já, agradeço sua atenção.

    • Oi Matheus,

      E aí meu caro ? Tudo bem ?
      Li sua dúvida, mas fiquei confuso sobre exatamente o que é necessário fazer.

      Até posso te passar o email, mas você não prefere postar essa no fórum do MSDN ? A ajuda pode chegar mais rápido (se eu não responder alguém o fará).

      [ ]s,

      Gustavo

  13. Bom Dia Gustavo…
    Sim o post já esta encerrado, (e por sinal a solução esta mto boa), porem eu preciso extender e trazer o nivel da hierarquia para identar, e eu não estou conseguindo implementar. você poderia me auxiliar nesta?
    Obrigado Gustavo.

  14. Olá Gustavo, tudo bom ?
    Acessei seu blog achei muito interessante! vi alguns artigos seu na MSDN! estou com uma duvida a respeito de banco de dados! queria saber como eu salvo uma imagem em um arquivo xml onde as descrição dela é salvo em uma tabela no banco, você pode me ajudar ? coloquei meu email no cadastro! se você poder me add ou mandar um email fico grato! desde já obrigado!

    • Oi Daniel,

      Obrigado pelos elogios. O que seria exatamente sua dúvida ? Você possui um documento XML com uma imagem e outras TAGs e precisa persistir no banco ? Seria isso ? Ou você tem a imagem e os dados no banco e precisa enviar para um arquivo XML ?

      [ ]s,

      Gustavo

  15. Olá grande mestre Gustavo, eu fiz o curso 2780 – MAINTAINING A MICROSOFT SQL SERVER 2005 DATABASE lá para o final de 2007, onde você foi o instrutor do curso. Faz muito tempo (risos). Gostaria se possível de tirar essas duas dúvidas abaixo com você.
    No SQL Server 2005, Development Studio:
    1) Como fazer um “transformation” não envolvendo conexões “OLE DB” ? Essa versão não possui objeto “ADO.NET Source” e nem “ADO.NET Destination”.
    2) No Windows Server 2008 tenho o “OLE DB for ODBC”, porém esse não aparece no connection manager do Development Studio, há como realizar alguma configuração para aparecer no connection manager?
    Agradeço muito por sua atenção.
    Abraços

    • Fala André,

      E aí tudo blz ? Já faz um tempinho mesmo (rs). Ainda estou ministrando alguns cursos, mas dei uma reduzida hehehe.
      Eu acho que não vou conseguir responder legal aqui no blog, pois, o espaço é limitado e a formatação deixa a desejar.
      Acredito que você deva ter o meu contato. Pode me detalhar mais ?

      [ ]s,

  16. karlafernandeza

    Boa noite Gustavo !

    Você teria algum tipo de prova para testar conhecimentos intermediários em Sql server 2005?
    Se tiver alguma coisa por favor me envie! Acabou de acontecer um processo seletivo na minha empresa e eu preciso aplicar um teste aos candidatos, mas não consigo encontrar nada para uma vaga de Analista de Informações Gerenciais Sênior, e estou sem tempo algum pra desenvolver!
    Se pudesse me ajudar ficaria muitíssimo grata! Qualquer coisa meu email é karla.fernandeza@gmail.com

    Beijos

    • Olá Karla,

      Não tenho nenhuma prova pronta disponível agora (tenho que buscar os backups). Se o foco for desenvolvimento, você pode usar as questões que publiquei para a prova 70-431. São doze questões que podem ser um pontapé inicial.

      [ ]s,

      Gustavo

  17. Bruno Moreira dos Santos

    Olá Gustavo tudo joia?

    Sou analista de sistemas, trabalho a mais de 3 anos com o ERP da TOTVS, sistema RM e utilizo o SQL Server 2005, sou fanático pelo SQL Server, estava até estudando para tirar a certificação MSCT 70-433, porém, por alguns imprevistos de estudos e trabalhos tive que dar um tempo, mas logo logo ja volto a estudar para tirar a bendita certificação…rs

    E durante várias vezes eu precisei utilizar os fóruns do MSDN e realmente identifiquei que você é um excelente profissional, conhece muito de SQL SERVER, realmente domina o assunto, gostaria de parabenizar pelo seu conhecimento e ainda por compartilhar isso.

    Ainda se possível, gostaria de manter contato com você por e-mail para troca de informações e experiências.

    Um grande abraço!

    Sucesso!

    • Olá Bruno,

      Famoso RM… Tenho um aqui na infra de um dos clientes em 2005.
      Eu agradeço muito o feedback. É esse tipo de retorno que motiva a gente. Eu queria estar mais presente no MSDN, mas ultimamente tem sido difícil.
      A prova 70-433 não é um bicho de 7 cabeças e acredito que se você se esforçar terá êxito. Eu disponibilizei alguns simulados que poderão ajudá-lo. Fique à vontade.
      O canal para contatos está aberto, quando precisar estamos aí. Desejo sucesso na prova.

      [ ]s,

  18. Gustavo,
    Bom dia!
    Tenho conhecimentos basicos em sqlserver (tabelas, procedures, views etc…) porém gostaria de me aprofundar….. por onde começo? pode me dar dicas…?
    Obrigado…. Humberto.

  19. Olá Gustavo boa tarde,
    cara gostaria de saber se vc poderia me ajudar……..
    gostaria de saber se tem como essa procedure retornar uma string ao invés de uma tabela…..????
    segue a procedure…..

    CREATE Procedure spRetornaTextoProcedure
    AS

    Declare @codigo numeric(20)
    declare @nomeProc sysname

    SELECT Top 1 @codigo = OBJECT_ID,
    @nomeProc = name
    FROM sys.procedures
    ORDER BY 1 ASC

    — Usando o Helptext
    Declare @TabProc AS TABLE (texto varchar(max))
    While @nomeProc IS NOT NULL
    Begin
    INSERT INTO @TabProc
    Exec sp_helptext @nomeProc

    INSERT INTO @TabProc
    VALUES(‘ ‘)
    INSERT INTO @TabProc
    VALUES(‘GO’)

    SELECT Top 1 @codigo = OBJECT_ID,
    @nomeProc = name FROM sys.procedures
    WHERE object_id > @codigo
    ORDER BY 1 ASC

    IF @@ROWCOUNT = 0
    SET @nomeProc = NULL
    End
    — Select
    SELECT * FROM @TabProc

    Go

    — Exec Para Teste
    Exec spRetornaTextoProcedure

    então sou iniciante em sql, e tentei declarar a variavel @tabproc como varchar(max) , e trocar os inserts na tabela por sets, para setar o valor nessa @tabproc….mas não deu certo…..!!!!
    bom se vc puder me ajudar agradeço senão, agradeço da mesma forma…..kkkkk
    abraço….
    vlew

    • Olá Thiago,

      Estou com algumas dúvidas do que exatamente o seu código faz, mas acho que você poderia resolver de outra forma

      DECLARE @ID INT
      SET @ID = (SELECT TOP(1) OBJECT_ID FROM sys.procedures ORDER BY 1 ASC)

      PRINT OBJECT_DEFINITION(@ID)

      Era isso ?

  20. Jeronymo Luiz

    Prezado Gustavo

    Bom dia, talvez lembre-se de mim , trabalhei no bancoob com o e-gecart , tenho uma dúvida , não sei se este e o lugar certo , se não for me desculpe, ok . Seguinte trabalhando em uma trigger after insert tenho gerado dinamicamente uma tabela inserted para os registros inseridos na tabela area ( codigo, descricao) , no corpo da trigger com os dados da tabela inserted eu faço um outro insert em uma tabela de outro banco chamada cargo ( codigo identity, descricao) . como o sql server trata esse novo insert , há a criação de uma nova tabela inserted , e se gera como eu faço para acessa-la ? como o sql faz o tratamento de insert
    unico ou seja um por linha com insert por tabela ( insert into tabela select * from tabela1) ? quando eu insiro linha por linha a trigger funciona perfeitamente, quando eu tento fazer insert em bloco a trigger nao insere na tabela do outro banco como se nao fosse populada a inserted .

    Obrigado.
    Jeronymo

    • Oi Jeronymo,

      Lembro sim. Claro com certeza… Era junto com a Andrea não era ?
      As tabelas INSERTED e DELETED são geradas apenas como espelho dos dados da ação disparada pela trigger. Se a trigger foi feita na tabela área, a INSERTED e DELETED referem-se a essa tabela somente. Mesmo que você faça um INSERT em outra tabela, não haverá como você visualizar a INSERTED da outra tabela. Se a outra tabela tiver triggers, você só poderá ver a INSERTED no código da trigger da outra tabela. Ainda assim, se você estiver usando o SQL Server 2005 é possível ver a “INSERTED” e a “DELETED” com o uso da cláusula OUTPUT. Em relação ao problema do bloco vs linha a linha. Tem um post meu que fala sobre o assunto

      Piores Práticas – Elaborar triggers preparadas para linhas e não para conjuntos

      Piores Práticas – Elaborar triggers preparadas para linhas e não para conjuntos

      Evitando Erros Comuns na Elaboração de Código T-SQL (Parte III) (Triggers e Múltiplas Linhas)

      [ ]s,

  21. Ola Gustavo, fui sei Aluno na Impacta… porém com aulas de Java… estou agora atuando em BI e tenho uma duvida, onde gostaria de sua ajuda:

    Tenho um cubo de faturamento onde as NF’s estão dispostas na seguinte ordem

    Ex:

    Measures: Qtde, Val_Unitário, Desc_Unitario. Val_Liquido …
    Dimensões: Num_NF, Ítem, Familia …

    Problema… Quando mudo a forma de agregação de valor unitário para ter idéia do preço médio dos itens do pedido, ele calcula a média absoluta de todos os itens, porém eu preciso da média ponderada ex:

    Se tenho no pedido: 10 itens que custam 8,00 e 2 que custam 4,00 a agregação por AVG diz que o valor médio do item é 6, mais a média ponderada seria ( (10*8) + (2*4) ) / 12 = 7,33

    Tem como mudar inserir esta forma de agregação na measure?

    Desde já agradeço a ajuda.

    • Bom Dia Alexandre,

      Acho que você deve estar se confundindo, pois, não ministro aulas na Impacta (sou de Brasília) e sou uma negação em Java (rs). De qualquer forma vamos lá.
      Não há como você obter o resultado que deseja simplesmente mudando a agregação da Measure Val_Unitario. Ela é apenas o valor unitário e qualquer agregação sobre essa medida não irá considerar as demais. O que você terá que fazer é criar uma medida calculada (Total = Qtde * Val_Unitario) e tirar a média dessa medida calculada. Aí funcionará como você deseja.

      [ ]s,

  22. Gilson de Souza Carvalho

    Boa Tarde, Gustavo, após pesquisas frustradas em varios fóruns, encontrei publicações interessantes tua, isto me levou a raciocinar que tu seria a pessoal idela ou talvez a unica a resolver a minha situação-problema, conforme descrita abaixo…

    Delphi 7 / Mysql / Zeos

    Possuo um DGrid onde exibo as consultas sql de um CAIXA, DataSet (ZQuery), onde constam as colunas COD, DESCRIÇÂO, R$ LANÇ, R$ TOTAL, TIPO (Despesa ou RECEITA), quero visualizar como extrato bancario, qdo eu gero uma consulta geral com todos os lançamentos, tudo OK, o problema é qdo eu filtro por um periodo (data) ou tipo (despesa ou receita), pois nao estou conseguindo atualiza-la a cada lançamento, ou seja, é necessario pegar o saldo da linha anterior efetuar o calculo conforme tipo, para gerar o saldo da linha atual, ouvi alguma coisa sobre Stored Procedure, porém desconheço utilização da mesma, alguma sugestão?…segue abaixo algumas informações e o modelo de visualização do DBGRID…

    CREATE TABLE `caixa` (
    `CX_cd` int(10) NOT NULL auto_increment,
    `CX_dtAtual` date NOT NULL,
    `CX_desc` varchar(50) NOT NULL,
    `CX_valLan` float(8,2) NOT NULL,
    `CX_saldo` float(8,2) NOT NULL,
    `CX_tipo` varchar(10) NOT NULL,
    `CX_obs` text,
    `COR_cd` int(10) default NULL,
    `USU_cd` int(10) default NULL,
    `MOT_cd` int(10) default NULL,
    PRIMARY KEY (`CX_cd`),
    UNIQUE KEY `CX_cd` (`CX_cd`),
    KEY `COR_cd` (`COR_cd`),
    KEY `USU_cd` (`USU_cd`),
    KEY `MOT_cd` (`MOT_cd`),
    CONSTRAINT `caixa_fk` FOREIGN KEY (`COR_cd`) REFERENCES `corridas` (`COR_cd`) ON DELETE NO ACTION ON UPDATE CASCADE,
    CONSTRAINT `caixa_fk1` FOREIGN KEY (`USU_cd`) REFERENCES `usuarios` (`USU_cd`) ON DELETE NO ACTION ON UPDATE CASCADE,
    CONSTRAINT `caixa_fk2` FOREIGN KEY (`MOT_cd`) REFERENCES `motocicletas` (`MOT_cd`) ON DELETE NO ACTION ON UPDATE CASCADE
    ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1 AVG_ROW_LENGTH=16384 COMMENT=’InnoDB free: 3072 kB; (`COR_cd`) REFER `me/corridas`(`COR_cd’;

    Exemplo1: Correto assim…

    Cód Data Lanç. Descrição R$ Valor R$ Saldo Tipo
    8 12/11/2011 DESPESA R$ 10,00 R$ 42,00 DESPESA
    9 12/11/2011 DESPESA1 R$ 2,00 R$ 40,00 DESPESA
    10 12/11/2011 RECEITA R$ 10,00 R$ 50,00 RECEITA
    11 12/11/2011 RECEITA1 R$ 5,00 R$ 55,00 RECEITA
    12 12/11/2011 DESPESA2 R$ 5,00 R$ 50,00 DESPESA
    13 12/11/2011 RECEITA2 R$ 15,00 R$ 65,00 RECEITA

    Exemplo 2: ERRADO assim…

    Cód Data Lanç. Descrição R$ Valor R$ Saldo Tipo
    8 12/11/2011 DESPESA R$ 10,00 R$ 42,00 DESPESA
    9 12/11/2011 DESPESA1 R$ 2,00 R$ 40,00 DESPESA
    12 12/11/2011 DESPESA2 R$ 5,00 R$ 50,00 DESPESA

    Exemplo 2: Correto seria assim…

    Cód Data Lanç. Descrição R$ Valor R$ Saldo Tipo
    8 12/11/2011 DESPESA R$ 10,00 R$ 42,00 DESPESA
    9 12/11/2011 DESPESA1 R$ 2,00 R$ 40,00 DESPESA
    12 12/11/2011 DESPESA2 R$ 5,00 R$ 35,00 DESPESA

    https://byfiles.storage.live.com/y1p3yroDqaW94CKnn4x8i2AzQxhBaOwPdKzCvviQAv814mQCjJtkwJxg5cTeuaWs26AYvIX-ktPg2e7RqMnHqKAAA/CERTO.png?psid=1

    https://byfiles.storage.live.com/y1pxXIxOKJdAfRRBMgdd0itRG3iMgcfZSa7UnM-_ITw7safAxd1snfQzaoofCp-TphacggCkPRz9zs6OjNxdmS-XA/ERRADO.png?psid=1
    _________________
    Gilson de Souza Carvalho

    Celular: (62) 9669 2000

    E-mail/Msn: gaucho.gilson@hotmail.com
    Skype: gaucho.gilson

  23. Gustavo, boa tarde.
    Eu li sua resposta dessa dúvida
    http://social.msdn.microsoft.com/Forums/pt-br/transactsqlpt/thread/228e1c77-9bcf-418a-aaa2-6472f849dc94
    mas não consegui fazer o .bat funcionar
    Eu rodo pelo DOS, ele pede password mas não é digitável, só fica piscando o cursor. Preciso exatamente disso, executar vários scripts de inserção num banco de dados, e eles estão dividos em vários arquivos.

    • Oi Thales,

      Que estranho, pois, já fiz uso de SQLCMD com senhas em inúmeras situações nos mais diversos SOs e SQLs. Você está passando a senha em texto ? Uma alternativa é utilizar variáveis no DOS, para que você especifique a senha e os scripts possam utilizá-las na BAT. Mas aí… Tem tempo que deixei o DOS.

      [ ]s,

      Gustavo

  24. Bruno Moreira dos Santos

    Gustavo, a cada dia que passa cara, eu te adiro cada vez mais pelo profissional que você é, te admiro em dois pontos.

    1º Pelo seu conhecimento

    2º Pela sua didática que é incrível.

    Me fala uma coisa, o que você NÃO SABE de SQL Server ????…rssss

    Grande abraço e parabéns mais uma vez!!!!!

  25. Olá, sempre busco alguma artigo aqui, mas, neste caso ainda fiquei na dúvida do que fazer e como.
    tenho um BD com tamanho acima de 9 gb (mdf=9,43 e ldf=59), o sistema é muito lento para abrir a tela de login e para executar qualquer processo é mais lento ainda.
    como proceder para executar o shrink?

  26. Gustavo,
    Estou precisando de uma ajuda. Eu vou fazer nesse final de semana, uma manutençao no banco de produçao que é um SQL SERVER 2005. Essa manutençao é separar os index e as tabelas do filegroup primary.

    Entao eu vou criar um filegroup por exemplo index01 e mover os index nao cluster e cluster. Sabendo que pela referencia da BOL para vc mover os index cluster é preciso dropar e recriar os index cluster(as PK e as Uniques). E os index nao cluster é possivel alterar direto pelo visual studio.

    O que está me pertubando é que os index cluster tem referencias de pais e filhos estou com muito receio de acontecer alguma consistencia na hora de voltar os index. Alguem ja passou por alguma experiencia igual a essa? Gostaria de receber algum conselho de como posso fazer essa manutençao da melhor forma possivel.
    Será que é melhor fazer um checkdb do banco para verificar as inconsistencias?

    Obrigada pela atençao,
    Suzana

    • Boa Noite Suzana,

      A idéia de separar os índices em outro FILEGROUP é bem vinda, mas vi um pequeno equívoco no seu enunciado. Os índices nonclustered podem ficar em um FILEGROUP diferente da tabela, mas os índices clustered não. Uma vez que o índice clustered é a própria tabela (e por isso dizemos tabelas clusterizadas), não é possível e nem faz sentido tentar separar o índice clustered da sua tabela.

      Para reconstruir os índices nonclustered eu creio que você terá menos problemas. Basta gerar o scripts deles e rodar o script com a opção DROP_EXISTING.

      [ ]s,

      Gustavo

  27. Olá Gustavo, muito bacana seu blog. Conteudo de primeira.
    Só tem um detalhe que é um pouco chato. A fonte que voce usa é muito ruim pra copiar e colar código pois os caracteres de “aspas simples” e comentários são diferentes do SQL Server.
    Assim, ao copiar algum codigo, temos sempre que ficar ajustando.
    Fora isso ta show, valeu

  28. Gustavo, tudo bem ?
    O que você me diz sobre esses sites que vendem SelfTest que representam a prova de certificação ? Conheço pessoas que tiraram a certificação apenas decorando o SelfTest, você não acha que daqui um tempo a certificação ira perder seu valor no mercado ?

    • Oi Daniel,

      Da mesma forma que tem gente que cola nas provas escolares ou compras provas de concurso, há também aqueles que decoram o conteúdo com o Self Test. A Microsoft e todos os fabricantes de uma forma geral tem feito várias tentativas de diminuir a eficácia desses Self Tests com uma ampliação do número de questões, mudança nas provas, etc, mas nem sempre é fácil. Eu não acho que isso irá diminuir o valor da certificação (especialmente na iniciativa privada), pois, certificação pode ser um diferencial, mas é muito fácil descobrir aqueles que realmente sabem daqueles que não sabem (independente da certificação).

      Já dispensei gente com vários títulos de certificação para contratar pessoas com muito menos, pois, era visível que os primeiros só tinham papel e nenhuma experiência ou conhecimento. Acho que a presença do SelfTest desperta os recrutadores para atentar-se ao fato de que a certificação é importante, mas sozinha não significa nada.

      [ ]s,

      Gustavo

  29. Olá Gustavo, tudo bem?
    Sou de SP, atualmente trabalho na área de tecnologia do Banco Bradesco no ramo de Previdência Privada e Seguros, estou tentando mudar de área, e seguir meu sonho de ser DBA, mais específico SQL Server… o problema é que não tenho experiência na área, já perdi as contas de quantas indicações e de quantos curriculos enviados para não ter nenhuma resposta, gostaria de algumas dicas sobre o que eu posso fazer, tenho o conhecimento, tenho vontade, mas não tenho oportunidade, não estou procurando um emprego por salário, topo até um emprego para ser trainee, mas ainda assim não encontro, você poderia me ajudar? o que posso fazer?
    Obrigado!!!!
    5310.thiagot@bradesco.com.br

    • Olá Thiago,

      A área de DBA tem essa particularidade. Enquanto áreas como suporte a desktops e desenvolvimento absorvem mais rapidamente profissionais como pouca experiência, DBAs iniciantes tem muito mais dificuldade nesse ponto (e acredite não é só com você). Bem, a primeira recomendação que dou é que não perca a fé e nem a esperança. Se é o seu sonho não desista, pois, persistência é a chave para chegarmos lá. Minha segunda recomendação é você continue estudando, pois, é preciso estar preparado para quando a oportunidade aparecer. A terceira recomendação é que sempre que possível, tente estar em eventos ligados à comunidade de SQL Server. Há vários eventos gratuitos presenciais ou não (Webcasts, SQL Saturday, etc) e é bom para ir fazer um networking básico e quem sabe saber onde as oportunidades estão. Eu mesmo já recrutei e contratei pessoas assim. Acredito que em São Paulo existam ainda mais eventos e oportunidades nesse sentido.

      Enfim, não há fórmula certa e nem tempo definido para conseguir entrar, mas não desista que o seu esforço e persistência vão ser fundamentais para que esse dia chegue mais rápido. Falo por experiência própria, pois, minha formação é em administração e apenas depois de formado que consegui entrar (e não foi fácil).

      [ ]s,

      Gustavo

  30. Boa tarde Gustavo, queria sua opnião, o uso de SQL Merge é uma boa opção? Abraço

    • Olá Júlio,

      Isso é relativo vai depender do seu objetivo. Se a idéia é fazer o UPSERT (Update com INSERT), o MERGE é bem vindo. Se a idéia é fazer muitos UPDATEs e raramente um INSERT, pode ser mais performático codificar o UPDATE e avaliar o INSERT com base no retorno do @@rowcount.

      [ ]s,

      Gustavo

  31. Lazarus Miguel

    Olá Gustavo,
    tava procurando informações sobre DB2 e achei seu site.

    Queria saber o seguinte:
    Trabalho com DB2 LUW – em específico o Windows (v10.1).

    Nunca trabalhei com Mainframe, mais quais seriam as diferenças entre o DB2 LUW (windows) para o DB2 para mainframe?

    Além da diferença de plataforma, existe diferença de comandos SQL ? existe diferença de núcleo (ou kernel não sei o termo correto) ? Da para usar o Data Studio 3.11 normalmente para acessar o DB2 LUW e/u o DB2 em mainframe?

    Desde já agradeço.

    • Olá Lazarus,

      Como o Mainframe também suporta o Linux, não existe uma segmentação entre DB2 LUW e DB2 Mainframe. Eu por exemplo tenho um DB2 LUW no Mainframe :) e consigo utilizar o Data Studio perfeitamente. O que acredito que você queira perguntar é se há diferença entre o DB2 LUW (que pode estar ou não no Mainframe) e o DB2 para z/OS ou MVS. De fato existem muitas diferenças na parte de gerenciamento, mas apenas algumas poucas na parte de queries SQL de uma forma geral. Ainda não sei se é possível utilizar o Data Studio com essas outras versões, pois, não respirei esse ambiente.

      [ ]s,

      Gustavo

  32. Guilherme Candido

    gustavo, eu admiro muito o seu trabalho e curto muito seus posts PARABENS pelo trabalho, eu gostaria de uma ajuda sua pois sou DBA junior a 8 meses consegui entrar em uma empresa e ser o unico dba dela e gracas a Deus conseguo resolver meu trabalho de administracao em geral e principalmente de TUNNING numa empresa de um ambiente meio/muito critico, porém eu tenho algumas duvidas que nao consegui resolver nos forums da vida hehe entao eu te pergunto no meu PERFMON o contador Paginas/s memoria, tem dias que esta muito alto frequentemente e tem dias que nao , porem eu ja configurei o memoria do sql server pra consumir 28 g pra ele deixar 4 pro S. justamente para evitar a paginacao(que é oq esse contador indica) o outro contador esta ok no 100 o buffer Cache hit ration , agora os contadore de disco e processador estao HORRIVEIS por causa de uma query que eu ja melhorei e soh falta coloca-la em producao… resumindo esse contador (paginas/s) pode ser influenciado pelos cont. de disco??? ou tem outro motivo???? pois nao era pra estar ocorrendo paginacao!!!! OBRIGADO CARA

  33. estranho meu post foi apagado??

  34. Douglas Porto

    Olá Gustavo, boa tarde.
    Gostaria de tirar uma duvida com você.
    Aqui em minha empresa temos um Cluster configurado em SQL Server 2008 R2, rodando Windows Server 2008 R2, faremos uma atualização de processador neste Cluster, minha duvida é; como fazer com que o Cluster do SQL Server reconheça esta adição de um novo processador, é possível isto?
    Você teria algum artigo em que você demonstra tal cenário?
    Desde já agradeço.

    • Boa Noite Douglas,

      Tanto o SQL Server 2008 R2 quanto o Windows 2008 R2 tem Hot Add CPU. Basta você adicionar que eles vão reconhecer tranquilamente. Se você for se sentir melhor, você pode dar um boot no Windows, mas a princípio não é necessário (se você estiver utilizando as versões Enterprise). No caso de versões inferiores, o boot é necessário. Lembre-se também que dependendo da versão, pode ser que a CPU não seja reconhecida em virtude de limitações, pois, versões Standard por exemplo tem limite de CPU.

      [ ]s,

      Gustavo

  35. Ola Gustavo.
    Parabéns pelo material, são muito uteis e simples de se perceber.
    Gostaria de saber como resolver o seguinte erro:
    Error completing task outcome (Seguinte): could not update: [org.jbpm.pvm.internal.type.variable.BlobVariable#142364729]
    com.csw.impression.bpm.execute.BpmTaskOutcomeExecutionError@536142a7[errorId=e16af3c9-5687-4577-8059-cf4d536eda5c,processInstanceId=ordem-pagamento_viagem.142364727,processId=666,errorMessage=could not update: [org.jbpm.pvm.internal.type.variable.BlobVariable#142364729],taskName=Registar Operação – Beneficiário,outcomeName=Seguinte]
    org.hibernate.exception.LockAcquisitionException: could not update: [org.jbpm.pvm.internal.type.variable.BlobVariable#142364729]

    no mesmo ficheiro de log tenho:
    ERROR [com.csw.impression.rendering.component.controller.ErrorController] org.hibernate.exception.LockAcquisitionException: could not delete: [org.jbpm.pvm.internal.lob.Lob#142366302]
    javax.ejb.EJBException: org.hibernate.exception.LockAcquisitionException: could not delete: [org.jbpm.pvm.internal.lob.Lob#142366302]

    Obrigado

    • Olá Monica,

      Difícil responder, pois, precisaria de mais detalhes.

      Acredito que pela mensagem de erro, você pode estar tentando excluir ou atualizar um registro que está bloqueado por outra sessão. Talvez fosse interessante que você realizasse um trace para obter mais detalhes e poder simular o erro. Se seu DELETE possuir uma cláusula WHERE, verifique se há índices úteis.

      Também recomendo postar sua dúvida no fórum MSDN ou TechNet. A ajuda pode vir mais rápido.

      [ ]s,

      Gustavo

Deixar mensagem para Daniel Cancelar resposta