Sql server 用于标识Access数据库实例的唯一id属性值

Sql server 用于标识Access数据库实例的唯一id属性值,sql-server,ms-access,Sql Server,Ms Access,我有一个访问“应用程序”(.adp文件),当它打开时,我让它用用户名和打开的时间更新管理数据库。当它关闭时,它用用户名time closed更新管理数据库-这些是事件表中的sperate记录,看起来像 username,dbaction,time bob,open,13:00 gareth,open,13:05 bob,close,14:00 如果用户两次打开数据库,将记录2个打开和2个关闭操作,但无法确定2个关闭事件中的每个事件属于哪个数据库会话 我想在这个表中存储的是一个唯一的标识符,用于

我有一个访问“应用程序”(.adp文件),当它打开时,我让它用用户名和打开的时间更新管理数据库。当它关闭时,它用用户名time closed更新管理数据库-这些是事件表中的sperate记录,看起来像

username,dbaction,time
bob,open,13:00
gareth,open,13:05
bob,close,14:00
如果用户两次打开数据库,将记录2个打开和2个关闭操作,但无法确定2个关闭事件中的每个事件属于哪个数据库会话


我想在这个表中存储的是一个唯一的标识符,用于将打开和关闭操作与“每个会话”链接在一起。如果存在某些内容,我最好使用vba中应用程序对象的属性。它甚至可以存储数据库打开的时间吗?我可以在数据库打开时生成自己的id,并将其存储在变量中直到关闭,但我更喜欢使用内置的东西。有什么想法吗?

打开access数据库时,可能会有一种方法在数据库中运行。在这种情况下,您可以生成一个随机标识符并将其存储在全局变量中。在写日志行时,可以包含此标识符,以便跟踪登录和注销


更新:您可以使用显示的代码生成一个GUID,该GUID几乎是唯一的,所以这应该是您想要的。如果没有,您可能需要澄清,因为我不理解这个问题。

您可以有一个全局“
Id\u session
”变量,该变量在启动时启动(例如随机生成的uniqueIdentifier),您将存储在“event”表的“
Id\u session
”列中。打开数据库时,记录将插入“事件”表中,记录标识符存储为全局变量。关闭数据库时,现有记录将被标识(通过id_会话值)并在数据库中更新


事实上,我不理解用内置标识符代替此解决方案的意义

我使用一个在启动时打开的隐藏未绑定表单来完成此操作。在这种形式下,我将记录插入表中。然后,我获取该记录的自动编号ID(或SQL Server调用该字段的任何内容),并将其存储在文本控件中。如果您进行任何开发,并且遇到错误并重置正在运行的代码,那么您将丢失所有全局变量,因此我更喜欢使用表单来存储这些类型的变量


在关闭事件的隐藏表单中,我用退出的日期/时间更新相同的记录。我已经使用这项技术十多年了,没有任何问题。

在我看来,所有这些答案都太聪明了一半


我要做的是在我正在登录的表中添加一个自动编号字段,然后捕获启动事件记录的自动编号值并将其存储在某个位置(通常在应用程序启动窗体的隐藏字段中)用于在关机时使用启动事件的ID号写入关机事件。

对于可能在同一台pc或两台不同pc上同时打开的两个access应用程序,HWND是否将是唯一的?

是的,这是我试图避免的,我喜欢使用内置标识符,甚至是打开时间,任何自动操作内置标识符的优点是什么?gary您使用的是什么语言/客户端。我不认为有一个“连接标识符”是这样的,我认为它需要在代码中,但也许其他人可以帮助。那么我当时建议的差不多了吧?Hwnd对于同一台电脑上的每个窗口都是唯一的,对于两台不同的电脑,你可以捕获电脑名。你知道,我用电脑名+Hwnd+日期实施了一个测试,但是如果有人在电脑上打开数据库,关闭它,然后再打开,Hwnd会是唯一的吗?重新启动电脑会影响这一点吗?还有什么我可以添加到组合中以确保唯一性的吗?