如何防止其他应用程序连接到SQL Server?

时间:2012-09-05 12:32:56

标签: sql-server sql-server-2012-express

我有一个Delphi应用程序通过ADO组件连接到远程SQL Server。

如何允许我的应用程序访问SQL Server 2012,并且应该抛弃任何其他尝试连接的应用程序?

3 个答案:

答案 0 :(得分:3)

问题是连接到SQL Server的所有内容都是通过ConnectionString完成的。

如果你真的想要,你可以拦截那些,并使用它们伪造成另一个应用程序。

只要应用程序不能以某种方式使用数字签名进行连接,就无法强制执行您想要的操作。

答案 1 :(得分:2)

您应该使用Logon trigger并在此触发器中将APP_NAME()与包含您的应用程序名称的常量进行比较。如果它们不同,请执行ROLLBACK

答案 2 :(得分:0)

您可以使用Application Role的SQL Server。

对我来说,使用Logon Trigger锁定整个SQL Server是没有意义的。可能有其他数据库,它也应该是免费的,例如SQL Agent或Management Studio或更新程序...

如果要控制对数据库的访问 - 请使用用户和应用程序角色。通过App。您应该从已编译的代码中调用一个存储过程的角色,并且您可以执行的所有操作都将由Application Role定义。如果禁用其他角色和用户的访问权限,则任何人都无法访问您的数据库......其他数据库也可以配置为不向其他用户/角色授予权限。

它更有意义,连接字符串没有问题,并且对其他任务也很灵活。

对不起我的英语,这不是我的母语。