如何知道谁在 sql 服务器中创建(主机名)数据库?

How to Know who creates (host name) a database in sql server?

我想知道谁在 sql 服务器上创建了数据库。不是所有者用户,而是 HOST_NAME 或创建数据库的用户的计算机名称。有人在服务器上创建了一个数据库,但我们不知道它是谁。我们拥有的唯一数据是数据库的用户所有者,但该用户被任何开发人员使用。但我想要的是能够从创建数据库的地方识别机器的名称。例如创建的主机名。

我试过

select * from sys.databases

但我不需要。

然后我尝试了

Select
database_name,server_Name,Machine_Name,b.[name]as Backup_Name,Backup_Start_Date,Backup_Finish_Date
,Physical_Device_Name
from  master.sys.databases a
Inner Join msdb..backupset
b             on
a.Name = b.Database_Name
Inner Join msdb..backupmediafamily
c     on    c.media_set_id
= b.media_set_id
WHERE database_name = 'database'

但是我也没有得到我需要的数据

获取主机名

`SELECT HOST_NAME() AS 主机名'

获取机器名称

SELECT serverproperty('Machinename') as Hostname

注:

Host_Name表示数据库连接的sql服务器

Machinename 表示安装sql服务器的机器名称

我会为此使用扩展事件:

CREATE EVENT SESSION [Create Database] ON SERVER 
ADD EVENT sqlserver.database_created(
    ACTION(sqlserver.client_hostname)) 
ADD TARGET package0.ring_buffer;
GO
ALTER EVENT SESSION [Create Database] ON SERVER STATE = START;

我将目标数据的消耗留作 reader 的练习。