Parallele Ausführung in ADO.NETSide-by-Side Execution in ADO.NET

Die parallele Ausführung in der .NET Framework ist die Möglichkeit, eine Anwendung auf einem Computer auszuführen, auf dem mehrere Versionen des .NET Framework installiert sind, wobei exklusiv die Version verwendet wird, für die die Anwendung kompiliert wurde.Side-by-side execution in the .NET Framework is the ability to execute an application on a computer that has multiple versions of the .NET Framework installed, exclusively using the version for which the application was compiled. Ausführliche Informationen zum Konfigurieren der parallelen Ausführung finden Sie unter parallele Ausführung.For detailed information about configuring side-by-side execution, see Side-by-Side Execution.

Eine Anwendung, die mit einer Version des .NET Framework kompiliert wurde, kann in einer anderen Version der .NET Framework ausgeführt werden.An application compiled by using one version of the .NET Framework can run on a different version of the .NET Framework. Es wird jedoch empfohlen, eine Version der Anwendung für jede installierte Version des .NET Framework zu kompilieren und separat auszuführen.However, we recommend that you compile a version of the application for each installed version of the .NET Framework, and run them separately. In beiden Szenarien sollten Sie die Änderungen in ADO.net zwischen Releases beachten, die sich auf die Vorwärtskompatibilität oder die Abwärtskompatibilität Ihrer Anwendung auswirken können.In either scenario, you should be aware of changes in ADO.NET between releases that can affect the forward compatibility or backward compatibility of your application.

Aufwärts- und AbwärtskompatibilitätForward Compatibility and Backward Compatibility

Vorwärtskompatibilität bedeutet, dass eine Anwendung mit einer früheren Version des .NET Framework kompiliert werden kann, jedoch in einer späteren Version des .NET Framework weiterhin erfolgreich ausgeführt werden kann.Forward compatibility means that an application can be compiled with an earlier version of the .NET Framework, but will still run successfully on a later version of the .NET Framework. ADO.NET-Code, der für die .NET Framework Version 1,1 geschrieben wurde, ist vorwärts kompatibel mit neueren Versionen.ADO.NET code written for the .NET Framework version 1.1 is forward compatible with later versions.

Abwärtskompatibilität bedeutet, dass eine Anwendung für eine neuere Version des .NET Framework kompiliert wird, aber weiterhin in früheren Versionen der .NET Framework ausgeführt wird, ohne dass die Funktionalität verloren geht.Backward compatibility means that an application is compiled for a newer version of the .NET Framework, but continues to run on earlier versions of the .NET Framework without any loss of functionality. Dies ist natürlich nicht der Fall bei Features, die in einer neuen Version der .NET Framework eingeführt werden.Of course, this will not be the case for features introduced in a new version of the .NET Framework.

Der .NET Framework-Datenanbieter für ODBCThe .NET Framework Data Provider for ODBC

Ab Version 1,1 ist der .NET Framework Datenanbieter für ODBC (System.Data.Odbc) als Teil des .NET Framework enthalten.Starting with version 1.1, the .NET Framework Data Provider for ODBC (System.Data.Odbc) is included as a part of the .NET Framework. Der ODBC-Datenanbieter steht .NET Framework Entwicklern der Version 1,0 als Webdownload aus dem Developer Center für Datenzugriff und-Speicherungzur Verfügung.The ODBC data provider is available to .NET Framework version 1.0 developers as a Web download from the Data Access and Storage Developer Center. Der Namespace für den heruntergeladenen .NET Framework Datenanbieter für ODBC lautet Microsoft. Data. ODBC.The namespace for the downloaded .NET Framework Data Provider for ODBC is Microsoft.Data.Odbc.

Wenn Sie über eine Anwendung verfügen, die für die .NET Framework Version 1,0 entwickelt wurde, die den ODBC-Datenanbieter verwendet, um eine Verbindung mit der Datenquelle herzustellen, und Sie diese Anwendung auf der .NET Framework Version 1,1 oder höher ausführen möchten, müssen Sie den Namespace für das ODBC-DAT aktualisieren. ein Anbieter für System. Data. ODBC.If you have an application developed for the .NET Framework version 1.0 that uses the ODBC data provider to connect to your data source, and you want to run that application on the .NET Framework version 1.1 or a later version, you must update the namespace for the ODBC data provider to System.Data.Odbc. Sie müssen diese dann für die neuere Version des .NET Framework neu kompilieren.You then must recompile it for the newer version of the .NET Framework.

