CORRECÇÃO: SELECT INTO comportamento proteção

Traduções deste artigo Traduções deste artigo
ID do artigo: 153441 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
BUG #: 14818 (DCR, 6.50)
Expandir tudo | Recolher tudo

Sumário

No SQL Server 6.5, SELECT INTO quebra dentro de uma transação. Mantenha tabelas criadas usando SELECT INTO para as propriedades de transação ACID (atomicidade, consistência, isolamento, durabilidade). Isso também significa que recursos do sistema, como páginas, extensões e bloqueios, são mantidos para a duração da instrução SELECT INTO. Com objetos de sistema maiores, isso leva à condição onde várias tarefas internas podem ser bloqueadas por outros usuários executando instruções SELECT INTO. Por exemplo, em servidores de alta atividade, muitos usuários executando a ferramenta SQL Enterprise Manager para monitorar processos do sistema podem bloquear uns dos outros, que leva a uma condição onde o aplicativo SEM parece parar de responder.

Mais Informações

Quando você atualiza para o SQL Server 6.5 Service Pack 1, SELECT INTO bloqueio características é um recurso configurável do sistema. Quebra automática de SELECT INTO com uma transação permanece o comportamento padrão. Para usuários que desejem não mantêm bloqueios de catálogo de sistema na atividade, um sinalizador de traço foi adicionado para permitir essas operações. Para aplicar o sinalizador de rastreamento, iniciar o servidor com o parâmetro de linha de comando-T5302 ou de em uma janela de consulta, use os seguintes comandos:
dbcc traceon (3604)
go
dbcc traceon (5302)
go
				

Quando o sinalizador de rastreamento 5302 é aplicado e um SELECT INTO falhar, a tabela ainda é criada. Observe que o comportamento de bloqueio que você selecionar é aplicado para todos os bancos de dados no servidor.



É importante compreender que, mesmo com rastreamento sinalizar 5302 ativado, se um SELECT INTO é executado no SQL Server 6.5 no contexto de uma transação explícita (isto é, BEGIN TRAN), as tabelas do sistema ainda serão bloqueadas até que a transação seja concluída. Isso ocorre porque, mesmo que o sinalizador de rastreamento permite que o servidor executar SELECT INTO em 2 operações, a criação da fase de tabela de destino está em vigor uma instrução DDL dentro de uma transação.

Qualquer instrução CREATE TABLE dentro de uma transação irá armazenar EX_PAGE bloqueios em sysobjects, sysindexes e syscolumns. SQL Server 6.0 não permitiu que SELECT INTO ser executado como parte de uma transação explícita definido pelo usuário. Tentativa de fazer isso resultaria em 226 de mensagem, "SELECT INTO comando não permitido em transação multi-statement".

Observação: Esse problema não se aplica ao SQL Server 7.0 e posterior.

Propriedades

ID do artigo: 153441 - Última revisão: terça-feira, 1 de outubro de 2013 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 6.5 Standard Edition
Palavras-chave: 
kbnosurvey kbarchive kbmt kbfix kbnetwork KB153441 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 153441

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com