ADO.NET에서 Side-by-Side 실행Side-by-Side Execution in ADO.NET

.NET Framework의 side-by-side 실행은 응용 프로그램이 컴파일되는 버전을 사용 하 여 여러 버전의 .NET Framework가 설치 된 컴퓨터에서 응용 프로그램을 실행할 수 있는 기능입니다.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. Side-by-side 실행을 구성 하는 방법에 대 한 자세한 내용은 side-by-side 실행을 참조 하세요.For detailed information about configuring side-by-side execution, see Side-by-Side Execution.

한 버전의 .NET Framework을 사용 하 여 컴파일된 응용 프로그램은 다른 버전의 .NET Framework에서 실행할 수 있습니다.An application compiled by using one version of the .NET Framework can run on a different version of the .NET Framework. 그러나 설치 된 각 버전의 .NET Framework에 대 한 응용 프로그램 버전을 컴파일하여 개별적으로 실행 하는 것이 좋습니다.However, we recommend that you compile a version of the application for each installed version of the .NET Framework, and run them separately. 두 경우 모두 응용 프로그램의 이전 버전과의 호환성 또는 이전 버전과의 호환성에 영향을 줄 수 있는 릴리스 간 ADO.NET의 변경 내용을 알고 있어야 합니다.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.

다음 버전 및 이전 버전과의 호환성Forward Compatibility and Backward Compatibility

이후 버전과의 호환성은 응용 프로그램이 이전 버전의 .NET Framework로 컴파일될 수 있지만 이후 버전의 .NET Framework에서는 성공적으로 실행 됨을 의미 합니다.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. .NET Framework 버전 1.1 용으로 작성 된 ADO.NET 코드는 이후 버전과 호환 됩니다.ADO.NET code written for the .NET Framework version 1.1 is forward compatible with later versions.

이전 버전과의 호환성은 응용 프로그램이 최신 버전의 .NET Framework에 대해 컴파일되므로 기능 손실 없이 이전 버전의 .NET Framework에서 계속 실행 됨을 의미 합니다.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. 물론 새 버전의 .NET Framework에 도입 된 기능에 대 한 경우는 아닙니다.Of course, this will not be the case for features introduced in a new version of the .NET Framework.

.NET Framework Data Provider for ODBCThe .NET Framework Data Provider for ODBC

버전 1.1부터 ODBC의 .NET Framework Data Provider (System.Data.Odbc)는 .NET Framework 일부로 포함 됩니다.Starting with version 1.1, the .NET Framework Data Provider for ODBC (System.Data.Odbc) is included as a part of the .NET Framework.

ODBC 데이터 공급자를 사용 하 여 데이터 원본에 연결 하는 .NET Framework 버전 1.0 용 응용 프로그램을 개발 했 고 .NET Framework 버전 1.1 이상 버전에서 해당 응용 프로그램을 실행 하려는 경우 ODBC 데이터 공급자에 대 한 네임 스페이스를 system.xml로 업데이트해야 합니다.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. 그런 다음 최신 버전의 .NET Framework에 대해 다시 컴파일해야 합니다.You then must recompile it for the newer version of the .NET Framework.

ODBC 데이터 공급자를 사용 하 여 데이터 원본에 연결 하는 .NET Framework 버전 2.0 이상용 응용 프로그램을 개발한 경우 .NET Framework 버전 1.0에서 해당 응용 프로그램을 실행 하려면 ODBC 데이터 공급자를 다운로드 하 여 설치 해야 합니다. .NET Framework 버전 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. 그런 다음 ODBC 데이터 공급자에 대 한 네임 스페이스를 Microsoft. data. odbc로 변경 하 고 .NET Framework 버전 1.0에 대 한 응용 프로그램을 다시 컴파일해야 합니다.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.

.NET Framework Data Provider for OracleThe .NET Framework Data Provider for Oracle

버전 1.1부터 Oracle의 .NET Framework Data Provider (System.Data.OracleClient)는 .NET Framework 일부로 포함 됩니다.Starting with version 1.1, the .NET Framework Data Provider for Oracle (System.Data.OracleClient) is included as a part of the .NET Framework.

데이터 공급자를 사용 하 여 데이터 원본에 연결 하는 .NET Framework 버전 2.0 이상용 응용 프로그램을 개발 했 고 .NET Framework 버전 1.0에서 해당 응용 프로그램을 실행 하려는 경우 데이터 공급자를 다운로드 하 여에 설치 해야 합니다. T Framework 버전 1.0 시스템입니다.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.

코드 액세스 보안Code Access Security

