【问题标题】:SQL2012 crashes out of sql agent step creation when i attempt to set the step type to SSIS package当我尝试将步骤类型设置为 SSIS 包时,SQL2012 在创建 sql 代理步骤时崩溃
【发布时间】:2016-06-14 11:36:34
【问题描述】:

我正在尝试在 SQL2012 服务器上设置新的 SQL 代理作业。在定义作业步骤类型 = SSIS 包时,sql 代理设置崩溃,我收到以下错误:

“”的类型初始化器抛出异常。 (SQLManagerUI) 附加信息:试图读取或写入受保护的内存。这通常表明其他内存已损坏。 (DTEParseMgd)

其他帖子建议唯一的解决方法是安装SQL2014或2016,或者返回SQL2008。这些选项对我们来说都是不可能的。

出于安全原因,我们必须远离 SQL2008。我们无法迁移到 SQL2014,因为我们使用 access adp 项目前端,需要 SQLOLEDB 数据提供程序,而 SQLOLEDB 数据提供程序在 SQL2014 中已过时。

有谁知道微软是否已经发布了 SQL2012 的服务补丁来永久修复这个问题?

【问题讨论】:

  • 您是否尝试过在没有 GUI 的情况下创建步骤?只是使用代码(你可能可以从sql2008安装复制步骤创建的代码)
  • 是的,您应该尝试使用脚本而不是 GUI,或者您可以尝试使用 Powershell 来创建作业,一些帮助 here

标签: ssis sql-server-2012


【解决方案1】:

该内存错误听起来像是服务器问题,但在您找到它之前,这里有一个解决方法:将作业步骤类型设置为“操作系统 (CmdExec)”,并使用 DTEXEC,例如:

DTExec /DTS "\<ssisPkgName>" /DECRYPT <pkgPass> /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 

请注意,如果 SSIS 包需要 32 位执行(例如,对于导出到 Excel 来说是这样),则通过完全限定它来使用“Program Files (x86)”中的 DTEXEC 实用程序。例如,SQL Server 应用程序安装在“E:”驱动器上,并且正在使用 SQL Server 2014:

E:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe" /DTS "\<ssisPkgName>" /DECRYPT <pkgPass> /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 

如果您的 SSIS 包在文件系统中(作为“.dtsx”文件),则将“/DTS”替换为“/FILE”。

如果您的 SSIS 包放置在 SSISDB 中(使用从 SQL Server 2012 开始可用的“项目部署模型”,而不是旧的“包部署模型”),则将“/DTS”替换为“/ISSERVER "

最后,考虑您的作业步骤的“运行方式”:如果您的作业步骤的“运行方式”已设置为代理,那么您已经将该代理设置为“活动”到子系统“SQL Server 集成服务包”。现在,要执行上述命令行,请检查该代理的属性,并确保它对子系统“操作系统(CmdExec)”也是“活动的”。 (如果您不使用代理,那么您可能需要为 SQL 作业代理添加“操作系统(CmdExec)”......但代理更利于安全:为什么将东西授予代理,您只会在特定情况下使用?)

(PS 附带的好处:通过以上内容,我发现从 SSIS 包中获取 logging 更容易。)

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多