批处理文件在手动完成时成功执行SSIS包,但在使用Windows任务计划程序执行时失败

时间:2014-06-06 15:37:44

标签: sql sql-server batch-file ssis scheduled-tasks

我有一个执行SSIS包的批处理文件,此SSIS包从服务器(z:unit)中的Access数据库获取数据。然后将数据传递给SQL Server。当我手动(双击)或在命令行上执行批处理文件时,它工作正常。

但是我希望在Windows 7的任务计划程序中安排此批处理文件。我可以创建任务但是当它与任务计划程序一起执行时它会失败。我的批处理文件如下:

DTEXEC /FILE "F:\Projects\Complains\SSIS Complains\Get_Complains.dtsx" /DECRYPT XXXXX /CHECKPOINTING OFF  /REPORTING EWCDI >F:\Logs\Log_Get_Complains.txt

我得到的错误信息如下:

  

Utilidad de ejecuci¢de de paquetes de Microsoft(R)SQL Server Versi¢n   10.0.1600.22 para 32 bits版权所有(C)Microsoft Corp 1984-2005。 Reservados todos los derechos。

     

Iniciado:09:37:29 a.m. Informaci¢n:2014-06-06 09:37:29.48 C¢digo:   0x4004300A Origen:Tarea Flujo de datos SSIS.Pipeline
  Descripci¢n:Se est iniciando la fase de validaci¢n。 Fin de   informaci¢n错误:2014-06-06 09:37:30.25 C¢digo:0xC0047062
  Origen:Tarea Flujo de datos Origen de ADO NET 1 [1433]
  Descripci¢n:System.Data.Odbc.OdbcException:ERROR [HY024]   [微软] [Controlador ODBC Microsoft Access]'(desconocido)'没有es   una ruta de acceso v lida。 Aseg£rese de que la ruta est escrita   correctamente y que est conectado al servidor donde se encuentra el   档案馆。错误[IM006] [微软] [Administrador de controladores   ODBC]错误de SQLSetConnectAttr del controlador错误[HY024]   [微软] [Controlador ODBC Microsoft Access]'(desconocido)'没有es   una ruta de acceso v lida。 Aseg£rese de que la ruta est escrita   correctamente y que est conectado al servidor donde se encuentra el   档案馆。 en System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle   hrHandle,RetCode retcode)en   System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection连接,   OdbcConnectionString constr,OdbcEnvironmentHandle environmentHandle)   en System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection   outerConnection,OdbcConnectionString connectionOptions)zh   System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions   options,Object poolGroupProviderInfo,DbConnectionPool池,   DbConnection owningObject)en   System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(的DbConnection   owningConnection,DbConnectionPoolGroup poolGroup)en   System.Data.ProviderBase.DbConnectionFactory.GetConnection(的DbConnection   owningConnection)en   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(的DbConnection   outerConnection,DbConnectionFactory connectionFactory)en   System.Data.Odbc.OdbcConnection.Open()zh   Microsoft.SqlServer.Dts.Runtime.ManagedHelper.GetManagedConnection(字符串   assemblyQualifiedName,String connStr,Object transaction)en   Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManager100.AcquireConnection(对象   pTransaction)en   Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.AcquireConnections(对象   交易)en   Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostAcquireConnections(IDTSManagedComponentWrapper100   包装器,对象事务)Fin de error错误:2014-06-06   09:37:30.25 C¢digo:0xC0047017 Origen:Tarea Flujo de datos   SSIS.Pipeline Descripci¢n:错误en la validaci¢n de componente   “Origen de ADO NET 1”(1433); se devolvi¢el c¢digo de error   0x80131937。 Fin de error错误:2014-06-06 09:37:30.25 C¢digo:   0xC004700C Origen:Tarea Flujo de datos SSIS.Pipeline
  Descripci¢n:错误的有效成分uno o m s componentes。 Fin de error   错误:2014-06-06 09:37:30.25 C¢digo:0xC0024107 Origen:Tarea   Flujo de datos Descripci¢n:Se produjeron errores al validar la   利亚。 Fin de error DTExec:la ejecuci¢n del paquete devolvi¢   DTSER_FAILURE(1)。 Iniciado:上午09:37:29 Finalizado:上午09:37:30   Transcurrido:1.077 segundos

我知道这是西班牙语,但我希望这不会成为问题。

我知道错误几乎解释了自己,它无法找到或连接到Access ODBC,因为它无法根据第一个错误代码对其进行验证:

  

0x4004300A

我已经在Microsoft支持页面上检查了此错误代码,并将ValidateExternalMetadata属性更改为False,但它没有执行任何操作。其他错误是从第一个错误中衍生出来的。

我已经检查了ODBC数据源管理员(odbcad32.exe)中的ODBC以查看驱动程序是否在系统DSN中,并且它们是,用户DSN中没有驱动程序,我还检查了它们是否是32位,他们是,这里的一切都运行ant 32.所以,根据我的理解,不应该有任何权限问题,因为所有的ODBC都在系统DSN中。

在Task Scheduler中,我创建了以SYSTEM身份运行的任务,调度程序中的所有任务都以SYSTEM身份运行,并赋予它最高权限。

所以,如果有人能帮助我,我会很感激。

1 个答案:

答案 0 :(得分:1)

我谨慎地依靠连接管理器中的Windows凭据,这些凭据在手动运行时可用,但在任务调度程序运行时却不可用。

您可能会更好地将程序包部署到SQL Server并运行SQL作业,我不确定是否有更简单的解决方法,我认为即使这样,您也需要创建{{3 }}

在此处逐步找到:SQL Server Agent Proxy