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
SintomasSQL 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)'. 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) 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çãoA Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo. CausaEste 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 ContornarPorque 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çõesSQL 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.
Tradução automáticaIMPORTANTE: 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/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início