我在使用 SQL Server 2008 的 Delphi 10 Seattle 上遇到了奇怪的安全结果。
我需要只读数据库访问权限,因此设置了专用的 r/o 用户;TADOConnection 中的 ADO 连接字符串使用其凭据。测试查询
select system_user
显示其用户名。
T-SQL 代码如下所示:
select SValue
from Table
where SValue = '1';
update Table
set SValue = '1';
在 SQL Server Management Studio 中,如果我使用 r/o 用户登录,此代码会显示错误。当我在 Delphi 中将此代码与 一起使用时TADOQuery.ExecSQL
,它还会显示带有 r/o 访问错误的异常。但是当我使用它时,TADOQuery.Open
它工作正常并成功更新了数据库。
这可能是导致这种行为的原因,以及我如何防止在 Open 上进行进一步的写访问?