我創建了一個包含vb.net的數據庫。用戶正在將記錄輸入系統並進行更新。有沒有辦法捕捉誰輸入或更新數據庫?SQL Server - 最後錄入記錄的用戶
例子:
LastModifiedBy | CreatedBy
Joe Bob | Sally Joe
我創建了一個包含vb.net的數據庫。用戶正在將記錄輸入系統並進行更新。有沒有辦法捕捉誰輸入或更新數據庫?SQL Server - 最後錄入記錄的用戶
例子:
LastModifiedBy | CreatedBy
Joe Bob | Sally Joe
由於您使用的連接字符串中預定義的用戶名和密碼,你的選擇是僅限於.NET方面。通過數據庫,您可以訪問執行更新/插入/刪除的機器名稱,但不是用戶。 SYSTEM_USER將始終返回連接字符串中指定的帳戶。
如果您確實需要訪問運行您的應用的用戶的Windows用戶名,則需要更新您的VB.NET代碼以將其作爲參數傳遞給您的查詢並將其記錄在某個列中。這與歷史記錄表相結合,可以爲您提供有關誰正在更改數據的非常全面的信息(不包括通過SSMS進行的直接數據編輯)。
該Environment.UserName
屬性是你在找什麼,你可以找到更多here。
fyi current_user返回dbo如果它的系統管理員 –
好消息,感謝@MichaelRudnerEvanchik,我將更新到SYSTEM_USER –
hmmm ...看起來像它每次給系統管理員。我沒有通過.net登錄用戶。我只允許他們通過數據庫訪問。 .net只是一個可執行文件。如果他們有權訪問文件夾並訪問數據庫,他們可以使用該應用程序。 – user44565
ALTER trigger [dbo].[audit_trigger] on [dbo].[table_name] for insert, update, delete
as
begin
insert into audit(user,table,time_stamp) values (SYSTEM_USER,'table_name',getdate())
end
或創建您的表中字段的用戶,並默認SYSTEM_USER
當然有。問題是我們對你的架構一無所知。您提到了所使用的技術,SQL Server和VB.NET,但並未提及如何使用這些技術。例如,您是否使用與應用程序相同的連接字符串將用戶授權到數據庫,或者是通過映射到SQL Server用戶的域憑據登錄到SQL Server的用戶? –
應用程序如何設計爲登錄到數據庫?你將Windows憑據傳遞給數據庫,還是你有一個通用用戶登錄到數據庫和獲取/設置數據? – Jeremy