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:
- Northwind örnek veritabanındaki C:\ dizinine kopyalayın.
- Microsoft Access'te C:\Northwind açın.
- ShutDownDB adlı yeni bir modül oluşturun.
- Araçlar menüsünde, Başvurular ' ı tıklatın.
- Başvurular) iletişim kutusunda, aşağıdaki başvuru seçmek için tıklatın:
Microsoft ActiveX Data Objects 2.1 kitaplığı
- 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
- 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.)
- C:\Northwind.mdb yeniden açın.
- Visual Basic Düzenleyicisi'ndeki hemen penceresine getirmek için CTRL + G tuşlarına basın.
- 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.