Zdravím a obracím se s prosbou na zdejší borce v accessu. Jak získat seznam všech připojení mdb sdílené v síti, získat názvy připojených pc a jméno uživatele? Databázi používám jako zdroj dat vb.net aplikace, starší oprášený projekt. Databáze má svůj soubor mdw ve stejné složce a po připojení se tamtéž vytvoří soubor ldb, postupně se do něj přidávají další připojení v chnologickém pořadí, údaje jsou uloženy v blocích 64znaků, vždy 32 pro název pc a 32 pro username, do souboru se přidávají další záznamy (odpojení zůstávají), proto čtením přímo ze souboru ldb není možné získat aktuálně připojené uživatele. Narozdíl od čtení přímo ze souboru ldb mi tento jiný postup kupodivu zobrazuje pouze právě připojené uživatele, navíc poskytuje další dva sloupce s informacemi o připojení: ' The user roster is exposed as a provider-specific schema rowset
' in the Jet 4.0 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
Dim user_roster As DataTable = _
cnOleDb.GetOleDbSchemaTable(New Guid("{947bb102-5d43-11d1-bdbf-00c04fb92675}"), Nothing)
dgv.DataSource = user_roster 'datagridview Inspirace k výše uvedenému kódu čerpána dle: Jak lze zjistit, kdo je přihlášen k databázi pomocí nástroje Microsoft Jet UserRoster v aplikaci Access: http://support.microsoft.com/kb/285822 Pro každé nové připojení se vrací stejné připojení dvakrát, nevíte čím to může být ? Něco špatně nastavené? Stejně tak i zápis pro stejné připojení se v souboru ldb provede dvakrát. ConnectionString je totožný a má uvedenou system db, liší se pouze připojený user. Soubor ldb se po odpojení všech uživatelů správně odstraní, žádné spojení nezůstává viset. Mám jistotu,že se připojuje právě jedna aplikace, db není otevřena nikde jinde např. v aplikaci Access a blok kódu s připojením k db není vykonán vícekrát. Za Váš čas věnovaný Vaší případné odpovědi předem děkuji.
|