4

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

如何允许我的应用程序访问 SQL Server 2012,而任何其他尝试连接的应用程序都应该被丢弃?

4

3 回答 3

3

问题是所有连接到 SQL Server 的东西都是通过 ConnectionString 来完成的。

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

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

于 2012-09-05T16:14:22.373 回答
2

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

于 2012-09-05T12:40:15.550 回答
0

您可以使用SQL Server 的应用程序角色

对我来说,用登录触发器锁定整个 SQL Server 是没有意义的。可能还有其他数据库,它也应该是免费的,例如 SQL 代理或 Management Studio 或更新程序......

如果您想控制对数据库的访问 - 使用用户和应用程序角色。按应用程序。角色你应该从你编译的代码中调用一个存储过程,并且你能做的所有事情都将由应用程序角色定义。如果您禁用其他角色和用户的访问权限,则没有人可以访问您的数据库......其他数据库也可以配置为不授予其他用户/角色权限。

它更有意义,连接字符串没有问题,并且可以灵活地用于其他任务。

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

于 2012-09-05T12:48:52.607 回答