获取由代理队列激活的CLR存储过程以作为数据库所有者运行

时间:2013-04-29 14:29:36

标签: sql-server filesystems impersonation sqlclr service-broker

我正在尝试设置要从服务代理队列运行的CLR存储过程,以便CLR存储过程作为数据库所有者运行。

我已经尝试了各种组合,但如果没有以CLR存储过程中的用户(使用用户名和密码)身份登录,则无法使其正常工作。

CLR存储过程正在访问文件系统,我只希望它能够访问拥有该数据库的Windows用户所允许的文件夹。

1 个答案:

答案 0 :(得分:1)

如果不向Windows提供密码,您将永远无法访问SQL Server外部的资源。 EXECUTE AS仅在引擎内部受信任,Windows(因此文件系统)完全没有理由相信这种假冒假冒。

SQL中有一个特殊的构造可以在os级别上进行模拟:CREATE CREDENTIAL,但它们仅在将SQL登录映射到Windows登录时才起作用。因为在您的情况下,没有SQL登录开始,我不确定您是否可以获得SQL Server凭据。