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