Tekrar merhaba...

Uzun zaman önce karşılaştığım bir problemin çözümünü paylaşmak imkânı buldum ve bloguma eklemeyi uygun gördüm. İnşallah iktibâs ettiğim kaynak sahipleri [ki adresleri mevcuttur] bana kızmazlar :)

Bu problemle 64 bit W7 kullandığım sırada karşılaşmıştım. Uzun aramalara rağmen toplu bir bilgiye ulaşamamıştım. Bulduğum parça parça bilgilerle neticeye ulaşmış ve problemi çözmüştüm.

Söz konusu problem, access veritabanı kullanan bir tasarımımın 64 bit üzerinde veritabanına erişemesi problemiydi. Beraberinde benzer bir problemin IIS üzerinde de bulunduğunu öğrendim...

Dilerseniz lafı çok uzatmadan konuya geçelim.

.NET Framework üzerinde geliştirilen uygulamaların 64 Bit işletim sistemi üzerinde çalışabilmesi için Visual Studio içerisinde söz konusu projenin properties bölümünden Platform Target kısmının x86 (32 Bit) olarak işaretlenmesi gereklidir. Visual Studio ortamında varsayılan olarak bu durum Any CPU olarak işaretlidir. Bu sebeple kullanılan platforma uyum sağlayarak çalışır. Diğer bir deyişle -bukalemun gibi duruma uyum sağlar ve- x86 (32 Bit) işlemci mimarisi için üretilmiş olan bir işletim sisteminde 32 Bit, x64 (64 Bit) işlemci mimarisi için üretilmiş olan bir işletim sisteminde 64 Bit olarak çalışır.

Bu durumu düzeltmek için Visual Studio ortamında Solution Explorer altında proje başlığına sağ tıklayıp Properties kısmına gelinmelidir. Açılan sekmede Build başlığı altında Platform Target kısmı x86 olarak değiştirilmelidir.

Ayrıca Selçuk ERMAYA'nın blog sayfasındaki konuyla ilgili yazısını ve yorumları inceleyebilirsiniz. Bu problemle sokarşılaştığımda incelediğim ilk yazı buydu.


Bunun yanı sıra ASP.NET üzerinde de aynı problem mevcuttur. Bu problemin düzeltilebilmesi için IIS üzerinde Uygulama Havuzlarının (Application Pools) altındaki nesnelere sağ tıklayıp Gelişmiş Ayarlar (Advanced Settings) kısmından 32-Bit Uygulamaları Etkinleştir seçeneği True yapılmalı, ASP.NET 2.0 (32-Bit) kayıt ettirilmeli  ve (gerekli olursa) IIS baştan başlatılmalıdır.

Ancak bu usûlle uğraşmak yerine (Çalıştır ve ya CMD içerisinde) şu komutlar çalıştırılırsa aynı işlemi tüm Uygulama Havuzları için gerçekleştirebilirsiniz.

32-Bitlik Uygulamaları Etkinleştirmek İçin

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

ASP.NET 2.0 Kayıt Ettirme İşlemi İçin

%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i


Bu işlemlerden sonra Access yada ODBC veritabanlarına erişim yaşamakta problem yaşarsanız IIS'i baştan başlatmayı deneyin.

Bu konuyla ilgili olarak daha fazla bilgiye ulaşmak için aşağıdaki makale sayfasını ziyaret edebilirsiniz:

How to switch between the 32-bit versions of ASP.NET 1.1 and the 64-bit version of ASP.NET 2.0 on a 64-bit version of Windows

http://support.microsoft.com/kb/894435

Herhangi bir sebeple probleminiz devam ederse daha fazla teferruata ulaşmak için şu makaleleri okuyabilir ve mevzu-i bahs olan gerekli kurulumları gerçekleştirebilirsiniz.

How to obtain the latest service pack for the Microsoft Jet 4.0 Database Engine

http://support.microsoft.com/default.aspx?scid=kb;en-us;239114

Ayrıca aşağıdaki sayfadan .NET Framework 2.0 Software Development Kit (SDK) (x64) indirerek sisteminize kurmanızda yararınıza olabilir.

http://www.microsoft.com/downloads/details.aspx?FamilyId=1AEF6FCE-6E06-4B66-AFE4-9AAD3C835D3D&displaylang=en

 

Bu yazıyı hazırlamadan önce yaptığım araştırmalarla ilgili olarak işinize yaraması muhtemel Koray Kırdinli'ye ait "The 'Microsoft.Jet.OLEDB.4.0' provider is not registered" başlıklı yazıyı da inceleyebilirsiniz.


Bu işlemleri tamamladıktan sonra veritabanına erişebiliyor, okuma yapabiliyor ama INSERT, UPDATE, DELETE sorgularını çalıştırmak istediğinizde “güncelleştirilebilir sorgu kullanmalıdır” şeklinde bir hatayla karşılaşıyorsanız dosyalarınızın bulunduğu dizinin güvenlik seçeneklerinde değişiklik yapmanız gerekecektir.

Bunun için söz konusu dizinin Özelliklerine girin ve Güvenlik sekmesinde Gelişmiş düğmesine basın. Burada İzinler sekmesinde İzinleri Değiştir düğmesine basın. İşlem yapan kullanıcınızı seçin ve Düzenle düğmesine basın. Açılan pencerede gerekli değişiklikleri yapın. Eğer hangi değişiklikleri yapmanız gerektiğini bilmiyorsanız “Tam Denetim” seçeneğini seçin ve açık olan güvenlik pencerelerinin hepsinde Tamam düğmesine basarak kapatın. Ancak sunucu kurulum işlemlerinde dışarıdan kaynaklanacak bir problem yaşamamak için bu güvenlik sekmelerindeki işlemleri ve teferruatı iyice öğrenmeye bakın. Aksi halde üzülebilirsiniz.

Ayrıca söz konusu dizinin salt okunur durumunun değiştirilmesi de muhtemel bir problem oluşmasını engelleyebilir.

Bunların yanı sıra bu problemi yaşadığım sırada C:\Windows\SysWOW64\ içinde msjet40.dll ve msjetoledb40.dll dosyalarını da register ettirmiştim. Bu problemi halletmem de etkileri olup olmadığından emin değilim. Ancak işinize yarayabilir. Aklınızın bir köşesinde bulunsun.

Bu işlemi gerçekleştirmek için komut penceresinde (command prompt) [Vista ve sonraki sistemlerde Başlat'a tıkladıktan sonra cmd yazarak açabilirsiniz] sırasıyla aşağıdaki kodları çalıştırın. [Komut isteminin doğrudan C: üzerindeki bir dizini gösterdiğini varsayıyorum]

C:\> cd\

C:\> cd Windows\SysWOW64

C:\Windows\SysWOW64>regsvr32.exe msjet40.dll

C:\Windows\SysWOW64>regsvr32.exe msjetoledb40.dll

 

İlk paylaşımımında burada sonuna geldim. Tekrar görüşmek dileğiyle...

 

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Tavsiye
Bağlantılar