Skip to main content

AccessTr.neT


Fe Ms Accessi Be Sql Server İle "linked Table" İle Çok Kullanıcı Ortam İçin Bağlamak

Fe Ms Accessi Be Sql Server İle "linked Table" İle Çok Kullanıcı Ortam İçin Bağlamak

Çözüldü #1
Arkadaşlar merhaba,

Forumu yeni keşfettim ve faydalandığım çok konu oldu. Ancak şuan yaşadığım problemin detaylı çözüm yolunu bulamadım. Eğer yol gösterirseniz minnettar olurum.  ODBC veri kaynağı oluşturmak için uğraşıyorum ve ardından tablolarımı Sql Server üzerinden Access FE me bağlamak istiyorum.


(Lütfen burayı dikkate alalım. Bağlama işlemi tamamlandıktan sonra FE MS Access i E-posta ile tüm kullanıcılara dağıtacağım. Bu nedenle, Sql Server ile bağlantılı olarak FE üzerinden tüm kullanıcılar ek bir operasyon daha yapmadan veri değişiklikleri yapabiliyor olmaları gerekecektir.- Tüm kullanıcılar aynı ağ altında çalışıyor). IT departmanımın daha önce FE Access'i BE Sql ile kullanma konusunda deneyimi yok. Yani bu konuda bana yardımcı olamadılar. Ve benim de tecrübem olmadığı için onları herhangi bir istekte bulunarak yönlendiremedim)

Şimdiye kadar yaptıklarımı adım adım anlatacağım.

1- Kompakt bir uygulama olarak MS Access'i tamamladım (BE + FE) Bu şekilde artık kullanıma hazır.
2- Şirketimin IT departmanından Sql Server'a ulaşımımın sağlanmasını istedim. Windows authentatication ile Sql Management Studio aracılığıyla bağlanmamı sağladılar. Ve kullanıcı adımı Sql Server'ın "Security" alanında tanımladılar.
3- tüm indeksleme ve PK özellikleri ile tüm tablolarımı Sql Server üzerinden en  baştan oluşturdum ve daha sonra ilişkilerini tamamladım.

Şimdi Sql Server'da oluşturduğum tabloları FE Accesse bağlamam gerekiyor. Ancak; Linked FE Access dosyasını kullanıcılara gönderdiğimde, herhangi bir işlem yapmadan doğrudan BE'ye ulaşabilmeleri için bunu nasıl yapmalıyım bilmiyorum. Toplamda 200-250 kullanıcım olacak. Ve tüm kullanıcıların ODBC Veri kaynaklarında sürücü Sql Server var.. (Benim bilgisayarımda SQL Server Native Client 11 de var - Ama diğer tüm kullanıcıların sürücülerini kontrol ettim, sadece Sql Server mevcut herkeste - Ayrıca IT departmanının bize sağladığı sistemler şu şekilde: SQL Server 2012 - MS Access pro 2016 32 bit)

Şimdi bu ilk detaylı durum açıklamasından sonra sorularım aşağıdaki gibi:
1- Anladığım kadarıyla öncelikle Access'imin Ribbon - External Data yerinden bağlanabileceği bir veri kaynağı oluşturmam gerekiyor. Ancak MS Access için aşağıdaki ODBC veri kaynağını oluşturmalıyım? (Bunu görebileceğiniz resmi ekran görüntüsü olarak ekledim)
* User DSN
* System DSN
* File DSN

2- MS Access'e tekrar geldiğimizde, Ribbon - External Data  sekmesinden ODBC veri tabanı seçimi bölümünde aşağıdaki gibi iki seçenek karşımıza çıkmakta,
* Dosya Veri Kaynağı
* Makine Veri Kaynağı Hangisi seçilmeli? (Bunu görebileceğiniz resmi ekran görüntüsü olarak ekledim)

Ayrıntılı yardımınıza veya yol göstermenize minnettar olacağım. Ayrıca bu konuda kafa karışıklığı yaşayan çok olduğunu gördüm. O nedenle vereceğiniz cevap bu alanda sorun yaşayan herkes için bir rehber niteliğinde olur diye düşünüyorum.
Son Düzenleme: 02/02/2021, 09:18, Düzenleyen: ODRSCH26.
Cevapla
#2
Merhaba Sayın @ODRSCH26

