Makale numarası: 198756 - Son Gözden Geçirme: 23 Haziran 2005 Perşembe - Gözden geçirme: 3.0

NASıL YAPıLıR: Bağlantısı denetimi kullanarak Access 2000 çalışma zamanı sırasında kullanıcı oturum aç'ı engelle

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Microsoft Visual Basic for Applications'da bulunan bir Microsoft Access kullanarak, kullanıcıların bir Jet veritabanına oturum açmasını engelleyebilirsiniz. Kullanıcı veritabanında zaten varsa, bunlar üzerinde oturum kalır; ancak, diğer kullanıcılar veritabanını açabilirsiniz. Bu bir pasif kapatma olarak adlandırılır.

Bu makaledeki kod örneğini passive bir kapatma gerçekleştirmek gösterilmiştir ve veritabanına zaten olan kullanıcıların listesini çıkış nasıl iyi bir şekilde oturum açtı.

Bağlantı denetimi

Bağlantı Denetimi (edilgen kapatma olarak da bilinir) özelliği, kullanıcıların veritabanına bağlanmasını engeller. Bu özelliği, bakım, örneğin gerçekleştirmek için bir veritabanı için özel erişim edinmek veritabanını sıkıştırma duyan veya veritabanı şemasının ya da uygulamaları için bir güncelleştirme yapmak duyan bir veritabanı yöneticisi için yararlıdır.

Bağlantı denetimi çalıştırıldığında, şu anda bir veritabanına bağlı olan kullanıcıların bağlantı kesme'kadar etkilenmeden kalır. Bu noktada, bağlantı denetimi iptal kadar yeniden erişemiyor.

Aşağıdaki senaryolarda, bu özelliği şeklini içine ek bilgiler sağlar:
  • Veritabanında beş kullanıcılarıdır'ı tıklatın. Edilgen kapatma kullanıcı beş başlatır. Kullanıcı altı veritabanına bağlanmaya çalışır, ancak erişim engellendi ve beş kullanıcıya, veritabanını açılmasını engelliyor bildiren bir hata iletisi döndürdü.
  • Veritabanında beş kullanıcılarıdır'ı tıklatın. Edilgen kapatma kullanıcı beş başlatır. Kullanıcı, bir veritabanı kapatır ve veritabanına bağlanmayı dener, ancak erişim ve bir hata iletisi engellendi, bu beş kullanıcı veritabanı açılmasını engelliyor belirten döndürdü.
  • Veritabanında beş kullanıcılarıdır'ı tıklatın. Edilgen kapatma kullanıcı beş başlatır. <a1>Kullanıcı</a1> beş veritabanı kapatır. <a1>Kullanıcı</a1> altı, veritabanını açmaya çalışırsa ve başarılı olmuştur. Yeniden adlandırılan kullanıcı veritabanına bağlı iken passive kapatma yalnızca devam ederse olmasıdır.
  • Veritabanında beş kullanıcılarıdır'ı tıklatın. Edilgen kapatma kullanıcı beş başlatır. Kullanıcılara 1 dört veritabanı çıkın. Kullanıcı beş kullanıcı liste işlevselliğini arar ve hiçbir kullanıcı veritabanında olup olmadığını belirler. <a1>Kullanıcı</a1> beş veritabanı kapatır ve hemen veritabanının sıkıştırılmasına neden olur.

Kullanıcı listesi