.NET Framework 버전 1.0 (System.Data.SqlClient, System.Data.OleDb)의 .NET Framework 데이터 공급자는 FullTrust 권한으로 실행 해야 합니다.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. FullTrust 권한 보다 작은 영역에서 .NET Framework 버전 1.0의 .NET Framework k 데이터 공급자를 사용 하려고 하면 SecurityException발생 합니다.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.

그러나 .NET Framework 버전 2.0부터 시작 하 여 부분적으로 신뢰할 수 있는 영역에서 모든 .NET Framework 데이터 공급자를 사용할 수 있습니다.However, starting with the .NET Framework version 2.0, all of the .NET Framework data providers can be used in partially trusted zones. 또한 .NET Framework 버전 1.1의 .NET Framework 데이터 공급자에 새 보안 기능이 추가 되었습니다.In addition, a new security feature was added to the .NET Framework data providers in the .NET Framework version 1.1. 이 기능으로 특정 보안 영역에서 사용할 수 있는 연결 문자열을 제한할 수 있습니다.This feature enables you to restrict what connection strings can be used in a particular security zone. 뿐만 아니라 특정 보안 영역에 대해 빈 암호 사용을 비활성화할 수도 있습니다.You can also disable the use of blank passwords for a particular security zone. 자세한 내용은 Code Access Security and ADO.NET을 참조하세요.For more information, see Code Access Security and ADO.NET.

.NET Framework 설치 마다 별도의 보안 .config 파일이 있기 때문에 보안 설정에 호환성 문제가 없습니다.Because each installation of the .NET Framework has a separate Security.config file, there are no compatibility issues with security settings. 그러나 응용 프로그램이 .NET Framework 버전 1.1 이상에 포함 된 ADO.NET의 추가 보안 기능에 종속 되는 경우 버전 1.0 시스템에 배포할 수 없습니다.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 실행SqlCommand Execution

.NET Framework 버전 1.1부터 ExecuteReader 데이터 소스에서 명령을 실행 하는 방법이 변경 되었습니다.Starting with the .NET Framework version 1.1, the way that ExecuteReader executes commands at the data source was changed.

.NET Framework 버전 1.0에서는 sp_executesql 저장 프로시저 컨텍스트의 모든 명령이 ExecuteReader 실행 됩니다.In the .NET Framework version 1.0, ExecuteReader executed all commands in the context of the sp_executesql stored procedure. 따라서 연결 상태에 영향을 주는 SET NOCOUNT ON과 같은 명령은 현재 명령의 실행에만 적용됩니다.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. 연결 상태는 연결이 열려 있는 동안 실행되는 모든 후속 명령에 대해 수정되지 않습니다.The state of the connection is not modified for any subsequent commands executed while the connection is open.

.NET Framework 버전 1.1 이상에서는 명령에 매개 변수가 포함 되어 있는 경우에만 sp_executesql 저장 프로시저의 컨텍스트에서 명령을 실행 ExecuteReader 성능상의 이점을 제공 합니다.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. 따라서 연결 상태에 영향을 주는 명령이 매개 변수가 없는 명령에 포함된 경우 연결이 열려 있는 동안 실행되는 모든 후속 명령의 연결 상태가 수정됩니다.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.

ExecuteReader 호출에서 다음 배치 명령을 실행할 수 있습니다.Consider the following batch of commands executed in a call to ExecuteReader.

SET NOCOUNT ON;  
SELECT * FROM dbo.Customers;  

.NET Framework 버전 1.1 이상에서는 연결이 열려 있는 동안 실행 되는 모든 후속 명령에 대해 NOCOUNT가 ON으로 유지 됩니다.In the .NET Framework version 1.1 and later, NOCOUNT will remain ON for any subsequent commands executed while the connection is open. .NET Framework 버전 1.0에서 NOCOUNT는 현재 명령 실행에 대해서만 설정 됩니다.In the .NET Framework version 1.0, NOCOUNT is only ON for the current command execution.

이러한 변경 내용은 두 버전의 .NET Framework에 대 한 ExecuteReader 동작에 의존 하는 경우 응용 프로그램의 이후 버전과 이전 버전과의 호환성에 모두 영향을 줄 수 있습니다.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.

이전 및 이후 버전의 .NET Framework에서 실행 되는 응용 프로그램의 경우 실행 중인 버전과 관계 없이 동작이 동일한 지 확인 하기 위해 코드를 작성할 수 있습니다.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. 명령을 통해 모든 후속 명령에 대한 연결 상태가 수정되도록 하려면 ExecuteNonQuery를 사용하여 명령을 실행하는 것이 좋습니다.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. 명령을 통해 모든 후속 명령에 대한 연결이 수정되지 않도록 하려면 명령에 연결 상태를 다시 설정하는 명령을 포함하는 것이 좋습니다.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. 예를 들면 다음과 같습니다.:For example:

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

참조See also