Wenn Sie über eine Anwendung verfügen, die für die .NET Framework Version 2,0 oder höher entwickelt wurde, die den ODBC-Datenanbieter verwendet, um eine Verbindung mit Ihrer Datenquelle herzustellen, und Sie diese Anwendung auf der .NET Framework Version 1,0 ausführen möchten, müssen Sie den ODBC-Datenanbieter herunterladen und installieren. auf dem .NET Framework-System, Version 1,0.If you have an application developed for the .NET Framework version 2.0 or later that uses the ODBC data provider to connect to your data source, and you want to run that application on the .NET Framework version 1.0, you must download the ODBC data provider and install it on the .NET Framework version 1.0 system. Anschließend müssen Sie den Namespace für den ODBC-Datenanbieter in Microsoft. Data. ODBCändern und die Anwendung für den .NET Framework, Version 1,0, neu kompilieren.You then must change the namespace for the ODBC data provider to Microsoft.Data.Odbc, and recompile the application for the .NET Framework version 1.0.

Der .NET Framework-Datenanbieter für OracleThe .NET Framework Data Provider for Oracle

Ab Version 1,1 ist die .NET Framework Datenanbieter für Oracle (System.Data.OracleClient) als Teil des .NET Framework enthalten.Starting with version 1.1, the .NET Framework Data Provider for Oracle (System.Data.OracleClient) is included as a part of the .NET Framework. Der-Datenanbieter ist für die .NET Framework von Entwicklern der Version 1,0 als Webdownload aus dem Developer Center für Datenzugriff und-Speicherungverfügbar.The data provider is available to .NET Framework version 1.0 developers as a Web download from the Data Access and Storage Developer Center.

Wenn Sie über eine Anwendung verfügen, die für die .NET Framework Version 2,0 oder höher entwickelt wurde, die den Datenanbieter verwendet, um eine Verbindung mit der Datenquelle herzustellen, und Sie diese Anwendung auf der .NET Framework-Version 1,0 ausführen möchten, müssen Sie den Datenanbieter herunterladen und auf der Datei ". ne" installieren. T Framework, Version 1,0, System.If you have an application developed for the .NET Framework version 2.0 or later that uses the data provider to connect to your data source, and you want to run that application on the .NET Framework version 1.0, you must download the data provider and install it on the .NET Framework version 1.0 system.

CodezugriffssicherheitCode Access Security

Die .NET Framework-Datenanbieter in .NET Framework Version 1,0 (System.Data.SqlClient, System.Data.OleDb) müssen mit der FullTrust-Berechtigung ausgeführt werden.The .NET Framework data providers in the .NET Framework version 1.0 (System.Data.SqlClient, System.Data.OleDb) are required to run with FullTrust permission. Bei jedem Versuch, die .NET Framework k-Datenanbieter aus der .NET Framework Version 1,0 in einer Zone mit der Berechtigung "weniger als FullTrust" zu verwenden, wird eine SecurityExceptionausgelöst.Any attempt to use the .NET Framework k data providers from the .NET Framework version 1.0 in a zone with less than FullTrust permission causes a SecurityException.

Ab der .NET Framework Version 2,0 können alle .NET Framework Datenanbieter jedoch in teilweise vertrauenswürdigen Zonen verwendet werden.However, starting with the .NET Framework version 2.0, all of the .NET Framework data providers can be used in partially trusted zones. Außerdem wurde ein neues Sicherheits Feature zu den .NET Framework-Datenanbietern in der .NET Framework-Version 1,1 hinzugefügt.In addition, a new security feature was added to the .NET Framework data providers in the .NET Framework version 1.1. Mithilfe dieser Funktion können Sie die Verbindungszeichenfolgen einschränken, die in einer bestimmten Sicherheitszone verwendet werden dürfen.This feature enables you to restrict what connection strings can be used in a particular security zone. Es kann auch die Verwendung leerer Kennwörter für eine bestimmte Sicherheitszone deaktiviert werden.You can also disable the use of blank passwords for a particular security zone. Weitere Informationen finden Sie unter Code Access Security and ADO.NET.For more information, see Code Access Security and ADO.NET.

Da jede Installation des .NET Framework über eine separate Security. config-Datei verfügt, gibt es keine Kompatibilitätsprobleme mit Sicherheitseinstellungen.Because each installation of the .NET Framework has a separate Security.config file, there are no compatibility issues with security settings. Wenn Ihre Anwendung jedoch von den zusätzlichen Sicherheitsfunktionen von ADO.net abhängig ist, die in der .NET Framework Version 1,1 und höher enthalten sind, können Sie Sie nicht an ein System der Version 1,0 verteilen.However, if your application depends on the additional security capabilities of ADO.NET included in the .NET Framework version 1.1 and later, you will not be able to distribute it to a version 1.0 system.

