Você está aqui: Principal > Artigos > Windows
  :: Autor: Rodrigo Crespi   :: Site:     www.crespi.pro.br/
  :: Data:  21/06/2005   :: e-mail: rodrigo@crespi.pro.br
LIVROS
Administração e Negóci...
Aplicativos
AutoCAD
Banco de Dados
Carreira e Trabalho
Criação de Sites e Web...
Cultura e Interesse Ge...
Exames de Certificação
Excel
Finanças e Investiment...
Gráficos e CorelDraw
Hardware e Montagem
Office 2007
Programação
Redes
Segurança
Windows e Linux
Word
VÍDEO-AULAS
Access
Administração e Negócios
Banco de Dados
CAD
Concursos Públicos
Excel
Hardware e Montagem
Internet
PowerPoint
Programação
Programas Gráficos
Redes e TCP/IP
Vídeo e Áudio
Webdesign
Windows
Word
E-BOOKS
Access
Administração e Negócios
Área Gráfica
Banco de Dados
BrOffice
CAD
Certificações Microsoft
Concursos Públicos
Excel
Formação Pessoal e Profissional
Internet
Linux
Literatura e Outros
PowerPoint
Programação
Redes e TCP/IP
Vìdeo
Webdesign
Windows
Word
Criando Sequence com SQL Server

Introdução

Nos dias de hoje a maior parte dos projetos são multiuso e aplicações client/server, onde diversos usuários acessam e alteram os dados ao mesmo tempo. Com aumento das aplicações baseadas em browser, alguns problemas podem ser diagnosticados, um deles é a concorrência de dados.

Descrição do problema

O que é concorrência de dados? Bem, vamos imaginar um cenário hipotético para ilustrar a explicação. Imagine uma aplicação que possui um cadastro de clientes, este cadastro de clientes possui uma tabela nomeada cad_cliente e composta dos campos: codcliente, nomecliente. Onde codcliente é um integer e a primary key da nossa tabela e nomecliente é um varchar(20).

Agora imaginemos que o cliente do nosso banco de dados possui duas secretárias que atendem a todo pais e cadastram clientes a todo tempo. A secretária “A” abre um evento de inserção na tabela de cad_cliente ao mesmo tempo em que a secretária “B”, supondo que ambas fossem salvar ao mesmo tempo os registros, ou que por uma questão de velocidade de hardware as informações de gravação chegassem ao SGBD ao mesmo tempo, como seria definido o campo codcliente? Ok, poderiamos utilizar campos identity (campos auto-incrementáveis como os do MS-Access), porém não é minha intenção aqui discutir qual a melhor prática até porque isso vai depender do projeto, da estrutura e do ambiente. Pode ser uma ótima sugestão para um próximo artigo.

Solução proposta

Uma boa solução é criar uma tabela auxiliar (por exemplo, NumeroSequencial) que conterá o próximo número seqüencial para cada chave de cada tabela. Para cada registro inserido em uma tabela, você necessitará obter um valor da tabela NumeroSequencial e incrementar o número. Este valor deverá ser usado em um (ID) identificador único de registro a ser inserido.

O uso de sequence é uma prática muito comum principalmente em bancos como postgressql, ORACLE e outros, os quais possuem funções especificas para tratamento de seqüenciais. No caso do postgressql o comando Create Sequence cria um gerador de números seqüenciais, que envolve a criação e a inicialização de uma nova tabela com uma única linha.

Esta técnica é um caminho para implementar controle de concorrência de chaves quando não é possível utilizar campos identity. Técnica que também poderá causar problemas de transação, porque irá criar processos de read, lock e update em valores chaves. Teremos que fazer um controle de lock do registro para resolver esses problemas e não criar um lock da página de dados (o que não era possível em versões antigas do SQL Server, por isso muitos analistas afirmam que não é possível fazer controle de chaves concorrentes no SQL Server).

Solucionando o problema

