首页 > 解决方案 > 除非登录在特定的 AD 组中,否则如何创建触发器以阻止某些程序名称?

问题描述

我需要能够阻止 Microsoft Office 应用程序连接到我的 SQL 数据库,除非使用的登录名是特定 AD 组的一部分。

只有所述 AD 组中的人员才能使用任何 Office 应用程序连接到数据库。这甚至可能吗?

SQL Server 2012 企业版。

我知道它们是为整个服务器配置的,但我正在考虑创建一个触发器。我创建了一个与 AD 用户一起不断更新的表,并创建了以下联接。我需要的是让这个查询返回的每个人都能使用他们想要的 Office 应用程序访问数据库,而没有返回的每个人都被拒绝。

SELECT A.LOGIN_NAME, A.PROGRAM_NAME, B.LOGIN NAME
FROM sys.dm_exec_sessions A
JOIN AD_Group_Members B ON A.login_name = B.LOGIN NAME
WHERE session_id = @@SPID
  AND program_name IN (N'2007 Microsoft Office system', N'Microsoft Office', N'Microsoft Office 2016', N'Microsoft Office 2013', N'Microsoft® Mashup Runtime')

我无法对此进行测试,因为我无法获得足够的测试环境:/

那么,这行得通吗?有没有更好的方法来执行此操作?

我知道如何编写触发器,我只是在寻找正确的部分,因为我不想阻止生产盒上的错误连接。

标签: sql-servertsqltriggers

解决方案


推荐阅读