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

时间:2017-01-06 15:53:43

标签: sql sql-server database hostname

我想知道是谁在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'

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

2 个答案:

答案 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的计算机名称