【发布时间】:2012-09-05 12:32:55
【问题描述】:
我有一个 Delphi 应用程序通过 ADO 组件连接到远程 SQL Server。
我怎样才能只允许我的应用程序访问 SQL Server 2012 并且应该丢弃任何其他尝试连接的应用程序?
【问题讨论】:
标签: sql-server sql-server-2012-express
我有一个 Delphi 应用程序通过 ADO 组件连接到远程 SQL Server。
我怎样才能只允许我的应用程序访问 SQL Server 2012 并且应该丢弃任何其他尝试连接的应用程序?
【问题讨论】:
标签: sql-server sql-server-2012-express
问题是所有连接到 SQL Server 的东西都是通过 ConnectionString 来完成的。
如果你真的想要,你可以拦截这些,然后用它们伪装成另一个应用程序。
只要应用程序不能以一种方式或另一种方式使用数字签名进行连接,就无法强制执行您想要的。
【讨论】:
您应该使用Logon trigger 并在此触发器中将APP_NAME() 与包含您的应用程序名称的常量进行比较。如果不同,则执行ROLLBACK。
【讨论】:
您可以使用 SQL Server 的Application Role。
对我来说,用登录触发器锁定整个 SQL Server 是没有意义的。可能有其他数据库,它也应该是免费的,例如SQL 代理或用于 Management Studio 或用于更新程序...
如果您想控制对数据库的访问 - 使用用户和应用程序角色。按应用程序。角色你应该从你编译的代码中调用一个存储过程,并且你能做的所有事情都将由应用程序角色定义。如果您禁用其他角色和用户的访问权限,则没有人可以访问您的数据库......其他数据库也可以配置为不授予其他用户/角色权限。
它更有意义,连接字符串没有问题,并且可以灵活地用于其他任务。
对不起,我的英语不是我的母语。
【讨论】: