Share via


Direkte Ausführung

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Die direkte Ausführung ist die grundlegendste Art und Weise, um eine Anweisung auszuführen. Eine Anwendung erstellt eine Zeichenfolge, die eine Transact-SQL-Anweisung enthält, und übermittelt sie zur Ausführung mithilfe der FUNKTION SQLExecDirect . Wenn die Anweisung den Server erreicht, kompiliert SQL Server sie 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 Umgebungen mit mehreren Benutzern erheblich, und die Verwendung von SQLExecDirect mit Parametermarkern für häufig ausgeführte SQL-Anweisungen kann die Effizienz der vorbereiteten Ausführung erreichen.

Wenn eine Verbindung mit einer Instanz von SQL Server hergestellt wird, verwendet der SQL Server Native Client ODBC-Treiber sp_executesql, um die in SQLExecDirect angegebene SQL-Anweisung oder den angegebenen Batch zu übertragen. SQL Server verfügt über Logik, um schnell zu ermitteln, ob eine SQL-Anweisung oder ein Batch, die mit sp_executesql ausgeführt wird, mit der Anweisung oder der Batch übereinstimmt, die einen Ausführungsplan generiert haben, der bereits im Arbeitsspeicher vorhanden ist. Wenn eine Übereinstimmung hergestellt wird, verwendet SQL Server einfach den vorhandenen Plan, 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 Verwenden von Anweisungsparametern.

  • 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 SQL Server Native Client ODBC-Treiber und der SQL Server Native Client OLE DB-Anbieter verfügen beide über die gleichen Standardeinstellungen für diese Optionen.

Wenn alle mit SQLExecDirect ausgeführten Anweisungen mithilfe dieser Konventionen codiert werden, können SQL Server Ausführungspläne wiederverwenden, wenn sich die Gelegenheit ergibt.

Weitere Informationen

Ausführen von Anweisungen (ODBC)