我想知道是谁在sql server中创建了一个数据库。不是所有者用户,而是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'
但我也没有得到我需要的数据
答案 0 :(得分:1)
我会为此使用扩展事件:
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;
我将目标数据的消耗作为读者的练习。
答案 1 :(得分:0)
获取主机名
`SELECT HOST_NAME()AS HostName'
获取计算机名称
SELECT serverproperty('Machinename') as Hostname
注意:
Host_Name表示连接数据库的SQL Server
Machinename表示安装sql server的计算机名称