Forum

SQL Server Managmen...
 
Bildirimler
Hepsini Temizle

SQL Server Managment Studio Login Engelleme

9 Yazılar
5 Üyeler
0 Likes
1,576 Görüntüleme
(@MustafaDOGRU)
Gönderiler: 81
Estimable Member
Konu başlatıcı
 

Arkadaşlar Günaydın,

Tüm ÇözümPark ailesine iyi bir hafta güzel bir gün dilerim,

işletmemizde kullandığımız MPR Programı için tüm kullanıcılar SQL'e "windows authentication mode" ile login olmaktadırlar,

ancak bu durum aynı zamanda SQL Managment Studio login olmasını da sağlamakta,

 

Amacım Kullanıcı Kullandığı MRP/ERP için SQL Server Login olmaya devam edebilsin, ancak Managment Studio oturum açamasın,

Windows authentication mode ile bu konuda bilgisi olan var mı ?

 

iyi çalışmalar,

 

 
Gönderildi : 05/02/2018 12:16

(@resulsoydas)
Gönderiler: 1623
Noble Member
 

Kullanıcıların bilgisayarında Managment Studio'nun olması mı gerekiyor? Bunu zaten kullanmayacaklarsa uninstall edin gitsin.

 
Gönderildi : 05/02/2018 14:10

(@MustafaDOGRU)
Gönderiler: 81
Estimable Member
Konu başlatıcı
 

Üstad araştırdığımda bu şekilde örnek trigger mevcut,

eğer mümkünse doğrulayabildiğiniz bir script paylaşabilir misiniz,

 
Gönderildi : 05/02/2018 17:13

(@MustafaDOGRU)
Gönderiler: 81
Estimable Member
Konu başlatıcı
 

Merhaba Arakdaşlar bu konuda 1-2 trigger oluşturup denedim ama istediğim sonucu vermedi,

önerisi yada fikri olan varmıdır ?

selamlar,

Örnek

USE [master]
GO

/*** Object:  DdlTrigger [TR_LOGON_APP]    Script Date: 9.02.2018 10:16:44 ***/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = 'sa'
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   
   IF ORIGINAL_LOGIN() IN('YOUR_APP_LOGIN_NAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;
GO

DISABLE TRIGGER [TR_LOGON_APP] ON ALL SERVER
GO

 
Gönderildi : 09/02/2018 13:17

(@cenkercetin)
Gönderiler: 400
Illustrious Member Yönetici
 

Bir de şu şekilde kullanıp sonucu iletir misiniz?

 

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER 
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name, 
      @host_name = host_name
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid


   IF ORIGINAL_LOGIN() IN('YOUR_APP_LOGIN_NAME') 
      AND @program_name LIKE '%Management%Studio%' 
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;

 

Merhaba Arakdaşlar bu konuda 1-2 trigger oluşturup denedim ama istediğim sonucu vermedi,

önerisi yada fikri olan varmıdır ?

selamlar,

Örnek

USE [master]
GO

/*** Object:  DdlTrigger [TR_LOGON_APP]    Script Date: 9.02.2018 10:16:44 ***/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = 'sa'
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   
   IF ORIGINAL_LOGIN() IN('YOUR_APP_LOGIN_NAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;
GO

DISABLE TRIGGER [TR_LOGON_APP] ON ALL SERVER
GO

 

Cenker Çetin

Dijital Dönüşüm Danışmanı

 
Gönderildi : 09/02/2018 14:05

(@MustafaDOGRU)
Gönderiler: 81
Estimable Member
Konu başlatıcı
 

Hocam Merhaba,

aşağıdaki gibi kırmızıya boyadığım alanı güncelleyerek domain\username belirterek denedim olmadı,

SQL'de kendi oluşturduğum bir kullanıcıyı denedim oda olmadı,

 

 

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = host_name
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   IF ORIGINAL_LOGIN() IN('DOMAINNAME\USERNAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;

 
Gönderildi : 09/02/2018 19:35

(@cenkercetin)
Gönderiler: 400
Illustrious Member Yönetici
 

Aldığın hatayı paylaşabilir misin? log da olur.

Hocam Merhaba,

aşağıdaki gibi kırmızıya boyadığım alanı güncelleyerek domain\username belirterek denedim olmadı,

SQL'de kendi oluşturduğum bir kullanıcıyı denedim oda olmadı,

 

 

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = host_name
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   IF ORIGINAL_LOGIN() IN('DOMAINNAME\USERNAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;

Cenker Çetin

Dijital Dönüşüm Danışmanı

 
Gönderildi : 12/02/2018 14:40

(@erensametcunbul)
Gönderiler: 52
Trusted Member
 

https://stackoverflow.com/questions/7048923/cannot-login-to-sql-server-due-logon-trigger  burada detaylı bir anlatım mevcut. Ayrıca  Domain user yerine Current_User'da kullanabilirsiniz.

 
Gönderildi : 13/02/2018 18:17

(@Orhanfidanci)
Gönderiler: 3
Active Member
 

merhaba aşağıda kendi kullandığım trigger var bunu da deneyebilirsiniz

 

CREATE trigger [giris_kontrol] on all server with execute as 'sa'
for logon
as
begin
if (
--ORIGINAL_LOGIN()!='sa'
ORIGINAL_LOGIN() NOT IN ('sa', 'NT AUTHORITY\SYSTEM')
--AND APP_NAME() LIKE 'Microsoft SQL Server Management Studio%'
)
begin
rollback;
end
end

 
Gönderildi : 05/03/2018 15:07

Paylaş: