Freigeben über


Direkte Ausführung

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Die direkte Ausführung ist die grundlegendste Art und Weise, um eine Anweisung auszuführen. Eine Anwendung erstellt eine Zeichenfolge mit einer Transact-SQL-Anweisung und sendet sie zur Ausführung mithilfe der SQLExecDirect-Funktion . Wenn die Anweisung den Server erreicht, kompiliert SQL Server ihn in einen Ausführungsplan und führt dann sofort den Ausführungsplan aus.

Die direkte Ausführung wird im Allgemeinen von Anwendungen verwendet, die Anweisungen zur Laufzeit erstellen und ausführen. Es ist zugleich die effektivste Methode, Anweisungen, die nur einmal ausgeführt werden, auszuführen. Bei vielen Datenbanken muss jedoch die SQL-Anweisung bei jeder Ausführung analysiert und kompiliert werden, sodass ein zusätzlicher Aufwand entsteht, wenn die Anweisung mehrmals ausgeführt wird.

SQL Server verbessert die Leistung der direkten Ausführung häufig ausgeführter Anweisungen in Mehrbenutzerumgebungen erheblich und die Verwendung von SQLExecDirect mit Parametermarkierungen für häufig ausgeführte SQL-Anweisungen kann sich der Effizienz der vorbereiteten Ausführung nähern.

Wenn eine Verbindung mit einer Instanz von SQL Server hergestellt wird, verwendet der ODBC-Treiber von SQL Server Native Client sp_executesql, um die SQL-Anweisung oder den in SQLExecDirect angegebenen Batch zu übertragen. SQL Server verfügt über eine Logik, um schnell zu ermitteln, ob eine SQL-Anweisung oder ein Batch, die mit sp_executesql ausgeführt wird, mit der Anweisung oder dem Batch übereinstimmt, die einen Ausführungsplan generiert hat, der bereits im Arbeitsspeicher vorhanden ist. Wenn eine Übereinstimmung vorgenommen wird, verwendet SQL Server einfach den vorhandenen Plan wieder, anstatt einen neuen Plan zu kompilieren. Dies bedeutet, dass häufig ausgeführte SQL-Anweisungen, die mit SQLExecDirect in einem System mit vielen Benutzern ausgeführt werden, von vielen der Vorteile der Planwiederverwendung profitieren, die nur für gespeicherte Prozeduren in früheren Versionen von SQL Server verfügbar waren.

Die Vorteile der erneuten Nutzung von Ausführungsplänen können jedoch nur umgesetzt werden, wenn mehrere Benutzer die gleiche SQL-Anweisungen oder den gleichen Batch ausführen. Befolgen Sie diese Codierungskonventionen, um die Wahrscheinlichkeit zu erhöhen, dass die SQL-Anweisungen, die von unterschiedlichen Clients ausgeführt werden, sich soweit ähneln, dass die Ausführungspläne wiederverwendet werden können:

  • Schließen Sie keine Datenkonstanten in die SQL-Anweisungen ein, verwenden Sie stattdessen an Programmvariablen gebundene Parametermarkierungen. Weitere Informationen finden Sie unter Using Statement Parameters.

  • Verwenden Sie vollqualifizierte Objektnamen. Ausführungspläne werden nicht wiederverwendet, wenn Objektnamen nicht qualifiziert sind.

  • Sorgen Sie dafür, dass Anwendungsverbindungen sofern möglich einen gemeinsamen Satz an Verbindungs- und Anweisungsoptionen verwenden. Ausführungspläne, die für eine Verbindung mit einem Optionssatz (z. B. ANSI_NULLS) generiert werden, werden nicht für Verbindungen mit einem anderen Optionssatz wiederverwendet. Der ODBC-Treiber für SQL Server Native Client und der OLE DB-Anbieter des SQL Server Native Client verfügen beide über die gleichen Standardeinstellungen für diese Optionen.

Wenn alle mit SQLExecDirect ausgeführten Anweisungen mit diesen Konventionen codiert werden, kann SQL Server Ausführungspläne wiederverwenden, wenn die Möglichkeit besteht.

Weitere Informationen

Ausführen von ODBC-Anweisungen