FIX: Rallentamento delle prestazioni quando un trigger AFTER viene eseguito in una tabella partizionata in SQL Server 2008 R2 o nel 2012 SQL Server

Traduzione articoli Traduzione articoli
Identificativo articolo: 2606883 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Prendere in considerazione i seguenti scenari:
  • È possibile creare partizioni di una tabella in Microsoft SQL Server 2008 R2 o in Microsoft SQL Server 2012.
  • Si crea un DOPO AVER trigger per qualsiasi INSERISCI o ELIMINA operazione eseguita sulla tabella.
  • È possibile eseguire un INSERISCI o ELIMINA operazione sulla tabella.

In questo scenario, potrebbe verificarsi il rallentamento delle prestazioni. Numero di letture logiche, inoltre, potrebbe verificarsi se si esegue SQL Profiler.

Cause

Questo problema si verifica per i seguenti motivi:
  • Il motore di archiviazione gestisce internamente una catena singola versione per ogni istruzione.
  • L'esecuzione della query esegue la ricerca per le partizioni della catena di versione intero per trovare le righe che vengono inserite per una delle partizioni.

Risoluzione

Per risolvere il problema, applicare la seguente correzione rapida e quindi utilizzare il flag di traccia-T2470

Informazioni sull'aggiornamento cumulativo

SQL Server 2012 Innanzitutto, la correzione di questo problema è stata rilasciata nell'aggiornamento cumulativo 1 per SQL Server 2012. Per ulteriori informazioni su questo pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2679368 Pacchetto di aggiornamento cumulativo 1 per SQL Server 2012
Nota Poiché le versioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio delle correzioni per tutte le correzioni fornite con il precedente 2012 SQL Server. Si consiglia di considerare l'ipotesi di applicare la versione più recente contenente tale hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2692828 Il 2012 SQL Server versioni rilasciate dopo il rilascio di SQL Server 2012
È necessario applicare un aggiornamento rapido SQL Server 2012 a un'installazione di SQL Server 2012.

SQL Server 2008 R2 Service Pack 1

Informazioni sull'aggiornamento cumulativo

La correzione di questo problema è stata rilasciata prima 3 aggiornamento cumulativo per SQL Server 2008 R2 Service Pack 1. Per ulteriori informazioni su come ottenere il pacchetto di aggiornamento cumulativo, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2591748 Pacchetto di aggiornamento cumulativo 3 per SQL Server 2008 R2 Service Pack 1
Nota Poiché le versioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio delle correzioni per tutte le correzioni fornite con il precedente SQL Server 2008 R2. Si consiglia di considerare l'ipotesi di applicare la versione più recente contenente tale hotfix. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
2567616 Il SQL Server 2008 R2 versioni rilasciate dopo il rilascio di SQL Server 2008 R2 Service Pack 1

Informazioni sull'aggiornamento rapido

Un hotfix supportato è disponibile da Microsoft. Tuttavia, questo hotfix è destinato a correggere il problema descritto in questo articolo. Applicare questo hotfix solo ai sistemi che si verificano questo problema specifico.

Se l'aggiornamento rapido è disponibile per il download, è presente una sezione "Hotfix disponibile per il download" all'inizio di questo articolo della Knowledge Base. Se non viene visualizzato in questa sezione, è possibile inviare una richiesta al servizio clienti Microsoft e supporto tecnico per ottenere l'hotfix.

Nota Se si verificano ulteriori problemi o se è richiesta la risoluzione dei problemi, è necessario creare una richiesta di assistenza separata. I costi di supporto consueto verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico hotfix. Per un elenco completo dei numeri di telefono del servizio clienti Microsoft e supporto tecnico o per creare una richiesta di assistenza separata, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota Il modulo "Hotfix disponibile per il download" Visualizza le lingue per cui è disponibile l'aggiornamento rapido. Se non viene visualizzata la lingua, è perché un aggiornamento rapido non è disponibile per tale lingua.

Prerequisiti

Per applicare questo hotfix, è necessario disporre di Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) installato.

Richiesta di riavvio

Non è necessario riavviare il computer dopo aver applicato questo aggiornamento rapido.

Informazioni sulla sostituzione dell'hotfix

Questo hotfix non sostituisce un aggiornamento rapido rilasciato in precedenza.

Informazioni sui file

La versione globale di questo presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e ore dei file elencate nel tempo universale coordinato (UTC). Quando si visualizzano le informazioni del file, viene convertita in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare il Fuso orario scheda di Data e ora elemento nel Pannello di controllo.

Per tutte le versioni x86 di SQL Server 2008 R2 SP1
Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensioni fileDataOraPiattaforma
Sqlservr. exe2009.100.2776.043,053,92015-Set-201101: 47x86

Per tutte le versioni basate su x64 diSQL Server 2008 R2 SP1

Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensioni fileDataOraPiattaforma
Sqlservr. exe2009.100.2776.062,176,60815-Set-201100: 57x64

Per tutte le IA-64basati sulle versioni supportate diSQL Server 2008 R2 SP1

Riduci questa tabellaEspandi questa tabella
Nome del fileVersione del fileDimensioni fileDataOraPiattaforma
Sqlservr. exe2009.100.2776.0122,105,69615-Set-201100: 23IA-64


Workaround

Per aggirare il problema, modificare il trigger AFTER per un trigger INSTEAD OF INSERT o un trigger INSTEAD OF DELETE .

Ad esempio, è possibile eseguire le seguenti istruzioni per creare un trigger AFTER :
CREATE TRIGGER TR_Test ON Test FOR INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED END GO
In questo scenario, è possibile modificare il trigger AFTER per INSTEAD OF INSERT utilizzando le seguenti istruzioni:
CREATE TRIGGER TR_Test ON Test INSTEAD OF INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED INSERT INTO Test (Groupe) SELECT @groupe FROM INSERTED END

Status

Microsoft ha confermato che si tratta di un problema con i prodotti elencati nella sezione "Si applica a".

Proprietà

Identificativo articolo: 2606883 - Ultima modifica: lunedì 16 aprile 2012 - Revisione: 3.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2012 Developer
Chiavi: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbautohotfix kbmt KB2606883 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 2606883
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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