sql >> Base de Datos >  >> RDS >> Sqlserver

Error de conexión de SSIS:el nombre del archivo no es válido

Con base en la información presentada, usted está haciendo todo correctamente. Si es nuevo en SSIS, una cosa que le sugiero es que obtenga una copia del excelente complemento BIDSHelper . Tiene excelentes funciones que realmente pueden ahorrarle tiempo, especialmente en lo que respecta a configuraciones y expresiones.

Creé un paquete de referencia que tenía un administrador de conexiones de Excel que apuntaba a C:\ssisdata\so_paulsmithjr.xls y cableado todo.

En este punto, sé que las cosas están funcionando, así que era hora de mover el paquete. Creé las siguientes variables y sus valores

  • Archivo actual - C:\ssisdata\so_paulsmithjr.xls
  • Marcador de posición - ##FILE_PATH##
  • TemplateConnection - Provider=Microsoft.Jet.OLEDB.4.0;Data Source=##FILE_PATH##;Extended Properties="Excel 8.0;HDR=YES";

Se configura una cuarta variable para que sea una expresión (haga clic con el botón derecho en la variable, ventana de propiedades. Establezca Evaluar como Expresión =Verdadero y la expresión está debajo)

  • ConexiónActual - REPLACE(@[User::TemplateConnection], @[User::PlaceHolder], @[User::CurrentFile])

Comparé el valor de CurrentConnection con ReferenceConnection (que es el valor original de la cadena de conexión de Excel Connection Manager) y las cosas coincidieron. En este punto, si tuviera que cambiar el valor de CurrentFile a C:\ssisdata\so_paulsmithjr - Copy.xls, eso se reflejaría automáticamente en el valor de CurrentConnection.

El truco final sería usar una Expresión en el Administrador de conexiones de Excel. Nuevamente, haga clic con el botón derecho en el CM y, en Propiedades, habrá Expresiones. No se expandirá ya que no hay nada debajo. En su lugar, haga clic en los puntos suspensivos y luego seleccione la propiedad ConnectionString y seleccione los puntos suspensivos nuevamente y esta vez arrastre hacia abajo @[User::CurrentFile] variable. Haga clic en Aceptar x2 y ahora su administrador de conexión está configurado para usarse donde lo especifique la variable CurrentConnection.

¿Funciona mejor?