1. Anladığım kadarıyla öncelikle Access'imin Ribbon - External Data yerinden bağlanabileceği bir veri kaynağı oluşturmam gerekiyor. Ancak MS Access için aşağıdaki ODBC veri kaynağını oluşturmalıyım? (Bunu görebileceğiniz resmi ekran görüntüsü olarak ekledim)
* User DSN - Sadece belirlenen kullanıcıya tanımlanır.
* System DSN - Login olan tüm kullanıcılar kullanabilir.
* File DSN - ODBC bilgileri *.dsn uzantılı bir text dosyasında saklı tutulur ve lokal olarak ODBC sürücülerinin yüklenmiş olması gerekir. Text dosyasına sıradan bir editör ile (Notepad gibi) erişilebilir ve düzenlenebilir.

Genel olarak ilk ikisi kullanılır, güvenlik gerekçeleri ile File DSN pek tercih edilmez.
Burada karar vereceğiniz herhangi bir kullacı login olduğunda çalışabilecek mi yoksa sadece belirli kullanıcı mı erişecek? Bu çerçevede sırası ile ya System ya da User DSN tanımlamalısınız.


2- MS Access'e tekrar geldiğimizde, Ribbon - External Data  sekmesinden ODBC veri tabanı seçimi bölümünde aşağıdaki gibi iki seçenek karşımıza çıkmakta,
* Dosya Veri Kaynağı - File DSN kurarsanız kullanmanız gerekmektedir ve *.dsn isimli text dosyanızı kullanmanız gerekir.
* Makine Veri Kaynağı Hangisi seçilmeli? - System veya User için ise bu tercih edilmelidir.
Cevapla
#3
Sayın atoykan, detaylı cevabınız için çok teşekkür ediyorum. Ancak bir noktayı netleştirmem lazım. 

Öncelikle veritabanı uygulamamızı kullanacak kullanıcıların kim oldukları en baştan bellidir. Bu belirli 250 kişiye ben FE Access i attığım zaman direk olarak hiç bir operasyon yapmadan Sql server bağlantısını kurabiliyor ve Access formları üzerinden Sql Server a verileri işleyebiliyor olmalılar.  Bu bilgiden sonra önerdiğiniz 2 bağlantı şekline gelirsek:

User DSN
250 ye yakın kullanıcının olduğu bir uygulamadan bahsediyoruz. User DSN seçersek benim Accde olarak gönderdiğim Access arayüzünden kullanıcıların Sql Server a ulaşması nasıl mümkün olacak? 250 kişinin de Accdb dosyasında önce User DSN oluşturup sonra Access üzerinden makine veri kaynağı üzerinden bağlantısını yapıp Sql Server da bulunan tabloları Accesse bağlaması gerekmeyecek mi? 250 kişinin de bu işlemleri yapması gerekmeyecek mi?

System DSN
System DSN nin açıklamasında o bilgisayarda login olan tüm kullanıcıların Sql Server a ulaşmasını sağlar demekte. Yani 250 kullanıcının bilgisayarları farklı ve System DSN kurarak 250 kullanıcı bu erişimi nasıl sağlayacak? Bunu tam anlayamadım. Burada yine diğer bilgisayarlardaki kullanıcılar Sql Server a bağlantı sağlayamıyor olmayacaklar mı?

Tekrar teşekkür ederim
Son Düzenleme: 02/02/2021, 16:10, Düzenleyen: ODRSCH26.
Cevapla
#4
Ribbon ve navigation özelliklerini kapatmayacaksanız *.accde'de tabloları bağlamanın *.accdb'den farkı yoktur sadece kodlar ve modüller sıkıştırılarak derlenir.
Ancak daha pratik bir yola başvurmak ODBC kurmakla uğraşmamak gibi bir tercihte bulunup frontend dosyanızın tablo bağlantılarının sağlanmasını
DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;Driver={SQL Server};Server=SERVERNAME;Database=DATABASENAME;Uid=DatabaseUser;Pwd=DatabaseUserPassword", acTable, d!TableName, d!TableName, False, True
benzeri kodlama içine gömerek otomatize edebilirsiniz. (Bunun ile ilgili internette bir çok örnek kod ve uygulama bulma şansınız var)
Başta da belirttiğim gibi burada karar verecek olan sizsiniz. Backend, Frontend ve Network yapınızı, kullanıcı tiplerinizi güvenlik politakalarını vs. bunları bizim bilme şansımız yok.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task