日期:2014-05-17  浏览次数:20527 次

如何限制只可程序远程连数据库而不能用SQL管理平台远程登录?
程序开发人员可在其本机通过数据库连接字符串从事开发工作,本机能编译运行程序,其已知道数据库地址和用户名、密码等。
现要限制其不能通过SQL管理平台远程登录来连上数据库,但某些权限大的用户可以通过SQL管理平台远程登录,该如何做呢?
试过用DDL登录触发器限制某些用户远程登录,但程序开发人员就不能在其本机编译运行程序了,郁闷中!

------解决方案--------------------
强制使用Windows身份验证,不过这个要求在域里面,不然很多事情要做,不过一般的公司都有自己的域。这个问题不大。然后把低权限的开发人员的Windows账号放入一个组,然后把这个组加到SQLServer里面,做一定的控制。然后把权限高的人的Windows账号放到另外一个组里面,同样做权限控制。

但是你的要求有点别扭,又要开发能连,又不能访问。除非连程序的账号都用Windows来控制。你是不是怕开发人员乱动东西?如果是这样,那加一个强制开发人员通过源代码管理工具,如vs的tfs来签出修改然后签入,这样不仅可以恢复,也可以找到是哪个人做得好事。这个比你挖空心思搞权限好的多。
------解决方案--------------------
研究master中表sysprocesses的内容,查看连接信息,钍对不能登录的spid不停的kill
------解决方案--------------------
使用Application Role,应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的权限来运行。 使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。 与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。
http://msdn.microsoft.com/zh-cn/library/ms190998.aspx