Kullanıcı liste özelliğini kullanan bir Microsoft Jet veritabanına bağlı olan belirleme sağlar. ADO programlama arabiriminde elde edilebilir ve her kullanıcı için aşağıdaki bilgileri verir:
  • Kullanılmakta olan bir bilgisayarın adı.
  • Güvenlik adını (yani, kullanıcı kimliği
  • Olup olmadığını kullanıcı veritabanına bağlı olan (BIR kullanıcının KIMLIĞI kilit veritabanında kadar son kullanıcının bağlantısını kesmeden veya yuva için yeni bir kullanıcı bağlantı iadesi kadar kalır.).
  • Olup olmadığını Kullanıcı bağlantısının normal olarak sona erdirildi.
Kullanıcı liste özelliği hangi kullanıcıların hala bağlı olduğunuzdan, böylece kullanıcıların bağlantısını kesmek için sorulmasını belirlemek için bağlantı denetim özelliği ile birlikte kullanılabilir.

Kullanıcı liste özelliği, belirli bir kullanıcının faaliyetler ile ilişkili bir veritabanı Bozulması sorunları yalıtma yararlıdır.

Kod örneği

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Kod örneği göstermek için <a0></a0>, aşağıdaki adımları izleyin:
  1. Northwind örnek veritabanındaki C:\ dizinine kopyalayın.
  2. Microsoft Access'te C:\Northwind açın.
  3. ShutDownDB adlı yeni bir modül oluşturun.
  4. Araçlar menüsünde, Başvurular ' ı tıklatın.
  5. Başvurular) iletişim kutusunda, aşağıdaki başvuru seçmek için tıklatın:
    Microsoft ActiveX Data Objects 2.1 kitaplığı
  6. Yeni modüle aşağıdaki kodu yazın:
    Sub ShowUserRosterAndPassiveShutdown()
        Dim cn As New ADODB.Connection
        Dim cn2 As New ADODB.Connection
        Dim cn3 As New ADODB.Connection
        Dim rs As New ADODB.Recordset
        Dim j As Long
    
        On Error GoTo ErrHandler
        
        cn.Provider = "Microsoft.Jet.OLEDB.4.0"
        cn.Open "Data Source=c:\Northwind.mdb"
        
        cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=c:\Northwind.mdb"
        
        ' Restrict other users from opening the database
        cn.Properties("Jet OLEDB:Connection Control") = 1
        
        ' Attempt to open another connection to the database
        cn3.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=c:\Northwind.mdb"
        
        ' The user roster is exposed as a provider-specific
        ' schema rowset in the Jet 4 OLE DB provider.  You have to use
        ' a GUID to reference the schema, as provider-specific schemas
        ' are not listed in ADO's type library for schema rowsets
        
        Set rs = cn.OpenSchema(adSchemaProviderSpecific, , _
        "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
        
        ' Output the list of all users in the current database.
        Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
        "", rs.Fields(2).Name, rs.Fields(3).Name
        
        Do While Not rs.EOF
           Debug.Print rs.Fields(0), rs.Fields(1), _
           rs.Fields(2), rs.Fields(3)
           rs.MoveNext
        Loop
        
        ' Close one of the remaining connections
        cn2.Close
        
        ' Reopen the user roster to verify that no other users are in the
        ' database Output the list of all users in the current database.
        
        Set rs = cn.OpenSchema(adSchemaProviderSpecific, , _
        "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
        
        Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
        "", rs.Fields(2).Name, rs.Fields(3).Name
        
        Do While Not rs.EOF
           Debug.Print rs.Fields(0), rs.Fields(1), _
           rs.Fields(2), rs.Fields(3)
           rs.MoveNext
        Loop
        
        cn.Close
        
        Exit Sub
    
    ErrHandler:
    
        For j = 0 To cn.Errors.Count - 1
           Debug.Print "Conn Err Num : "; cn.Errors(j).Number
           Debug.Print "Conn Err Desc: "; cn.Errors(j).Description
        Next j
        
        For j = 0 To cn2.Errors.Count - 1
           Debug.Print "Conn Err Num : "; cn2.Errors(j).Number
           Debug.Print "Conn Err Desc: "; cn2.Errors(j).Description
        Next j
        
        For j = 0 To cn3.Errors.Count - 1
           Debug.Print "Conn Err Num : "; cn3.Errors(j).Number
           Debug.Print "Conn Err Desc: "; cn3.Errors(j).Description
        Next j
        
        Resume Next
    
    End Sub
    					

  7. Northwind veritabanını kapatın ve istendiğinde, değişiklikleri ShutDownDB için kaydedin. (Bu veritabanına eklemiş olduğunuz kod nedeniyle, özel bir kilidi açmak için yapmanız gerekir.)
  8. C:\Northwind.mdb yeniden açın.
  9. Visual Basic Düzenleyicisi'ndeki hemen penceresine getirmek için CTRL + G tuşlarına basın.
  10. Aşağıdaki komut penceresi içinde yazın ve ENTER tuşuna basın:
    ShowUserRosterAndPassiveShutdown
    					
Veritabanı kullanıcılarını komut penceresi içinde görüntülenen listesi unutmayın.






Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Access 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto kbhowtomaster KB198756 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:198756  (http://support.microsoft.com/kb/198756/en-us/ )