쓰는 법SqlServer 및 Oracle(현재는 시스템) 모두에서 작동하는 Net 애플리케이션입니다.Data.OracleClient는 더 이상 사용되지 않습니다.)
시스템을 참조하십시오.Data.Oracle Client 네임스페이스가 중단되었습니까?
(먼저 아직 당황하지 마세요, 시스템.Data.OracleClient는 아직 Microsoft에서 제거되지 않았지만 클라이언트 버전의 .net4에는 없습니다.)
이러한 사용은 시스템을 사용하여 가능합니다.그러나 Microsoft는 Oracle Client를 사용하지 않기로 결정했습니다. (Oracle Client는 Microsoft가 개발한 Oracle용 ADO.NET 제공업체이며 .NET Framework의 일부로 제공됩니다.)
ODP를 사용할 수 있습니다.그러나 SQL 서버 고객이 ODP를 설치해야 한다고 생각하십니까?Net? (고객 중에 Oracle 소프트웨어를 설치해야 하는 고객이 있습니까?)
DataDirect는 비용이 많이 들기 때문에 옵션이 아닙니다. 단일 서버를 메인프레임에 연결해야 하는 경우 경제적일 수 있습니다.그러나 모든 고객이 구매하기를 기대할 수 있는 옵션은 아닙니다.
저는 C# 프로그래머이고 생계를 유지하고 싶기 때문에 C# 양식을 Java로 옮기는 것은 좋은 선택이 아닙니다!
여러 RDBMS를 지원해야 하는 대부분의 ISV와 마찬가지로 SQL 서버와 동일한 Oracle의 작은 서브셋을 사용할 수 있는 솔루션만 필요합니다.그러므로 시스템.Data.Oracle Client는 우리에게 충분히 강력했습니다.
고객의 DBA가 소프트웨어 작성 방법을 알려주지 않도록 모든 데이터를 플랫 파일에 저장하는 것이 좋습니다.Oracle DBA는 더 나빠요!)
제 진짜 질문은 어떻게 하면 Oracle과 대화하는 .NET 소프트웨어를 SqlServer와 대화하는 .NET 소프트웨어로 자유롭게 설치할 수 있는지에 대한 것입니다.ODP.NET을 사용해야 하는 경우 Oracle 클라이언트 설치가 더욱 어려워지고 더 많은 문제가 발생합니다.
JAVA를 사용하고 있다면 JDBC 타입 4 드라이버를 사용할 수 있습니다.Microsoft는 SqlServer용으로 하나를 제공하고 Oracle은 Oracle용으로 하나를 제공합니다.하지만 오라클은 만들기를 원하는 것 같습니다.가능한 한 순 사용을 어렵게 하고 Microsoft는 Oracle 사용을 최대한 어렵게 하고 싶어 합니다.
지금까지 가장 좋은 옵션은 devArt의 dotConnect처럼 보입니다.
하지만 날씨에 의문이 들기 시작했습니다.NET은 조만간 오라클 지원을 필요로 하는 고객을 확보할 수 있기 때문에 ISV에 적합한 개발 시스템입니다.자바 세계에서 그들은 이 문제를 해결한 것처럼 보입니다.
Oracle이 곧 현명한 완전 관리형 ADO.NET 프로바이더를 출시할 것으로 보입니다. 설치가 쉬울 수도 있습니다. 여기 베타 – 2011년, 운영 – 2011년 말이라고 주장하는 내용을 참조하십시오.
편집: 이제 완전히 관리되는 ODP.NET을 운영 환경에서 사용할 수 있습니다.매우 작고(10MB 미만) 다른 파일에 종속되지 않습니다.다음 사이트에서 확인할 수 있습니다.
http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html
원답:
배포 시스템에서 필요한 Oracle 클라이언트 측 소프트웨어(ODP.NET 포함)를 항상 사용할 수 있도록 하는 한 가지 방법은 애플리케이션과 함께 포함하는 것입니다. XCOPY ODP.NET을 사용할 수 있게 됨에 따라 ODP.NET을 포함하는 것이 훨씬 쉬워졌습니다.다음 링크에서 다운로드할 수 있습니다.
http://www.oracle.com/technology/software/tech/windows/odpnet/index.html
XCOPY ODP.NET에서는 애플리케이션을 배포할 때 다음 작업만 수행하면 됩니다.
응용 프로그램을 대상 컴퓨터에 복사
두 개의 Oracle DLL을 대상 시스템(ODP.NET 및 Oracle 클라이언트 측(OCI) 소프트웨어 포함)에 복사하는 "install.bat"을 실행합니다.
"configure.bat"을 실행하여 "gacutil"을 수행하고 대상 시스템의 레지스트리를 업데이트합니다.
응용 프로그램에 연결 문자열 정보를 제공합니다.EZCONNECT 연결 문자열("hostname@servicename")을 사용하거나 사용자(또는 고객)가 SQLnet 연결 별칭이 이미 구성된 다른 Oracle 홈을 가리키도록 TNS_ADMIN 레지스트리 항목 또는 환경 변수를 설정하여 기존 sqlnet 구성을 공유할 수 있습니다.
바로 그거야!그것은 정말 그렇게 간단합니다.
위 링크에 있는 ODP.NET XCOPY를 잘 살펴보셔서 요즘 ODP.NET을 앱에 내장하는 것이 얼마나 쉬운지 직접 확인해보시기 바랍니다.
추가 참고 사항:
Microsoft Oracle Client와 ODP.NET 모두에서 ODP.NET을 애플리케이션에 포함하지 않도록 선택한 경우 배포 시스템에 OCI(Oracle Client side) 소프트웨어가 추가로 설치되어 있어야 합니다.두 경우의 유일한 차이점은 ODP.NET을 사용하는 경우 ODP.NET도 배포 시스템에 있어야 한다는 것입니다.고객 시스템에 설치되는 일반적인 Oracle에는 이미 ODP.NET이 포함되어 있습니다.
이제 대상 시스템에 ODP.NET이 이미 설치되어 있으면 다른 작업을 수행할 필요가 없습니다.애플리케이션을 배포하기만 하면 됩니다.표준 설치 관리자를 사용하여 ODP.NET을 설치해야 하는 경우 위에 제공된 링크에서 ODP.NET을 다운로드할 수도 있습니다.표준 ODP.NET 설치는 몇 분밖에 걸리지 않으며 모든 것을 구성합니다.
또한 EZ Connect 연결 문자열을 사용하여 네트워킹 구성을 손쉽게 구성하거나 TNS_ADMIN 레지스트리 항목 또는 환경 변수를 사용하여 고객이 이미 사용하고 있는 기존 연결 별칭을 활용할 수 있습니다.
이게 도움이 되길 바랍니다.
크리스찬 셰이
오라클
기능 요청 웹 사이트 http://apex.oracle.com/pls/apex/f?p=18357:46 에서 이 기능 및 기타 향후 기능에 대한 피드백을 제공하십시오.
devArt의 dotConnect와 같은 대체 Oracle 공급업체를 살펴보셨습니까?예를 들어, 이 드라이버는 100% 관리 코드이며, 많은 고급 Oracle 기능을 지원하고, Entity Framework를 지원합니다(언젠가 ODP.NET에서도 제공될 것입니다).
ODP.NET 11g 릴리스 전에는 얻을 수 없었던 다양한 기능(예: ASP.NET 공급자 모델 지원)이 있습니다.꽤 자유로운 라이선스와 합리적인 가격.제 기억이 맞다면 프로파일러도 함께 제공됩니다.
테스트에서 ODP.NET에 비해 우수한 성능을 발휘합니다.오픈 소스에 대해 말씀드리고 싶지만, 제 경험에 비추어 볼 때 Oracle을 데이터베이스로 구입한 후에는 데이터베이스 관련 툴링을 위한 현금을 마련할 수 있다는 사실을 이미 알고 계실 것입니다.
비난을 받는 것과 제거되는 것 사이에는 큰 차이가 있습니다.
SQL Server와 Oracle 모두에 공통적인 일부 기능만 사용하는 경우 ASP.Net 4.0으로 이동하여 현재 작업 방식을 계속 프로그래밍할 수 있습니다.
EntitySpaces와 같은 것을 사용하면 공급자에 구애받지 않을 수 있습니다.(DAL에서 Oracle Client를 사용합니다.)
Oracle의 클라이언트 소프트웨어가 골칫거리라는 Philippe의 의견에 전적으로 동의합니다.설치한 횟수를 잊어버리고 그 경험을 싫어했습니다.MySQL, SQL Server 또는 Access를 원하는 대로 입력합니다.
(사실, 액세스 코멘트를 취소합니다) :-)
기본적으로 팩토리를 사용하여 데이터베이스 요청 방법에서 완전히 추상화된 데이터 공급자에게 제공하는 "공급자 공장 패턴"을 사용하십시오. 여기에는 샘플 코드가 있는 블로그 게시물이 있습니다. dnrtv.com 의 디자인 패턴 설명 파트 1에서도 이러한 방법을 보여줍니다.
이것은 매우 멋진 것입니다. 기본적으로 여러분은 연결을 위한 방법을 제공하는 공장을 가지고 있습니다.
public IDbConnection GetConnection()
{
IDbConnection connection = _frameworkDBProviderFactory.CreateConnection();
connection.ConnectionString = _authenticationSettings.ConnectionString;
return connection;
}
IDbConnection 인터페이스(SQLServer, MySQL, Oracle 등)를 구현하는 모든 유형의 Database를 호출할 수 있는 인터페이스이지만 작동합니다.
실행 시 사용하는 DB를 추상화함으로써 애플리케이션이 전혀 알 수 없는 ODP.NET을 Oriical DB에 연결하고, mysql 커넥터와 동일하게 IDbConnection을 구현하고, 추상화된 연결에 대해 코드를 작성할 필요가 없습니다.
다른 사용자가 제안한 내용 외에도 공급자 패턴 및 Oracle의 ODP.NET 사용을 고려할 수 있습니다.
바인딩 변수 이름, 개체 따옴표 등 여러 가지 특정 항목이 있기 때문에 데이터베이스에 독립적으로 사용하는 것은 매우 어려운 작업입니다.응용프로그램과 실제 데이터베이스 사이에 레이어를 배치하는 NHibernate와 같은 라이브러리를 사용합니다.
두 데이터베이스에 모두 연결해야 하는 경우 배포 문제입니다.오라클에 연결하는 경우(시스템 사용).Data.Oracle Client 또는 Oracle.데이터 액세스.클라이언트) 컴퓨터에 Oracle 클라이언트 소프트웨어가 설치되어 있어야 합니다.프레임워크와 함께 배포된 데이터베이스 공급자가 오라클 데이터베이스에 연결하기에 충분하지 않습니다.
오라클에 연결할 경우 오라클에서 소프트웨어를 설치해야 합니다.사용하지 않는 것이 두렵다면 ODP를 설치하고 사용하는 것이 좋습니다.넷. 두 오라클 데이터베이스 공급자 사이에는 몇 가지 차이점이 있습니다.
Oracle은 보다 효율적인 구현을 위해 인스턴트 클라이언트 개념을 도입했습니다.이 클라이언트는 xcopy 배포를 사용하여 배포할 수 있습니다.sine oracle 11 인스턴트 클라이언트는 ODP와 함께 번들될 수 있습니다.그물.
ODP.Net의 설치는 Christian Shay의 게시물에 설명되어 있습니다.
오라클.DataAccess 어셈블리가 die 글로벌 어셈블리 캐시에 있으면 안 됩니다.그것을 당신의 bin 디렉토리에 넣으세요.Oracle에서 사용하는 인스턴트 클라이언트입니다.데이터 액세스가 클라이언트 컴퓨터의 다른 디렉터리에 있으면 안 됩니다.그것을 당신의 bin 디렉토리에 넣으세요.설명서에서는 인스턴트 클라이언트를 찾도록 응용 프로그램을 구성하는 방법에 대해 설명합니다.
둘 다 ODBC를 사용할 수 있습니까?
사람들은 지금 ADO.NET Entity Framework를 사용해야 하지 않습니까?https://stackoverflow.com/questions/82644/can-you-use-microsoft-entity-framework-with-oracle 을 참조하십시오.
ODP.Net 개체를 호출하지 않는 한 SQL 서버에만 액세스하는 경우 ODP를 설치할 필요가 없습니다.
ODBC는 여전히 SQL Server와 Oracle을 어느 정도 투명하게 사용할 수 있다고 생각하므로 ODBC 공급자와 함께 ADO.Net을 사용하는 방법을 살펴보겠습니다.SQLClient 또는 OracleClient와 같은 모든 성능이나 기능을 제공하지는 않지만 Oracle 또는 SQL Server의 경우 거의 동일한 코드에 가까울 것입니다.
SubSonic 3.0을 사용하는 것을 고려해 보십시오! SQL Server, MySQL 및 SQLite 기반 애플리케이션을 실행하도록 하고 사용자는 런타임에 이 세 가지를 전환할 수 있습니다!
제 경험으로는 ODP.NET 데이터 공급자 DLL을 단순히 배포할 수 없습니다.Oracle에서는 기본 구성 이상의 작업을 수행하려면 홈 설치가 필요합니다(예: LDAP 이름 확인을 사용하여 특별한 홈 경로에 LDAP. 또는 파일이 필요함).
그러나 ODP.NET은 ADO.NET 2.0 표준을 구현하는 데 문제가 없습니다(DbProviderFactory 등).그리고 회사에서 한동안 특정 클래스를 필요로 하지 않고 기본 클래스(DbConnection, DbCommand 등)에 맞게 프로그래밍했습니다.
이 데이터 액세스를 작동시키기 위한 제 제안은 Entlib의 지침을 사용/따르거나 NHibernate를 사용하는 것입니다.
ODP.NET을 설치하거나 고객/클라이언트에게 전달하는 과정에서 로지스틱스 또는 IT 문제가 발생한 경우 이를 위한 솔루션에 대해 귀사의 IT 담당자와 오라클에 문의하는 것이 좋습니다.
고객은 해당 시스템에 odp.net 및 Oracle 클라이언트를 설치해야 합니다.배포하면 안 됩니다.응용프로그램은 GAC에서 필요한 Oracle dll을 찾을 수 있습니다.
언급URL : https://stackoverflow.com/questions/1193066/how-to-write-a-net-application-that-works-with-both-sqlserver-and-oracle-now-t
'programing' 카테고리의 다른 글
전체 폴더를 리포지토리에 재귀적으로 추가 (0) | 2023.06.19 |
---|---|
Spring @Scheduler 병렬 실행 (0) | 2023.06.19 |
ggplot2에서 추가 범례 제거 (0) | 2023.06.19 |
Node.js를 사용하여 현재 스크립트의 경로를 가져오려면 어떻게 해야 합니까? (0) | 2023.06.19 |
파이썬에서 no-op을 수행하는 표준 방법은 무엇입니까? (0) | 2023.06.19 |