ID do artigo: 815594 - Última revisão: segunda-feira, 22 de setembro de 2003 - Revisão: 3.2

Erro: A declaração com falha é gerada durante uma instrução INSERT de BULK

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

Sintomas

SQL Server pode causar a seguinte declaração de varejo com falha durante um processo que envolve freqüentes, verificação cíclicas instruções do BULK INSERT seguidas por instruções DELETE. Para gerar a declaração, a atividade BULK INSERT deve estar operando no modo nonlogged:
	2003-02-18 20:59:45.83 spid54    SQL Server Assertion: File: <access.c>, line=3721 
	Failed Assertion = '(logMode != nonlogged) || (dbt->dbt_dbid == TEMPDBID)'.
Observação para operar no modo de nonlogged, use a opção TABLOCK.

A call stack similar to the following is also generated in the SQL Server error log:
* -------------------------------------------------------------------------------
* Short Stack Dump
* 0087A90E Module(sqlservr+0047A90E) (CStackDump::GetContextAndDump+0000002E)
* 0087C41F Module(sqlservr+0047C41F) (stackTrace+00000223)
* 00931097 Module(sqlservr+00531097) (utassert_fail+000002E3)
* 008075E4 Module(sqlservr+004075E4) (ChangeGhostPageState+000000D5)
* 00808855 Module(sqlservr+00408855) (DataSplitMgr::SplitPage+000000F4)
* 00572C15 Module(sqlservr+00172C15) (indexsplit+00000068)
* 00572AE7 Module(sqlservr+00172AE7) (SplitIndexNode+0000003D)
* 00406CEC Module(sqlservr+00006CEC) (srchindex+000002C1)
* 004372AF Module(sqlservr+000372AF) (InsertRowIntoNCIndex+0000018A)
* 0080121A Module(sqlservr+0040121A) (RowsetSS::InsertRow+000000D1)
* 0040E01C Module(sqlservr+0000E01C) (CValRow::SetDataX+00000035)
* 0040AE83 Module(sqlservr+0000AE83) (SetDataWithPop+0000001C)
* 0041C5BE Module(sqlservr+0001C5BE) (CEs::GeneralEval4+00000075)
* 00486561 Module(sqlservr+00086561) (CQScanUpdate::GetRow+000001DA)
* 006F9B06 Module(sqlservr+002F9B06) (CQScanSequence::Open+000000DA)
* 004214C4 Module(sqlservr+000214C4) (CQueryScan::Startup+0000010D)
* 0041D505 Module(sqlservr+0001D505) (CStmtQuery::ErsqExecuteQuery+0000026B)
* 0041E09C Module(sqlservr+0001E09C) (CStmtDML::XretExecuteNormal+000002AE)
* 0041DECA Module(sqlservr+0001DECA) (CStmtDML::XretExecute+0000001C)
* 0041B442 Module(sqlservr+0001B442) (CMsqlExecContext::ExecuteStmts+000003B9)
* 0041AA88 Module(sqlservr+0001AA88) (CMsqlExecContext::Execute+000001B6)
* 0041B9B6 Module(sqlservr+0001B9B6) (CSQLSource::Execute+00000357)
* 0047F78C Module(sqlservr+0007F78C) (CSQLSource::SeExecute+00000051)
* 0047F6DC Module(sqlservr+0007F6DC) (ExecSql+000000EA)
* 0047F590 Module(sqlservr+0007F590) (CBcpImport::ExecInsertStmt+00000447)
* 0047D869 Module(sqlservr+0007D869) (BcpImportMain+00000196)
* 0047D714 Module(sqlservr+0007D714) (CStmtBulkIns::XretExecute+0000005F)
* 0041B442 Module(sqlservr+0001B442) (CMsqlExecContext::ExecuteStmts+000003B9)
* 0041AA88 Module(sqlservr+0001AA88) (CMsqlExecContext::Execute+000001B6)
* 0041B9B6 Module(sqlservr+0001B9B6) (CSQLSource::Execute+00000357)
* 0048A63B Module(sqlservr+0008A63B) (language_exec+000003E1)
* 0042708C Module(sqlservr+0002708C) (process_commands+0000010E)
* 41075002 Module(UMS+00005002) (ProcessWorkRequests+00000272)
* 41074698 Module(UMS+00004698) (ThreadStartRoutine+00000098)
* 7800A27B Module(MSVCRT+0000A27B) (beginthread+000000CE)
* 77E8758A Module(KERNEL32+0000758A) (SetFilePointer+0000018A)
Additionally, after this type of process, if you then use DELETE operations on the BULK INSERT destination table, the DBCC CHECKDB and DBCC CHECKTABLE Transact-SQL references may report the following errors:
Servidor: Mensagem 8952, nível 16, estado 1, linha 1
Erro de tabela: banco de dados 'BulkTest' índice 'FilterKeys.IX_FilterKeys_FileID' (identificação 2057058364) (índice ID 2). Chave extra ou é inválido para as chaves:
Servidor: Mensagem 8956, nível 16, estado 1, linha 1
Índice de linha (3: 12: 59) com valores (FileID = '{B08ED36E-EADF-47DF-B426-A793C683BB4A}') aponta para a linha de dados identificada por (RID = (3:46405:14)).

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Causa

Este erro ocorre quando uma operação de BULK INSERT dispara uma página dividir em um nó de índice que resulta na página de índice recém-criado que contém "ghost registros". O processo que faz com que a página de espaço livre em página (PFS) controlar da nova página a ser marcado como contendo registros fantasmas não deve ocorrer durante uma operação nonlogged.

Como Contornar

Porque esse problema ocorre apenas em uma pilha (ou um SQL Server tabela que não possui nenhum índice em cluster), colocar um índice de cluster em BULK INSERT tabela de destino para solucionar esse problema.

Mais Informações

SQL Server usa registros fantasmas como uma otimização de simultaneidade para as operações DELETE. Quando uma linha é excluída (ou movida) de uma página de folha de índice, o espaço não será lançado imediatamente para o SQL Server. Em vez disso, ele é marcado como "fantasma". Um processo de sistema do SQL Server (fantasma registro limpeza) funciona em segundo plano para remover esses registros de forma assíncrona.

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
Palavras-chave: 
kbmt kbprb KB815594 KbMtpt
Tradução automáticaTraduçã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: 815594  (http://support.microsoft.com/kb/815594/en-us/ )