Bir projemde MSAccess veritabanındaki alanları MSSQL ile birleştirip kullanmam gereği oldu.
- (A) makinesinde "MSSQL server 2008" kurulu ve "192.168.2.1,2301\SQLSERVER" ile ilgili katalog dosyasına bağlanıyor.
- (B) makinesinde "MSAccess" veritabanı bulunuyor. Ağ üzerinde '\\ARMAN-A200\Network Paylaşım Klasörü\' şeklinde paylaşımda
- (B) makinesindeki bu klasör "everyone" için "yazma/okuma" yapabilir olarak paylaşıma açılmış durumdadır.
- (A) makinesindeki MSSQL Sunucu ayarlarında LinkedServer için uzaktan erişim ENABLED edilmiş durumda.
- Erişim yapacak her iki (A) ve (B) makinelerdeki hem Windows'un Firewall'ı kapatılarak devreden çıkartılmış durumda hem de Virüs programlarının firewall özellikleri devre dışı bırakılmış durumdadır.
- Windows Seven kurulu her iki (A) ve (B) makinedeki UAC (kullanıcı hesabı denetimi) devre dışı bırakıldı.
- (A) makinesinde Yerel INTRANET ayarlarında "trusted" server olsun diye listeye eklendi. ( 'file://arman-a200' )
- Her iki (A) ve (B) makinede de ağ altındaki "Parola Korumalı paylaşım" devre dışı. Herkes heryerde erişebiliyor.
- Şartlar eşit olsun diye şöyle yaptım, aşağıdaki SQL kurgusunu (B) makinesinin network altındaki bu klasöre koyup (A) ve (B) iki farklı makineden aynı projeyi sırayla çalıştırıp deniyorum.
Bu şartlar sağladım ancak şöyle bir ikili durum söz konusu;
- MSSQL kurulu (A) makinede bu proje çalıştığında liste alabiliyorum,
- diğer uzak (B) makineden çalıştırınca aşağıdaki hatayı alıyorum.

Kod: Tümünü seç
Var
Veri : String;
begin
Veri := '\\ARMAN-A200\Network Paylaşım Klasörü\Veritabani.MDB';
With AdoQuery1 do begin
SQL.Clear;
SQL.Add('SELECT P1.ID, P2.Ad, P2.Soyad FROM Personnel P1');
SQL.Add('LEFT JOIN');
SQL.Add('OPENDATASOURCE(''Microsoft.Jet.OLEDB.4.0'',');
SQL.Add('''Data Source='+(Veri)+';'')...Personel P2 ON (P1.RegistryNumber = P2.Sicil)');
SQL.Add('ORDER BY Ad, Soyad');
Active := True;
end;
end;
(A) makinesinde MSSQL Server kurulu ve MSSQL veritabanı burada (Malzeme ZİMMET)
(B) makinesinde herhangi bir sunucu yüklü değil, MSAccess veritabanı burada (Aylık İŞ PLANI)
(A) makinesinden her iki veritabanına da MSSQL üzerinden JOIN edilerek erişilebiliyor.
(B) makinesinden sadece MSSQL veritabanına erişim imkanı oluyor, MSAccess veritabanına MSSQL üzerinden erişim olmayıp resimdeki hata geliyor.
- MSAccess veritabanını (A) makinesine kopyalarsam sorun kalmıyor her iki makineden de her iki veritabanı JOIN edilmiş olarak okunabiliyor. Ancak benim MSAccess veritabanını (A) makinesinde olma ihtimali yok iki farklı bağımsız projeyi birleştirecek üçüncü bir proje hazırlıyorum. Bir makine iş planı yapıyor diğer makine malzeme zimmet işlemi.
İstenenlerden sadece birisi için örnek vermek gerekirse, bir malzemenin daha önce hangi işlerde çalıştığını tespit etmek gerekiyor.
Bu bağlamda konu başlığındaki soru gündeme geliyor (internetten kaynak çok ama ben başarılı olamadım) veya ben bir yeri atlıyorum...
Kusura bakmayınız uzun oldu ama detayları mesajlarda soru - cevap yapmaya gerek kalmasın diye vermek gereği duydum.
Teşekkürler.