0

我在使用 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 上进行进一步的写访问?

4

0 回答 0