如何知道谁在 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 的练习。
我想知道谁在 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 的练习。