2017-01-06 3 views
-1

Я хочу знать, кто создал базу данных на сервере sql. Не пользователь владельца, а HOST_NAME или имя машины пользователя, который создает базу данных. Кто-то создал базу данных на сервере, но мы не знаем, кто это был. Единственные данные, которые у нас есть, это пользовательский владелец базы данных, но этот пользователь используется любым разработчиком. Но я хочу, чтобы можно было определить имя машины, с которой создается база данных. Например, имя хоста создания.Как узнать, кто создает (имя хоста) базу данных на сервере sql?

Я попытался с

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

Почему отрицательный отзыв? Нет подобных вопросов – JotaPardo

+0

Я до сих пор не понимаю, почему отрицательные голоса. Никто не дает решений и даже не дает объяснений – JotaPardo

+1

Хотя я не проголосовал за вас, но вероятной причиной может быть отсутствие исследований, прежде чем задавать вопрос. Я немного смущен, что вам нужно имя машины, которая создала базу данных. Но вы должны знать, что база данных всегда создается с помощью чьей-то учетной записи. Следовательно, вы должны сначала включить аудит, чтобы узнать, что, как правильно указано @TheGameiswar – geeksal

ответ

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; 

Я оставляю потребление целевых данных в качестве упражнения для читателя.

+0

Я попробую это решение. И если я правильно понимаю, это будет упреждающее решение и поможет в будущем. Но увидеть базы данных, созданные до этого, было бы невозможно, не так ли? – JotaPardo

+1

Да. Насколько я знаю, нет ничего, что фиксирует информацию, которую вы ищете по умолчанию, поэтому это поможет только для событий, которые происходят после создания сеанса. –

0

Получить Host Name

`ВЫБОР HOST_NAME() AS HostName»

Получить имя машины

SELECT serverproperty('Machinename') as Hostname

Примечание:

HOST_NAME, значит, сервер SQL, к которому база данных подключена

MACHINENAME означает имя машины, в которой сервер SQL установлен

+0

Мне не нужно имя машины для текущего соединения, но имя машины, которая создала базу данных. – JotaPardo

+1

Даже машины или некоторые службы создают базу данных, они должны использовать некоторую учетную запись, которая имеет разрешения. Вы не можете найти это сейчас, если только у вас не включен аудит. – TheGameiswar

+0

@TheGameiswar Спасибо за ваш ответ. Я знаю имя владельца, который является учетной записью создания базы данных. Но это не те данные, которые мне нужны, но имя машины с момента создания базы данных. – JotaPardo

 Смежные вопросы

  • Нет связанных вопросов^_^