You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2017配置SSIS包提示存在的参数myParm不存在如何解决

问题成因
  • SSISDB内置系统存储过程set_object_parameter_value默认通过WITH EXECUTE AS 'AllSchemaOwner'语句切换到内置用户AllSchemaOwner的上下文执行,内部所有查询的权限都继承自该用户,而非当前操作的myDomain\myAccount账号权限。
  • AllSchemaOwner用户的默认权限丢失:如果做过SSISDB迁移、权限批量回收、实例重装附加SSISDB等操作,会导致该用户对[catalog].[object_parameters]视图的行级访问权限不足,或是没有myFolder/myProject项目的读取权限,执行内部查询时返回空结果,就触发参数不存在的报错。
  • 你手动执行查询时使用的是myDomain\myAccount的权限,该账号已经拥有对应SSIS项目的操作权限,所以可以正常查询到参数记录,和存储过程内的执行上下文权限不一致是核心原因。
解决方案

临时应急方案

如果仅需临时修改参数完成上线,可暂时注释set_object_parameter_value存储过程内的WITH EXECUTE AS 'AllSchemaOwner'和EXECUTE AS CALLER两行代码。注意该修改属于系统存储过程改动,SQL Server版本升级、SSISDB补丁更新时修改会被覆盖,且存在安全风险,不建议长期使用。

永久修复方案(推荐)

方案1:修复AllSchemaOwner的内置权限

执行以下SQL补全SSISDB内置用户的默认权限:

USE SSISDB
GO
-- 授予AllSchemaOwner基础的目录对象访问权限
GRANT VIEW DEFINITION ON SCHEMA :: [catalog] TO [AllSchemaOwner]
GO
GRANT SELECT ON [catalog].[object_parameters] TO [AllSchemaOwner]
GO

如果是权限管控宽松的环境,也可以直接将该用户加入ssis_admin角色:

USE SSISDB
GO
ALTER ROLE [ssis_admin] ADD MEMBER [AllSchemaOwner]
GO

方案2:给操作账号授予对应权限

直接给你当前使用的myDomain\myAccount账号授予对应SSIS项目的操作权限,无需修改系统存储过程:

  1. 打开SSMS,展开集成服务目录 -> SSISDB -> 找到你的文件夹myFolder,右键选择属性 -> 权限
  2. 点击搜索,添加你的域账号myDomain\myAccount,授予读取对象、执行、修改权限,勾选将权限应用到该文件夹下的所有子对象后保存
  3. 权限配置完成后重新执行参数设置语句即可正常执行。

内容的提问来源于stack exchange,提问作者faujong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:27:00