"SqlCommand"-AusführungSqlCommand Execution

Beginnend mit der .NET Framework Version 1,1 wurde die Methode ExecuteReader , mit der Befehle in der Datenquelle ausgeführt werden, geändert.Starting with the .NET Framework version 1.1, the way that ExecuteReader executes commands at the data source was changed.

In der .NET Framework Version 1,0 hat ExecuteReader alle Befehle im Kontext der gespeicherten Prozedur sp_executesql ausgeführt.In the .NET Framework version 1.0, ExecuteReader executed all commands in the context of the sp_executesql stored procedure. Dadurch gelten Befehle, die den Zustand der Verbindung betreffen (z. B. SET NOCOUNT ON), nur für die Ausführung des aktuellen Befehls.As a result, commands that affect the state of the connection (for example, SET NOCOUNT ON), only apply to the execution of the current command. Der Zustand der Verbindung wird bei offener Verbindung für keinen der nachfolgenden ausgeführten Befehle verändert.The state of the connection is not modified for any subsequent commands executed while the connection is open.

In der .NET Framework Version 1,1 und ExecuteReader höher führt nur einen Befehl im Kontext der gespeicherten Prozedur sp_executesql aus, wenn der Befehl Parameter enthält, was einen Leistungsvorteil bietet.In the .NET Framework version 1.1 and later, ExecuteReader only executes a command in the context of the sp_executesql stored procedure if the command contains parameters, which provides a performance benefit. Dadurch verändern Befehle, die den Zustand der Verbindung betreffen und die zu einem Befehl ohne Parameter gehören, den Zustand der Verbindung für alle nachfolgenden, bei offener Verbindung ausgeführten Befehle.As a result, if a command affecting the state of the connection is included in a non-parameterized command, it modifies the state of the connection for all subsequent commands executed while the connection is open.

Betrachten Sie den folgenden Batch von Befehlen, die in einem Aufruf an ExecuteReader ausgeführt werden.Consider the following batch of commands executed in a call to ExecuteReader.

SET NOCOUNT ON;  
SELECT * FROM dbo.Customers;  

In der .NET Framework Version 1,1 und höher verbleibt NOCOUNT für alle nachfolgenden Befehle, die ausgeführt werden, während die Verbindung geöffnet ist.In the .NET Framework version 1.1 and later, NOCOUNT will remain ON for any subsequent commands executed while the connection is open. In der .NET Framework Version 1,0 ist NOCOUNT nur für die aktuelle Befehlsausführung auf on.In the .NET Framework version 1.0, NOCOUNT is only ON for the current command execution.

Diese Änderung kann sich auf die vorwärts-und Abwärtskompatibilität Ihrer Anwendung auswirken, wenn Sie vom Verhalten von ExecuteReader für eine der beiden Versionen des .NET Framework abhängig sind.This change can affect both the forward and backward compatibility of your application if you depend on the behavior of ExecuteReader for either version of the .NET Framework.

Bei Anwendungen, die sowohl in früheren als auch höheren Versionen der .NET Framework ausgeführt werden, können Sie Ihren Code schreiben, um sicherzustellen, dass das Verhalten unabhängig von der Version, auf der Sie ausgeführt werden, identisch ist.For applications that run on both earlier and later versions of the .NET Framework, you can write your code to make sure that the behavior is the same regardless of the version you are running on. Um sicherzustellen, dass ein Befehl den Zustand der Verbindung für alle nachfolgenden Befehle verändert, wird empfohlen, den Befehl mit ExecuteNonQuery auszuführen.If you want to make sure that a command modifies the state of the connection for all subsequent commands, we recommend that you execute your command using ExecuteNonQuery. Wenn Sie sicherstellen möchten, dass ein Befehl die Verbindung für alle nachfolgenden Befehle nicht verändert, wird empfohlen, in den Befehl die Befehle zu integrieren, mit denen der Zustand der Verbindung zurückgesetzt wird.If you want to make sure that a command does not modify the connection for all subsequent commands, we recommend that you include the commands to reset the state of the connection in your command. Beispiel:For example:

SET NOCOUNT ON;  
SELECT * FROM dbo.Customers;  
SET NOCOUNT OFF;  

Siehe auchSee also