当您更改TRUSTWORTHY
设置时,现有连接会立即接受此更改吗?
我的经验似乎表明现有连接不会立即兑现更改,但这似乎不对,所以我只想得到确认,这样我就知道我在处理什么。
不是在查询期间。我的意思是,如果您在 SSMS 中打开会话并且设置更改,那么您的下一个查询会受到同一会话中的更改的影响吗?
我不确定需要TRUSTWORTHY
为特定进程打开哪个数据库,所以我正在测试以查看。我在一个数据库中关闭了它,它仍然运行良好。然后我在另一个数据库中将其关闭,它仍然运行良好。然而,该过程稍后没有为另一个用户运行,所以我立即在两个数据库中重新打开它。我认为奇怪的是,在我开始在两个数据库中将其关闭后该过程成功运行,因为我几乎可以肯定必须打开一个数据库中的触发器才能写入另一个数据库中的表D b。
我正在尝试从 更改ON
为OFF
。
设置的更改
TRUSTWORTHY
确实很明显,至少在查询/语句之间,而会话仍处于活动状态。从ON
to的更改OFF
不会影响正在执行的查询(从OFF
to的更改ON
是无关紧要的,因为如果设置开始为OFF
并且这样的条件会产生错误,则查询永远不会开始),即使它有一个OUTER APPLY
将执行“外部" 表达式/对象多次。在再次检查设置之前允许执行查询完成。我已经测试了这两种情况,下面是对第一种情况(更明显和常见的情况)的测试。测试
清理
关于需要
TRUSTWORTHY
设置哪个数据库ON
以避免某些权限错误:TRUSTWORTHY
启用,如果TRUSTWORTHY
必须使用的话。这与跨数据库所有权链接不同,在跨数据库所有权链接中,当没有为实例上的所有数据库启用时,请求中涉及的所有数据库都需要DB_CHAINING
启用。关于理想(非
TRUSTWORTHY
基于)选项:ALTER
删除WITH EXECUTE AS...
子句的触发器INSERT
对正在写入的表的权限ALTER
使用触发器禁用的数据库 (A)TRUSTWORTHY