Forum
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,
Kullanıcıların bilgisayarında Managment Studio'nun olması mı gerekiyor? Bunu zaten kullanmayacaklarsa uninstall edin gitsin.
Üstad araştırdığımda bu şekilde örnek trigger mevcut,
eğer mümkünse doğrulayabildiğiniz bir script paylaşabilir misiniz,
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
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
GOSET QUOTED_IDENTIFIER ON
GOCREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGINDECLARE @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;
GODISABLE TRIGGER [TR_LOGON_APP] ON ALL SERVER
GO
Cenker Çetin
Dijital Dönüşüm Danışmanı
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;
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
BEGINDECLARE @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 = @@spidIF 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ı
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.
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