要求:
我有一个 SSIS 项目,它将在 SQL Server 中的数据上运行,可能使用集成身份验证登录到 SQL Server。该项目包括一个部分,允许最终用户添加选择查询作为一个数据流的源。(该产品允许用户在配置文件中添加数据分类和过滤类型规则)。
我希望用户提供的那些查询在具有只读访问权限的受限上下文中运行。一定不可能有人通过在他们的查询中 添加DELETE
或来破坏数据库。DROP
第一遍解决方案:
在数据库上创建一个只读用户,用于EXECUTE AS ... WITH NO REVERT
将查询的上下文限制为只读用户。不幸的是,这并不完全有效。SSIS 在数据源组件中使用预准备语句,WITH NO REVERT
SQL Server 不允许在预准备语句中使用。
问题:
有没有办法强制 SSIS 使用临时查询来代替 OLEDB 数据源组件中的准备好的语句?
或...是否有另一种方法可以强制 SSIS 更改数据源组件的执行上下文?
我还有另一个解决方案:使用脚本组件源。脚本组件可以通过多种方式设置用户上下文。