2016-04-14 23 views
2

Gereksinim, oturum açma Windows Kimlik Doğrulama veya SQL Server kimlik doğrulaması olduğunda hangi işletim sistemi kullanıcısı bir SQL Server veritabanında oturum açacağını bulmaktır. Bilmeniz gerekenler WHO (istemci bilgisayardaki AD hesabı) hangi db hesabının hangi uygulama ile SQL Server'da oturum açmış olduğunu kullandı.İstemci OS kullanıcı adını SQL Server'dan alın

sorun Örneğin.

bir SQL Server kimlik doğrulama kullanıcı günlükleri, bir dizüstü bilgisayar, laptop123 benim AD hesabı Alan adı kullanıldığında ben istemcinin işletim sistemi kullanıcı adı alamadım olduğunu. Alan adı Stackoverflow, kullanıcı adı developer1, DB hesabı (SQL Server kimlik doğrulaması) ERPAPPUSER ile bağlı Microsoft SQL Server Management Studio'yu başlattı. Etki alanı kullanıcısını Stackoverflow/developer1 kaydetmem gerekiyor.

ERPAPPUSER kullanıcının Microsoft SQL Server Management Studio'yu kullanarak laptop123 oturumunu açtığı bilgileri kolayca edinebilirim.

Bir veritabanı oturum açma tetikleyicisi oluşturdum ve istemci kullanıcı adı, ana makine adı, oturum açma zamanı, uygulama adı vb. Elde edebilirim, ancak istemci işletim sistemi kullanıcı adı bulamadı.

CREATE TRIGGER DB_ServerLogon 
ON ALL SERVER 
WITH EXECUTE AS 'sa' 
FOR LOGON 
AS 
BEGIN 
    INSERT INTO audit_history.dbo.db_logon_history 
     SELECT 
      ORIGINAL_DB_NAME(), 
      ORIGINAL_LOGIN(), 
      @@SPID,GETDATE(), 
      HOST_NAME(), 
      APP_NAME() 
END 
GO 

Çok teşekkürler!

- '' EXECUTE AS 'olarak' 'eklendi, aksi takdirde db_logon_history öğesine erişimi olmayan tüm kullanıcılar giriş yapamazlar.

+2

SQL Server'da oturum açtığınızda, bir etki alanı hesabıyla oturum açmıyorsunuz ve etki alanı hesabı SQL Server'a aktarılmıyor. Herhangi bir cihazla giriş yapabilirsiniz. Güvenilir güvenliği kullanırken istemci ayrıntılarını SQL Server'a iletmek isterseniz, bunu ön uçtan bir parametre olarak iletmeniz gerekir. yani saklanmış prosedürü veya benzerlerini kullanmak. Bu arada iyi bir soru. ve iyi sordu. – cameront

cevap

0

Kısa cevap hayır, bu mümkün değil.

Uzun yanıt, SQL Server 2 güvenlik modunu destekler. Bunlar a) "Windows Authenitcation modu" ve b) "Karışık Mod" - "SQL Server ve Windows Kimlik Doğrulama Modu" dır. Bu ikinci mod, bir SQL Server oturumu veya bir Windows Hesabı ile giriş yapabileceğiniz anlamına gelir. Windows Hesabı, yukarıdaki (a) ile aynı olacaktır. Şimdi Windows ile oturum açtığınızda güvenilir bir bağlantıdır, bu nedenle Windows Server/Server'a SQL Server örneğinize erişmeye yetkili olmanız gerekir. Bağlantı, kullanıcı pencerede oturum açtığında oluşturulan bir jetona karşı kimlik doğrulamasıdır. Bu simge, SQL Server'a geçirilir ve böylece yukarıda açıkladığınız bilgileri döndürmek için ayrıştırılabilir. Ancak, SQL Server Mode ile oturum açtığınızda, bir etki alanı hesabıyla oturum açmazsınız ve bu nedenle SQL Server'a hiçbir etki alanı hesabı aktarılmaz. Bunun yerine, sunucu bağlamında çalışan bir SQL Server yerel hesabıyla oturum açın. Şimdi, sadece bir windows istemcisi değil, herhangi bir cihazla giriş yapabilirsiniz. SQL Server modunu kullanırken istemci ayrıntılarını SQL Server'a iletmek isterseniz, bunu ön uçtan bir parametre olarak iletmeniz gerekir. saklanmış bir prosedür veya benzerleri kullanarak. (Bu arada iyi soru. Ve iyi sorulan sorular.)

İlgili konular