Resolveremos esse problema por meios mecânicos aumentando o número de registros para preencher o tamanho de uma página de dados. Criando campos “dstmp” no formato char que será usado para adicionar o tamanho necessário aos registros até preencher o equivalente a uma página de dados.

Página de dados é a menor área de armazenamento de dados do SQL Server, e preenchendo ela, estaremos provocando o lock (quando for o caso) somente de uma linha, no caso a página de dados que foi ocupada por valores NULL.

No SQL Server 2000 e SQL Server 7.0, isso não é necessário já que nessas versões automaticamente o lock pertence a um registro e não a uma página de dados. (Lembrando que uma página de dados pode conter mais de um registro). Entretanto, o processo ainda pode competir para read, lock e update um valor chave no mesmo registro. Isto pode conduzir para um deadlock. A procedure que segue é usada para obter um identificador para da tabela NumeroSequencial.

Vamos voltar a nossa hipótese, nós temos dois processos no servidor e os dois necessitam inserir um registro em uma cad_cliente. Um processo lê o registro da tabela NumeroSequencial. Em seguida o outro processo também ira ler um registro da tabela NumeroSequencial. O primeiro processo assumira o mesmo Id do segundo já que ambos estão lendo a tabela ao mesmo tempo. Por isso cada um terá que ter um lock de registro, permitindo a os outros processos somente pegar o Id quando uma atualização estiver concluída. Esta situação é chamada de deadlock.

O SQL Server tem um mecanismo que ira matar um dos processos para que um possa continuar. Isso se faz necessário em uma aplicação client/server para evitar a perda de dados. O melhor caminho para tratar um deadlock é utilizar um hint na clausula From que segue no select forçando o SQL Server a criar um lock na clausula update e instantaneamente evitando o compartilhamento do registro. Um lock irá prevenir que outro processo venha a ler e criar locks até que o registro de origem seja completado.

O segundo processo irá esperar o primeiro processo ser concluído, segue a procedure com o tratamento de lock.

Conclusão

Neste artigo procuro mostar uma solução competente para resolver um problema grave de concorrência de dados usando o MS SQL Server, como eu disse no inicio do artigo não é meu propósito ficar discutindo se essa é a melhor ou pior técnica. Mas existem outras soluções, por exemplo: utilizar campos identity (campos auto-incrementáveis), fazer o controle de campos IDs através da aplicação e etc.. A escolha deve ser por conta do DBA ou AD do projeto, afinal cada caso é um caso e cada aplicação tem suas particularidades.


Web site: www.crespi.pro.br

email: rodrigo@crespi.pro.br



LIVROS CAMPEÕES DE VENDA NO SITE

Cursos Online com Certificado e Suporte à Dúvidas

