Verringert Leistung beim Ausführen einer SELECT... IN der Abfrage nach der Aktualisierung auf SQL Server 2012 und höher

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 3144525
Problembeschreibung
Nach der Aktualisierung von Microsoft SQL Server 2008 R2 oder eine frühere Version auf SQL Server 2012 oder höher bemerken Sie, dasswählen... IN Abfragen, die benutzerdefinierte Funktionen enthalten eine mehr Zeit beanspruchen als in früheren Versionen.
Ursache
Dieses Problem tritt auf, weil diese wählen... IN , die benutzerdefinierte Funktionen (UDFs) vollständig protokollierte Vorgänge und zusätzliche Zeit beanspruchen in SQL Server 2012 oder höher.

Hinweis Alle auswählen... IN Aussagen, die benutzerdefinierte Funktionen enthalten sind minimal protokollierte Operationen in früheren Versionen (SQL Server 2008 R2 und früheren Versionen). Diese Änderung wurde eingeführt, um sicherzustellen, dass der Datenintegrität, die benutzerdefinierte Funktion kann Lese-und Schreibvorgänge für das gleiche Objekt durchführen und kann zur Beschädigung der Daten, wenn minimaler Protokollierung aktiviert ist.
Abhilfe
Wählt die benutzerdefinierte Funktionen, die in der verwendet werden... IN Anweisung nicht Operationen Daten zugreifen, können Sie der SCHEMABINDING-Klausel für die benutzerdefinierten Funktionen der abgeleitete UserDataAccess -Eigenschaft für diese Funktionen auf 0 festgelegt wird. Nach dieser Änderung wird wählen... IN Anweisungen minimal protokolliert. Weitere Informationen finden Sie unter Das Beispiel im Blog ein Beispiel mit SCHEMABINDING..

Hinweis Wenn die Anweisung noch mindestens eine benutzerdefinierte Funktion, die diese Eigenschaft auf 1 festgelegt ist verweist, wird der Vorgang vollständig protokolliert.
Weitere Informationen
Der folgende Code veranschaulicht, den Unterschied im Verhalten zwischen SQL Server 2008 R2, SQL Server 2012 und 2014:

create database DB1gouse DB1gocreate function dbo.MyTrim (@name as varchar(100))returns varchar (100)asbeginreturn (RTRIM(ltrim(@name)))endgocreate table dbo.tab_prod (c1 int, c2 varchar(10))godeclare @a int set @a = 1while @a <= 100000begin insert into tab_prodvalues (@a , '  test ')set @a = @a + 1endbegin transelect  *,  dbo.mytrim(c2) as trimc2 into tab_test from tab_prod

Die folgende Tabelle vergleicht die CPU-Zeit für einen Vorgang auswählen in SQL Server 2008 R2 mit SQL Server 2014:

VersionAusführungszeit (CPU-Zeit)
SQL Server 2008 R2719 ms
SQL Server-20141360 ms

Die folgende Tabelle vergleicht die Verwendung des Transaktionsprotokolls für eine Operation auswählen in SQL Server 2008 R2 mit SQL Server 2014:

VersionName der DatenbankGröße (MB)Verwendete Speicherplatz (%)Status
SQL Server 2008 R2DEGRESSIV 10.742187551.578950
SQL Server-2014DEGRESSIV 132.1796938.44380
Wichtiger Hinweis Die Ergebnisse in diesen Tabellen sind nur ein Beispiel für die Änderung im Verhalten zwischen SQL Server 2008 R2 und SQL Server 2014 und genau auf die Lab-Umgebung, die für diesen Test verwendet wurde. Die tatsächliche Leistung Differenz in Ihrer Umgebung hängt von der Hardware, die SQL-Instanz ausgeführt wird.
Hinweis Dies ist ein Artikel, der im Schnellverfahren direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden als Reaktion auf neue Probleme wie besehen bereitgestellt. Da dieser Artikel im Schnellverfahren erstellt wurde, kann er Tippfehler enthalten und zu einem späteren Zeitpunkt ohne vorherige Ankündigung überarbeitet werden. Weitere zu berücksichtigende Informationen finden Sie in den Nutzungsbedingungen.

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 3144525 – Letzte Überarbeitung: 03/03/2016 22:43:00 – Revision: 1.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Web, Microsoft SQL Server 2008 R2 Workgroup

  • kbsurveynew kbtshoot kbexpertiseadvanced kbmt KB3144525 KbMtde
Feedback