Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Microsoft SQL Server çalıştıran bir bilgisayardan Oracle veritabanına bağlı bir sunucunun nasıl ayarlanacağı açıklanır ve Oracle veritabanına bağlı bir sunucu ayarlarken karşılaşabileceğiniz yaygın hatalar için temel sorun giderme adımları sağlanır.
Özgün ürün sürümü: Microsoft SQL Server 2005 Standard Sürümü, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Sürümü, Microsoft SQL Server 2005 Express Sürüm, Microsoft SQL Server 2005 Workgroup Edition
Özgün KB numarası: 280106
Özet
Bu makalede, Microsoft SQL Server çalıştıran bir bilgisayardan Oracle veritabanına bağlı bir sunucunun nasıl ayarlanacağı açıklanır ve Oracle'a bağlı bir sunucu ayarlarken karşılaşabileceğiniz yaygın hatalar için temel sorun giderme adımları sağlanır. Bu makaledeki bilgilerin çoğu, Oracle için Microsoft OLEDB Sağlayıcısı'nı (MSDAORA) kullanacak şekilde yapılandırılmış ortamlar için geçerlidir. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Bunun yerine Oracle'ın OLE DB sağlayıcısını kullanın.
Oracle'ın OLEDB sağlayıcısını kullanarak bağlı sunucuyu yapılandırma hakkında daha fazla bilgi için Oracle ve Bağlı Sunucularla çalışmaya başlama makalesini gözden geçirin.
Önemli
Oracle için Microsoft ODBC Sürücüsünün geçerli sürümü ODBC 2.5 belirtimiyle uyumluyken, Oracle için OLE DB Sağlayıcısı yerel bir Oracle 7 OCI API sağlayıcısıdır. Hem sürücü hem de sağlayıcı, Oracle veritabanlarına bağlanmak ve verileri almak için SQL*Net Client (veya Oracle 8x için Net8 istemcisi) ve Oracle Çağrı Arabirimi (OCI) kitaplığını ve diğer Oracle istemci bileşenlerini kullanır. Oracle istemci bileşenleri önemlidir ve hem sürücüyü hem de sağlayıcıyı kullanarak Oracle veritabanlarına başarıyla bağlanmak için doğru şekilde yapılandırılması gerekir.
Microsoft Veri Erişim Bileşenleri (MDAC) sürüm 2.5 ve sonraki sürümlerden, hem Microsoft ODBC Sürücüsü hem de OLE DB Sağlayıcısı aşağıdaki sınırlamalarla YALNIZCA Oracle 7 ve Oracle 8i'yi destekler:
CLOB, BLOB, BFILE, NCHAR, NCLOB ve NVARCHAR2 gibi Oracle 8.x'e özgü veri türleri desteklenmez.
Oracle 7.x ve 8.x sunucularında Unicode özelliği desteklenmez.
Birden çok Oracle istemci örneği veya birden çok Oracle evi, SYSTEM PATH değişkeninde Oracle giriş öğesinin ilk oluşumuna bağlı olduğundan desteklenmez.
Bir saklı yordamdan veya toplu iş SQL deyiminden birden çok sonuç kümesinin döndürülmesi ADO veya OLEDB kullanılarak desteklenmez.
İç içe dış birleşimler desteklenmez.
XML kalıcılığı desteklenmez.
8i'den büyük sürümler bu sürücülerin kullanılması desteklenmez.
Uyarı
Bu makalede bahsedilen üçüncü taraf ürünler, Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.
Oracle'a bağlı sunucu ayarlama adımları
Bağlı sunucunun ayarlandığı SQL Server çalıştıran bilgisayara Oracle istemci yazılımını yüklemeniz gerekir.
İstediğiniz sürücüyü SQL Server çalıştıran bilgisayara yükleyin. Microsoft yalnızca Oracle için Oracle için Microsoft OLE DB Sağlayıcısı ve Microsoft ODBC Sürücüsünü destekler. Oracle'a bağlanmak için üçüncü taraf sağlayıcı veya üçüncü taraf bir sürücü kullanıyorsanız, sağlayıcıyı veya sürücüsünü kullanarak karşılaşabileceğiniz sorunlar için ilgili satıcıya başvurmanız gerekir.
Oracle için Oracle için Microsoft OLE DB Sağlayıcısı ve Microsoft ODBC Sürücüsü kullanıyorsanız aşağıdakileri göz önünde bulundurun:
Hem OLE DB sağlayıcısı hem de Microsoft Veri Erişim Bileşenleri'ne (MDAC) dahil edilen ODBC sürücüsü SQL*Net 2.3.x veya sonraki bir sürüm gerektirir. Oracle 7.3.x istemci yazılımını veya sonraki bir sürümü istemci bilgisayara yüklemeniz gerekir. İstemci bilgisayar, SQL Server çalıştıran bilgisayardır.
SQL Server çalıştıran bilgisayarda MDAC 2.5 veya sonraki bir sürümün yüklü olduğundan emin olun. MDAC 2.1 veya önceki bir sürümle Oracle 8 kullanan veritabanlarına bağlanamazsınız. x veya sonraki bir sürüm.
MDAC 2.5 veya sonraki sürümlerin Oracle istemci yazılımıyla çalışmasını sağlamak için, kayıt defteri aşağıdaki tabloda gösterildiği gibi SQL Server çalıştıran istemci bilgisayarda değiştirilmelidir.
Oracle Client Microsoft Windows 2000 and later versions -------------------------------------------------------------------------- 7.x [HKEY_LOCAL_MACHINE\SOFTWARE Microsoft\MSDTC\MTxOCI] "OracleXaLib"="xa73.dll" "OracleSqlLib"="SQLLib18.dll" "OracleOciLib"="ociw32.dll" 8.0 [HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\MSDTC\MTxOCI] "OracleXaLib"="xa80.dll" "OracleSqlLib"="sqllib80.dll" "OracleOciLib"="oci.dll" 8.1 [HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\MSDTC\MTxOCI] "OracleXaLib"="oraclient8.dll" "OracleSqlLib"="orasql8.dll" "OracleOciLib"="oci.dll"
Oracle istemci yazılımını yükledikten sonra SQL Server çalıştıran bilgisayarı yeniden başlatın.
SQL Server çalıştıran bilgisayarda, aşağıdaki betiği kullanarak bağlı bir sunucu ayarlayın.
-- Adding linked server (from SQL Server Books Online): /* sp_addlinkedserver [@server =] 'server'[, [@srvproduct =] 'product_name'] [, [@provider =] 'provider_name'] [, [@datasrc =] 'data_source'] [, [@location =] 'location'] [, [@provstr =] 'provider_string'] [, [@catalog =] 'catalog'] */ EXEC sp_addlinkedserver 'Ora817Link', 'Oracle', 'MSDAORA', 'oracle817' -- Adding linked server login: /* sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname'[,[@useself =] 'useself'] [,[@locallogin =] 'locallogin'] [,[@rmtuser =] 'rmtuser'] [,[@rmtpassword =] 'rmtpassword'] */ EXEC sp_addlinkedsrvlogin 'Ora817Link', 'FALSE',NULL, 'scott', 'tiger' -- Help on the linked server: EXEC sp_linkedservers EXEC sp_helpserver select * from sysservers
Uyarı
Oracle için Microsoft ODBC Sürücüsü kullanıyorsanız parametresini
@datasrc
kullanarak bir DSN adı belirtebilirsiniz. DSN olmayan bir bağlantı için sağlayıcı dizesi @provstr parametresi aracılığıyla sağlanır. Oracle için Microsoft OLE DB Sağlayıcısı ile, @datasrc parametresi için TNSNames.Ora dosyasında yapılandırılan Oracle sunucu diğer adını kullanın. Daha fazla bilgi için SQL Server Books Online'daki "sp_addlinkedserver" konusuna bakın.
Yaygın hata iletileri ve bunların sorunlarını giderme
Önemli
Bu bölüm, yöntem veya görev, kayıt defterini nasıl değiştirebileceğinizi gösteren adımlar içerir. Ancak, kayıt defterini yanlış bir şekilde değiştirirseniz ciddi sorunlar ortaya çıkabilir. Bu nedenle, bu adımları dikkatli bir şekilde izlediğinizden emin olun. Daha fazla koruma için, değiştirmeden önce kayıt defterini yedekleyin. Ardından, bir sorun oluşursa kayıt defterini geri yükleyebilirsiniz. Kayıt defterini yedekleme ve geri yükleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın: 322756 Windows'da kayıt defterini yedekleme ve geri yükleme
Dağıtılmış sorguyu yürütürken karşılaştığınız tüm hatalarla ilgili genişletilmiş bilgileri almak için aşağıdaki iki yöntemden birini kullanabilirsiniz.
Yöntem 1
SQL Server Management Studio kullanarak SQL Server'a bağlanın ve izleme bayrağı 7300'i açmak için aşağıdaki kodu çalıştırın.
DBCC Traceon(7300)
Yöntem 2
SQL Profiler'da "Hatalar ve Uyarılar" olay kategorisinde bulunan "OLEDB Hataları" olayını yakalayın. Hata iletisi biçimi aşağıdaki gibidir:
Interface::Method onaltılık hata koduyla başarısız oldu.
MDAC Yazılım Geliştirme Seti'ne (SDK) dahil edilen Oledberr.h dosyasında onaltılık hata kodunu arayabilirsiniz.
Aşağıda, oluşabilecek yaygın hata iletilerinin listesi ve hata iletisinin nasıl giderildiğini gösteren bilgiler yer alır.
Uyarı
SQL Server 2005 veya sonraki sürümleri kullanıyorsanız, bu hata iletileri biraz farklı olabilir. Ancak, bu hata iletilerinin hata kimlikleri SQL Server'ın eski sürümlerindekilerle aynıdır. Bu nedenle, bunları hata kimlikleriyle tanımlayabilirsiniz. Performansla ilgili sorunlar için Sql Server Çevrimiçi Kitaplar'da Dağıtılmış Sorguları İyileştirme konusunu arayın.
İleti 1
Hata 7399: "%ls" bağlı sunucusu için OLE DB sağlayıcısı "%ls" bir hata bildirdi. %ls
Genişletilmiş OLEDB hata bilgilerini almak üzere OLEDB Hataları olayını yakalamak için izleme bayrağı 7300'u açın veya SQL Profiler'ı kullanın.
İleti 2a
"ORA-12154: TNS:hizmet adı çözümlenemedi"
İleti 2b
"Oracle(tm) istemcisi ve ağ bileşenleri bulunamadı. Bu bileşenler Oracle Corporation tarafından sağlanır ve Oracle Sürüm 7.3.3 (veya üzeri) istemci yazılımı yüklemesinin bir parçasıdır"
Oracle sunucusuna bağlantı sorunu olduğunda bu hatalar oluşur. Ek sorun giderme için aşağıdaki Oracle sunucusuna bağlantı sorunlarını gidermek için teknikler bölümünü gözden geçirin.
İleti 3
Hata 7302: "%ls" bağlı sunucusu için 'MSDAORA' OLE DB sağlayıcısı örneği oluşturulamıyor.
MSDAORA.dll dosyasının doğru kaydedildiğinden emin olun. (MSDAORA.dll dosyası, Oracle dosyası için Microsoft OLE DB sağlayıcısıdır.) Oracle için Microsoft OLE DB Sağlayıcısı kaydetmek için RegSvr32.exe kullanın.
Uyarı
Bir üçüncü taraf Oracle sağlayıcısı kullanıyorsanız ve Oracle sağlayıcınız SQL Server işleminin dışında çalışamıyorsa, sağlayıcı seçeneklerini değiştirerek bu sağlayıcının işlem içinde çalışmasını etkinleştirin. Sağlayıcı seçeneklerini değiştirmek için aşağıdaki yöntemlerden birini kullanın:
Yöntem 1 Aşağıdaki kayıt defteri anahtarını bulun. Ardından AllowInProcess (DWORD) girişinin değerini 1 olarak değiştirin. Bu kayıt defteri anahtarı, karşılık gelen sağlayıcı adı altında bulunur:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName
.Yöntem 2 SQL Server Management Studio (SSMS) kullanan sağlayıcılar için İşlemeye izin ver seçeneğini ayarlamak için bu adımları izleyin.
- SSMS'yi açın ve SQL Server örneğine bağlanın.
- Nesne Gezgini'da Sunucu NesneleriBağlı Sunucu>>gidin.
- Yapılandırmak istediğiniz sağlayıcıya sağ tıklayın ve Özellikler'i seçin.
- Sağlayıcı Seçenekleri penceresinde, İşleme izin ver seçeneği için Etkinleştir kutusunu işaretleyin.
İleti 4
Hata 7303: "%ls" bağlı sunucusu için 'MSDAORA' OLE DB sağlayıcısının veri kaynağı nesnesi başlatılamıyor. [OLE/DB sağlayıcısı ileti döndürdü: ORA-01017: geçersiz kullanıcı adı/parola; oturum açma reddedildi] OLE DB hata izleme [OLE/DB Sağlayıcısı 'MSDAORA' IDBInitialize::Initialize döndürülen 0x80040e4d].
Bu hata iletisi, bağlı sunucunun doğru oturum açma eşlemesine sahip olmadığını gösterir. Oturum açma bilgilerini doğru ayarlamak için saklı yordamı yürütebilirsiniz
sp_helplinkedsrvlogin
. Ayrıca, bağlı sunucu yapılandırması için doğru parametreleri belirttiğinizden emin olun.İleti 5
Hata 7306: "%ls" bağlı sunucusu için 'MSDAORA' OLE DB sağlayıcısından '%ls' tablosu açılamıyor. Belirtilen tablo yok. [OLE/DB sağlayıcısı döndürülen ileti: Tablo yok.][OLE/DB sağlayıcısı döndürülen ileti: ORA-00942: tablo veya görünüm yok] OLE DB hata izlemesi [OLE/DB Sağlayıcısı 'MSDAORA' IOpenRowset::OpenRowset 0x80040e37 döndürdü: Belirtilen tablo yok.].
Hata 7312: "%ls" bağlı sunucusu için '%ls' OLE DB sağlayıcısı için geçersiz şema ve/veya katalog kullanımı. Dört parçalı bir ad sağlandı, ancak sağlayıcı katalog ve/veya şema kullanmak için gerekli arabirimleri kullanıma sunmaz.
Hata 7313: "%ls" bağlı sunucusu için "%ls" sağlayıcısı için geçersiz bir şema veya katalog belirtildi.
Hata 7314: "%ls" bağlı sunucusu için OLE DB sağlayıcısı "%ls" "%ls" tablosunu içermiyor. Tablo yok veya geçerli kullanıcının bu tablo üzerinde izinleri yok.
Bu hata iletilerini alırsanız, Oracle şemasında bir tablo eksik olabilir veya bu tabloda izinleriniz olmayabilir. Şema adının büyük harf kullanılarak yazıldığını doğrulayın. Tablo ve sütunların alfabetik durumu Oracle sistem tablolarında belirtildiği gibi olmalıdır.
Oracle tarafında, çift tırnak işareti olmadan oluşturulan bir tablo veya sütun büyük harfle depolanır. Tablo veya sütun çift tırnak içine alınmışsa, tablo veya sütun olduğu gibi depolanır.
Aşağıdaki çağrı, tablonun Oracle şemasında mevcut olup olmadığını gösterir. Bu çağrı tam tablo adını da gösterir.
sp_tables_ex @table_server=Ora817Link, @table_schema='your_schema_name'
İleti 6
Hata 7413: '%ls' bağlı sunucusuna bağlanılamadı (OLE DB Sağlayıcısı '%ls'). Temsilci seçmeyi etkinleştirin veya geçerli kullanıcı için uzak sql server oturum açma bilgilerini kullanın. Msg 18456, Düzey 14, Durum 1, Satır 1 '' kullanıcısı için oturum açılamadı.
Bu hata iletisi, açık bir oturum açma eşlemesi olmadan Microsoft Windows kimliği doğrulanmış oturum açma için dağıtılmış bir sorgu denendiğini gösterir. Güvenlik temsilcisinin desteklenmediği bir işletim sistemi ortamında, Windows NT kimliği doğrulanmış oturum açma işlemleri, kullanılarak
sp_addlinkedsrvlogin
oluşturulan bir uzaktan oturum açma ve parolayla açık bir eşlemeye ihtiyaç duyar.İleti 7
Hata 7391: "%ls" bağlı sunucusu için OLE DB sağlayıcısı 'MSDAORA' dağıtılmış işlemi başlatamadığından işlem gerçekleştirilemedi. OLE DB hata izleme [OLE/DB Sağlayıcısı 'MSDAORA' ITransactionJoin::JoinTransaction döndürülen 0x8004d01b]
OCI sürümlerinin bu makalenin önceki bölümlerinde açıklandığı gibi doğru kaydedildiğini doğrulayın.
Uyarı
Kayıt defteri girdilerinin tümü doğruysa, MtxOCI.dll dosyası yüklenir. MtxOCI.dll dosyası yüklenmezse, Oracle için Microsoft OLE DB Sağlayıcısı veya Oracle için Microsoft ODBC Sürücüsü kullanarak Oracle'a karşı dağıtılmış işlemler gerçekleştiremezsiniz. Üçüncü taraf sağlayıcı kullanıyorsanız ve Hata 7391 alıyorsanız, kullandığınız OLE DB sağlayıcısının dağıtılmış işlemleri desteklediğini doğrulayın. OLE DB sağlayıcısı dağıtılmış işlemleri destekliyorsa, Microsoft Dağıtılmış İşlem Düzenleyicisi'nin (MSDTC) çalıştığını ve ağ erişiminin etkinleştirildiğini doğrulayın.
İleti 8
Hata 7392: "%ls" bağlı sunucusu için 'MSDAORA' OLE DB sağlayıcısı için işlem başlatılamıyor. OLE DB hata izlemesi [OLE/DB Sağlayıcısı 'MSDAORA' ITransactionLocal::StartTransaction 0x8004d013 döndürdü: ISOLEVEL=4096].
Bu oturum için yalnızca bir işlem etkin olabileceğinden OLE DB sağlayıcısı 7392 hatasını döndürdü. Bu hata, bağlantı açık veya örtük bir işlemde olduğunda ve OLE DB sağlayıcısı iç içe işlemleri desteklemediğinde ole db sağlayıcısına karşı bir veri değiştirme deyimi denendiğini gösterir. SQL Server, belirli hata koşullarında işleme devam ederken veri değişikliği deyiminin etkilerini sonlandırabilmesi için bu desteği gerektirir.
AÇıKsa
SET XACT_ABORT
, SQL Server OLE DB sağlayıcısından iç içe işlem desteği gerektirmez. Bu nedenle, örtük veya açık bir işlemde uzak tablolarda veri değişikliği deyimlerini yürütmeden önce yürütebilirsinizSET XACT_ABORT ON
. Kullandığınız OLE DB sağlayıcısının iç içe işlemleri desteklememesi durumunda bunu yapın.
Oracle sunucusuna bağlantı sorunlarını giderme teknikleri
Oracle için Microsoft ODBC sürücüsü veya Oracle için Microsoft OLE DB Sağlayıcısı oracle bağlantı sorunlarını ayıklamak için şu adımları izleyin:
Oracle'a bağlanıp veri alabildiğinizi doğrulamak için Oracle SQL Plus yardımcı programını (komut satırı tabanlı sorgu yardımcı programı) kullanın.
Uyarı
Oracle'a bağlanamıyor ve veri alamıyorsanız Oracle İstemci Bileşenleri'nin hatalı bir yüklemesine veya yapılandırmasına sahipsinizdir veya SQL*Net Kolay Yapılandırma veya Oracle Net8 Kolay Yapılandırma yardımcı programını kullanırken Oracle sunucusu için doğru bir Saydam Ağ Alt Yapısı (TNS) hizmet diğer adı oluşturmamış olmanız gerekir. Sahip olmanız gereken Oracle bileşenlerinin doğru yüklendiğini ve yapılandırıldığını doğrulamak için Oracle veritabanı yöneticinize (DBA) başvurun.
Bilgisayarda yüklü oracle istemcisinin (SQL*Net sürümü) sürümünü doğrulayın. Hem Oracle için Microsoft ODBC sürücüsü hem de Oracle için Microsoft OLE DB Sağlayıcısı, istemci bilgisayara SQL*Net sürüm 2.3 veya üzerinin yüklenmesini gerektirir.
SQL Plus bağlantısı (Oracle istemci sorgu aracı) çalışıyor gibi görünebilir, ancak ODBC/OLE DB bağlantısının düzgün çalışması için bilgisayarınızı yeniden başlatmanız gerekir.
Uyarı
Oracle 8i kullandığınızda.rgs dosyası boş olur.
Oracle istemcisi yüklüyse ve oracle client components 7.3 veya üstünün bilgisayara yüklenmesi gerektiğini belirten bir hata alırsanız, istemci bilgisayardaki path ortam değişkeninin Oracle istemcisinin yüklendiği klasörü (Oracle_Root\Bin gibi) içerdiğini doğrulayın. Bu klasörü bulamazsanız, hatayı çözmek için klasörü PATH değişkenine ekleyin.
Ociw32.dll dosyasının Oracle_Root\bin klasöründe olduğunu doğrulayın. Bu .dll dosyası istemci bilgisayardaki başka bir konumda bulunamaz. Oracle İstemci Bileşeni DLL'lerinin (örneğin, Core40.dll dosyası ve Ora*.dll dosyası) Oracle_Root klasörünün veya alt klasörlerin dışında olmadığından emin olun.
Bilgisayarda tek bir Oracle istemci sürümünün yüklü olduğunu doğrulayın. Sql*Net'in birden çok sürümü aynı istemci bilgisayarda müdahalelerle ve kritik işlemlerle (örneğin, TNS ve diğer ad aramaları) bulunamaz.
Microsoft, Oracle istemcisinin yerel bir yüklemesine sahip olduğunuzu ve bunu bilgisayarınızdaki uzak bir Oracle istemcisini eşleyip ODBC/OLE DB aracılığıyla Oracle'a bağlanmak için sistemin yoluna dahil ederek yapmanızı önermez. Ancak sağlayıcı ve sürücü, ağ paylaşımında değil yerel olarak yüklenmiş bir Oracle istemcisiyle test edilir.