我有一个Delphi应用程序通过ADO组件连接到远程SQL Server。
如何允许仅我的应用程序访问SQL Server 2012,并且应该抛弃任何其他尝试连接的应用程序?
答案 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定义。如果禁用其他角色和用户的访问权限,则任何人都无法访问您的数据库......其他数据库也可以配置为不向其他用户/角色授予权限。
它更有意义,连接字符串没有问题,并且对其他任务也很灵活。
对不起我的英语,这不是我的母语。