通过触发器限制某些机器使用某个帐号登录

andy_liucj 2013-04-11 01:51:10

CREATE TRIGGER tr_Logon_CheckHostName
ON ALL SERVER
WITH EXECUTE AS 'Account'
FOR LOGON
AS
BEGIN
DECLARE @HostName NVARCHAR(50);
SET @HostName= host_name()

IF @HostName NOT IN ('xxxxxxxx','AAAAAAAA'.....)
BEGIN
ROLLBACK
END

END

想使用这样的方法来限制帐号Account在某几台机器上登录

请问这样做可以么?求高手指教
...全文
136 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevinLiu 2013-04-11
  • 打赏
  • 举报
回复
或者可以考虑IP屏蔽,比如你知道P1,P2的IP地址,在防火墙中设置这两个IP不能访问SQL SERVER就可以了。当然用你前面提到Trigger也是可以实现的,但是要做好测试。
andy_liucj 2013-04-11
  • 打赏
  • 举报
回复
比如有三个人P1, P2, P3,都知道 帐号 - AAAA 密码 - BBBB 现在想达到这样的目的: 帐号AAAA只能在PC1(P1的机器,帐号和机器绑定的)的机器上登录,这样其实也就只有P1能够登录 P2,P3都也就都不能登录了
發糞塗牆 2013-04-11
  • 打赏
  • 举报
回复
引用 5 楼 SQL77 的回复:
引用 4 楼 wufeng4552 的回复:SQL code ? 123 IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> 'IP'AND ORIGINAL_LOGIN()= 'Account'ROLLBACK 新东西啊.研究一下. ……
2008的,你这还用2000的就别想了
SQL77 2013-04-11
  • 打赏
  • 举报
回复
引用 4 楼 wufeng4552 的回复:
SQL code ? 123 IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> 'IP'AND ORIGINAL_LOGIN()= 'Account'ROLLBACK
新东西啊.研究一下.
水族杰纶 2013-04-11
  • 打赏
  • 举报
回复
IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> 'IP'
AND  ORIGINAL_LOGIN()= 'Account'
ROLLBACK
發糞塗牆 2013-04-11
  • 打赏
  • 举报
回复
没必要啊,你是控制账号还是机器啊?这个是直接拒绝某个登录账号登录到SQLServer
USE [master]
GO
DENY CONNECT SQL TO [test]
GO
ALTER LOGIN [test] DISABLE
GO
SQL77 2013-04-11
  • 打赏
  • 举报
回复
有账号限制权限不就可以了吗.
hyrongg 2013-04-11
  • 打赏
  • 举报
回复
用用户权限来控制就可以了,产品库不推荐这么做,

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