2017-01-06 5 views
-1

Ich möchte wissen, wer eine Datenbank in SQL Server erstellt hat. Nicht der Eigentümerbenutzer, sondern HOST_NAME oder der Computername des Benutzers, der die Datenbank erstellt. Jemand hat eine Datenbank auf dem Server erstellt, aber wir wissen nicht, wer es war. Die einzigen Daten, die wir haben, sind der Benutzerbesitzer der Datenbank, aber dieser Benutzer wird von jedem Entwickler verwendet. Aber was ich will, ist in der Lage, den Namen der Maschine zu identifizieren, von der die Datenbank erstellt wird. Zum Beispiel der Hostname der Erstellung.Wie kann man wissen, wer eine Datenbank im SQL-Server erstellt (Hostname)?

Ich habe versucht, mit

select * from sys.databases 

aber es funktioniert nicht ich brauche.

Dann habe ich versucht, mit

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' 

Aber ich habe auch nicht die Daten, die ich brauche

+0

Warum negative Rückmeldung? Keine ähnlichen Fragen – JotaPardo

+0

Ich verstehe immer noch nicht, warum negative Stimmen. Niemand gibt Lösungen und gibt nicht einmal Erklärungen – JotaPardo

+1

Obwohl ich Sie nicht abgelehnt hatte, aber der mögliche Grund könnte der Mangel an Forschung sein, bevor Sie die Frage stellen. Ich bin ein wenig verwirrt, dass Sie den Namen der Maschine wollen, die die Datenbank erstellt hat. Aber Sie sollten wissen, dass die Datenbank immer mit dem Konto eines anderen Benutzers erstellt wird. Daher müssen Sie zuerst die Prüfung aktivieren, um herauszufinden, dass, wie richtig von @TheGameiswar – geeksal

Antwort

1

I verlängert verwenden würde Veranstaltungen für diese:

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; 

Ich lasse den Verbrauch der Zieldaten als Übung für den Leser.

+0

werde ich diese Lösung versuchen. Und wenn ich richtig verstehe, wäre dies eine proaktive Lösung und wird in Zukunft helfen. Aber vorher erstellte Datenbanken zu sehen, wäre nicht möglich, oder? – JotaPardo

+1

Ja. Soweit ich weiß, gibt es nichts, was die Informationen, nach denen Sie suchen, standardmäßig erfasst. Dies hilft nur bei Ereignissen, die nach der Erstellung der Sitzung auftreten. –

0

Um Hostname

`SELECT HOST_NAME() AS Host-Name‘

Get

Um den Maschinennamen zu erhalten

SELECT serverproperty('Machinename') as Hostname

Hinweis:

Host_Name bedeutet den SQL-Server, auf die Datenbank

Machine bedeutet, dass die Computername-Server installiert ist

in dem SQL verbunden ist
+0

Ich brauche nicht den Maschinennamen der aktuellen Verbindung, aber die Name des Rechners, der die Datenbank erstellt hat – JotaPardo

+1

Selbst Maschinen oder ein Dienst erstellen eine Datenbank, sie müssen ein Konto verwenden, das über Berechtigungen verfügt ... das kannst du jetzt nicht finden, außer du hast die Überwachung aktiviert – TheGameiswar

+0

@TheGameiswar Danke für deine Antwort. Ich kenne den Namen des Eigentümers, der das Datenbankerstellungskonto ist. Aber das sind nicht die Daten, die ich brauche, sondern der Name der Maschine, seit die Datenbank erstellt wurde. – JotaPardo

Verwandte Themen