CURSOS ONLINE COM CERTIFICADO - INDICADOS POR JÚLIO BATTISTI
EM PARCERIA COM BRAVA CURSOS
INFORMÁTICA
  • Curso de Digitação
  • Formatando e Instalando Computador
  • Excel para Iniciantes
  • Curso Compre no Ebay
  • Informática Educativa
  • Curso de Linux
  • Segurança na Internet
  • Montagem e Manutenção de Computadores
  • Curso Remoção de Vírus
  • Curso Ubuntu
  • Instalação Linux - Ubuntu
  • AdministraÇÃo
  • Gestão de Projetos e Empreendedorismo
  • Benefícios da Previdência
  • Curso HP 12C
  • Matemática Financeira
  • Curso Análise Salarial
  • Processo de Elaboração de Questionário
  • Excelência no Atendimento ao Cliente
  • Logística do Transporte
  • Licitações e Contratos Administrativos
  • Profissionalizante
  • Adestramento Canino
  • Como fazer pesquisa Científica e Monografia
  • Curso de Corte e Costura
  • Supervisor de Telemarketing
  • Balconista de Padaria
  • Curso Educação Infantil
  • Recepcionista e Secretaria
  • Velas Artesanais
  • Relações Interpessoais
  • Curso de Arbitragem
  • Bullying e Cyberbullying
  • Capacitação de Tutores em EAD
  • EstÉtica
  • Curso de Massoterapia
  • Curso de Depilação
  • Drenagem Linfática
  • Curso de Maquiagem
  • Limpeza Turbinada de Pele
  • Alisamento e Relaxamento Capilar
  • Curso de Etiqueta
  • SPA de Vinhoterapia na Estética Facial
  • Curso de Shantala
  • Introdução à Colorimetria Capilar
  • Pessoal
  • Curso de Caligrafia
  • Memorização
  • Chefia e Liderança
  • Curso Falar em Público
  • Curso Bases Neurológicas
  • Leitura Dinâmica
  • Planejamento de Projeto Pessoal
  • Reforma Ortográfica
  • Como Passar em Concursos Públicos
  • Direção Defensiva
  • Administração do Tempo
  • Curso de Redação
  • Curso de Meditação
  • Como Passar no Vestibular
  • Atualização Gramatical
  • NegÓCIOS
  • Relações Humanas e Ética Profissional
  • Marketing e Vendas Diretas
  • Persuasão em Vendas
  • Entretenimento
  • Curso de Mágica
  •  
    SaÚde
  • Primeiros Socorros
  • Curso de Fitoterapia
  • Curso de Aromaterapia
  • Medicina Alternativa
  • Plantas Medicinais
  • Técnicas básicas de Enfermagem
  • O Trabalho do Agente Comunitário de Saúde
  • Ergonomia - Postura Correta em Frente ao Computador
  • Ética Profissional - Ênfase em Radiologia
  • Adolescência: Visão Saúde do Assunto
  • Meio Ambiente
  • Curso Gestão Ambiental
  • Jardinagem e Paisagismo
  • Curso de Reciclagem
  • Curso de Bonsai
  • MÚsica
  • Curso de Violão
  •  
    NutriÇÃo
  • Higiene e Manipulação de Alimentos
  • Congelamento de Alimentos
  • Culinária Básica
  • Culinária Intermediária
  • RelaÇÕes Humanas
  • Curso Gestão de Pessoas
  • Departamento Pessoal
  • Desenvolvimento Pessoal Empresarial
  • Curso de Telemarketing
  • Curso Dinâmica em Grupo
  • Rescisão Contrato de Trabalho
  • Folha de Pagamento na Prática
  • Atendimento ao Cliente
  • Adm. da Empregada Doméstica
  • Curso de Homolognet
  • Recursos Humanos - Férias
  • Recursos Humanos - 13° Salário
  • Registro de Empregados
  • Web Master
  • Curso de HTML
  • Curso de WordPress
  • Curso de HTML5
  • Designer GrÁfico
  • Curso de Corel Draw
  • Efeitos Especiais com InDesign CS5
  • Efeitos Tipográficos com InDesign CS5
  • CURSO EM FORMATO DE VÍDEO-AULA
    EXEMPLOS PRÁTICOS PASSO A PASSO COM SOM E IMAGEM
    Clique no curso para informações detalhadas
    Curso Duração Informações
    ACCESS
    Vídeo Aula: Access 2007 - Consultas - Curso Completo e Prático 4:30h Clique aqui
    Vídeo Aula: Access 2007 - Curso Básico e Prático 5:30h Clique aqui
    Vídeo Aula: Access 2007 - Curso Intermediário - Passo a Passo 5:00h Clique aqui
    Vídeo Aula: Access 2007 Avançado Macros e Programação VBA 11:30h Clique aqui
    Vídeo Aula: Access 2010 - Básico + Intermediário 3:00h Clique aqui
    Vídeo Aula: Aprenda Access 2007 - Curso Prático 1:30h Clique aqui
    Vídeo Aula: Formulários e Macros no Access 2007 - Curso Prático 6:00h Clique aqui
    Vídeo-Aula - Access 2007 - Curso Básico 2:01h Clique aqui
    Vídeo-aula - Access 2007 - Tudo Sobre Consultas 2:30h Clique aqui
    Vídeo-Aula - Curso Avançado de Access 2003 2:48h Clique aqui
    Vídeo-Aula - Curso Básico de Access 2003 2:49h Clique aqui
    EXCEL
    Vídeo-aula - Curso de Macros e Programação VBA no Excel - Básico e In... 13:02h Clique aqui
    Vídeo-Aula: Excel 2007 - Curso Avançado 6:00h Clique aqui
    Vídeo-Aula: Excel 2007 Avançado - Passo a Passo 7:30h Clique aqui
    Vídeo Aula: Aprenda Excel 2007 - Avançado 1:30h Clique aqui
    Vídeo Aula: Excel 2010 - Básico e Intermediário 7:36h Clique aqui
    Vídeo aula: Excel 2010 - Dashboards - Curso Completo 2:49h Clique aqui
    Vídeo Aula: Funções de Pesquisa no Excel 2007 2:00h Clique aqui
    Vídeo Aula: Macros e Programação VBA no Excel 2007 - Básico + Intermed... 11:00h Clique aqui
    Vídeo Aula: Macros e Programação VBA no Excel 2007 Curso Avançado 4:00h Clique aqui
    Vídeo Aula: Tabelas Dinâmicas no Excel 2007 - Curso Completo 2:30h Clique aqui
    Vídeo Aula: Tudo Sobre Funções de Texto no Excel 2007 2:00h Clique aqui
    Vídeo-Aula - Criando um Cadastro de Clientes com o VBA no Excel 2003 2:14h Clique aqui
    Vídeo-aula - Criando uma Agenda no Excel 0:40h Clique aqui
    Vídeo-aula - Curso de Macros e Programação VBA no Excel - Avançado 11:27h Clique aqui
    Vídeo-aula - Excel 2003 - Curso Básico 3:03h Clique aqui
    Vídeo-Aula - Excel 2007 - Dashboards - Curso Completo 1:30h Clique aqui
    Vídeo-Aula - Tabelas Dinâmicas Avançadas no Excel 2003 2:00h Clique aqui
    Vídeo-aula - Tudo Sobre Funções Matriciais no Excel 2:30h Clique aqui
    Vídeo-Aula - Tudo Sobre Gráficos no Excel 9:00h Clique aqui
    Vídeo-aula interativa: Tudo Sobre Tabelas Dinâmicas no Excel 2003 2:30h Clique aqui
    Vídeo-Aula: Excel 2003 Avançado em 120 Lições 14:00h Clique aqui
    Vídeo-aula: Excel 2007/2010 Básico + Intermediário em 26 Lições 3:00h Clique aqui
    WORD
    Vídeo Aula: Aprenda Word 2007 - Curso Prático 1:30h Clique aqui
    Vídeo-Aula - Curso Básico de Word 2003 2:14h Clique aqui
    Vídeo-aula - Word 2003 Avançado 1:34h Clique aqui
    Vídeo-aula - Word 2003 Básico 2:14h Clique aqui
    Vídeo-Aula - Word 2007 - Curso Básico 2:23h Clique aqui
    POWERPOINT
    Vídeo Aula: Aprenda PowerPoint 2007 - Curso Prático 1:30h Clique aqui
    Vídeo-Aula - Curso Básico de PowerPoint 2003 2:22h Clique aqui
    WINDOWS
    Vídeo Aula: Aprenda Windows 7 - Curso Prático 1:30h Clique aqui
    Vídeo-Aula - Curso Básico de Windows XP 2:36h Clique aqui
    Vídeo-Aula - Windows 7 - Formatação, Instalação e Configuração 3:40h Clique aqui
    Vídeo-Aula - Windows Server 2003 e Active Directory - Instalação e Adm... 27:00h Clique aqui
    Vídeo-Aula - Windows XP - Formatação e Instalação 3:47h Clique aqui
    Vídeo-Aula - Windows XP Básico + Intermediário + Dicas Práticas 8:00h Clique aqui
    Vídeo-Aula: GPOs no Windows Server 2003 - Curso Completo 4:00h Clique aqui
    Vídeo-Aula: Windows 7 - Curso Prático 5:00h Clique aqui
    Vídeo-Aula: Windows Server 2003 - DNS DHCP WINS e TCP/IP 5:00h Clique aqui
    Windows Server 2003 - Terminal Services e Active Directory 2:30h Clique aqui
    REDES E TCP/IP
    Aprenda Redes para Casas e Escritórios 1:30h Clique aqui
    PROGRAMAÇÃO
    Vídeo-Aula: Programação Delphi - Básico + Intermediário 30:00h Clique aqui
    Vídeo Aula: Criando um Sistema de Controle de Estoque Completo com Del... 11:19h Clique aqui
    Vídeo Aula: Programação Orientada à Objetos com Java 9:00h Clique aqui
    Vídeo-Aula - CALCULADORA HP 12C - Curso Prático em 80 Lições 02:30h Clique aqui
    Vídeo-Aula - CALCULADORAS HP 50G - 49G/G+ - 48 GII 1:30h Clique aqui
    Vídeo-Aula - Curso Completo de Lógica de Programação 22:15h Clique aqui
    Vídeo-Aula - Curso Completo de PHP + HTML + CSS 27:35h Clique aqui
    Vídeo-Aula - Lógica de Programação com VB.NET 14:00h Clique aqui
    Vídeo-Aula - Programação C - Curso Básico e Intermediário 12:00h Clique aqui
    Vídeo-Aula - Programação Web com ASP.NET 3.5 e VB.NET - Básico 19:00h Clique aqui
    Vídeo-Aula - VB.NET 2010- Curso Avançado 37:00h Clique aqui
    Vídeo-Aula - VB.NET 2010- Curso Básico e Prático 22:00h Clique aqui
    Vídeo-Aula: Curso de Java e Lógica de Programação com Java 8:00h Clique aqui
    Vídeo-aula: Programação PHP - Passo a Passo em 151 Lições 2:00h Clique aqui
    Vídeo-aula: Programação Visual C Sharp 2010 - Passo a Passo 37:00h Clique aqui
    Vídeo-Aula: Programação Web com ASP.NET 4.0 e C# - Curso Avançado 22:00h Clique aqui
    Vídeo-Aula: Programação Web com ASP.NET 4.0 e C# - Curso Básico 20:00h Clique aqui
    Vídeo-aula: Visual C# 2010- Curso Avançado e Prático 32:00h Clique aqui
    CONCURSOS PÚBLICOS
    130 Questões de Matemática para Concursos Públicos - Resolvidas e Come... 6:00h Clique aqui
    Vídeo Aula: Física 1 - Ensino Médio 1:30h Clique aqui
    Vídeo Aula: Física 2 - Ensino Médio 1:30h Clique aqui
    Vídeo Aula: Português e Gramática - Teoria + Prática 30:18h Clique aqui
    Vídeo Aula: Progressão Aritmética - PA mais Progressão Geométrica - PG... 4:00h Clique aqui
    Vídeo-aula - Análise Combinatória - Teoria e Prática 6:00h Clique aqui
    Vídeo-aula - Conjuntos - Teoria e Prática 5:00h Clique aqui
    Vídeo-aula - Excel Para Concursos Públicos - Simulados e Provas Coment... 2:00h Clique aqui
    Vídeo-aula - Matemática Financeira - Teoria e Prática 9:10h Clique aqui
    Vídeo-Aula - Raciocínio Lógico - Curso Completo e Prático 12:00h Clique aqui
    Vídeo-aula - Série Concursos: Inglês ESAF - Simulados e Provas Comenta... 2:00h Clique aqui
    Vídeo-Aula: Concordância Nominal e Concordância Verbal 0h Clique aqui
    Vídeo-Aula: Matemática do 1º Ano do Segundo Grau - Curso Completo 27:00h Clique aqui
    Vídeo-Aula: Matemática do 1º Grau - Curso Completo 30:00h Clique aqui
    Vídeo-Aula: Trigonometria - Teoria e Prática - Completo 6:00h Clique aqui
    BANCO DE DADOS
    Vídeo-Aula - Dominando o ORACLE - Curso Prático 12:00h Clique aqui
    Vídeo-Aula - Linguagem SQL e Banco de Dados - Teoria e Prática 08:00h Clique aqui
    Vídeo-Aula - MySQL - Curso Completo e Prático 12:00h Clique aqui
    Vídeo-aula - SQL Server 2005 - Reporting Services 2:30h Clique aqui
    Vídeo-Aula: Dominando o SQL Server 2005 - Curso Completo 5:00h Clique aqui
    Vídeo-Aula: Firebird e Linguagem SQL - Curso Completo 12:00h Clique aqui
    WEBDESIGN
    Criando um Site Completo e Profissional com Fireworks, Flash, Dreamwe... 5:00h Clique aqui
    Criando um Site ou Blog Dinâmico, Completo e Profissional, facilmente,... 6h Clique aqui
    Vídeo-Aula - Criação de Sites - Curso Básico 3:00h Clique aqui
    Vídeo-Aula - Criando uma Loja Virtual com PHP e MySQL - Curso Completo... 19:00h Clique aqui
    Vídeo-Aula - Flash MX - Curso Básico 2:26h Clique aqui
    Vídeo-Aula - HTML - Curso Prático 2:40h Clique aqui
    Vídeo-Aula: Como Criar um Portal Profissional e Dinâmico, com o WordPr... 7:40h Clique aqui
    Vídeo-Aula: Criando uma Loja Virtual Completa com o Magento 5:33h Clique aqui
    INTERNET
    Vídeo-Aula - Curso de Microinformática Prática 4:35h Clique aqui
    Vídeo-aula - Curso Prático de Internet 0:40h Clique aqui
    Vídeo-aula - Curso Prático de Outlook Express 0:55h Clique aqui
    Vídeo-Aula: Tudo Sobre Rede Sociais - Facebook, Twitter, Orkut e MSN ... 3:00h Clique aqui
    CAD
    Vídeo-Aula - Curso de Autocad 2D 4:00h Clique aqui
    Vídeo-Aula - Curso de Autocad 3D 3:45h Clique aqui
    VÍDEO E ÁUDIO
    DVD: Conversão de Formatos Digitais: Áudio e Vídeo 1:26h Clique aqui
    Sony Vegas 8 PRO - Edição de Vídeo e Multimídia para Web 5:00h Clique aqui
    Vídeo-Aula - Curso de Teoria Musical 1:00h Clique aqui
    PROGRAMAS GRÁFICOS
    Vídeo-Aula - Adobe Illustrator CS4 - Curso Completo 3:00h Clique aqui
    Vídeo-Aula - Adobe InDesignr CS4 - Curso Completo 3:00h Clique aqui
    Vídeo-Aula - Corel Draw X4 - Curso Completo 5:00h Clique aqui
    Vídeo-Aula - Criando Efeitos Digitais com o Photoshop CS4 e com o Illu... 5:00h Clique aqui
    Vídeo-Aula - Curso de CorelDraw X4 - Módulo I 3:00h Clique aqui
    Vídeo-Aula - Curso Profissional Photoshop 4:20h Clique aqui
    ADMINISTRAÇÃO E NEGÓCIOS
    DVD - Curso de Oratória - Falando em Público sem Medo 2:36h Clique aqui
    VÍDEO AULAS DE HARDWARE E MONTAGEM DE PCS
    DVD: Hardware - Curso Básico 0:58h Clique aqui
    Vídeo Aula: Aprenda Hardware e Montagem de Microcomputadores 1:30h Clique aqui