How to make ssis excel data source task to not fail even when the file is open and being used by another user? - excel

I have an SSIS package that will read excel files from a shared network drive. I am using excel data source task.
In visual studio the task works fine even if the excel file is open and being used by another user.
When I deploy the package to the ssis catalog, and execute, the package fails when the file is open with someone.
Is there any way to make the excel task work even when the file is open?

By default the Excel provider controls this since it doesn't open a file in shared mode.
You can otherwise use a File System Task to copy the Excel file from a shared location to a private one and use it in your Data Flow.

Related

Having different Excel files in different sharepaths, if one file is updated can another will update automatically?

I have two Excel files one is in SharePoint and another is in network shared folder. If SharePoint Excel file updates(the numbers), automatically the network shared folder Excel file also needs to update. As the Excel files is in two different share paths. Is it possible to do that?
--excel file in SharePoint location.(Source File)
--excel file in network shared folder. (Destination file)
Here, the source file is in SharePoint and destination file in network shared folder, which needs to update automatically after the file in SharePoint got updates.
Please help me if that it is possible. Thanks!
Manyam,
One option to achieve this requirement by creating simple Power Automate flow.
Once the excel file is updated in SharePoint, you can send (replace) the file in Network shared folder.

Unable to Open Copied SharePoint Online File via SSIS

OK, so we have written a utility (using Graph API) to allow us to authenticate and access files on our internal SharePoint online sites, to replace previous on-premise WebDav access, and we are having issues with the online files after they have been copied.
In simple terms, using Graph API, the process takes a file path from SharePoint Online, authenticates with the site and if the user has access to the file, copies it to a defined location. This works exactly as it should and the relevant files are correctly copied to the new location. For on-premise files, the location remains unchanged. The online files are copied as we can't find a way to integrate Graph API into SSIS, so the files need to have any permissions removed by copying them somewhere else.
We have an existing SSIS process which previously read from a list of on-premise file locations and imports the data from each Excel file into a SQL database. This worked without issue until we updated the list to include the SharePoint Online copied files. The SSIS process runs under the context of a service account, which also has read/write access to has defined location, but when the SSIS task runs, it returns with the following error:
Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft Access Database Engine" Hresult: 0x80004005 Description: "Cannot update. Database or object is read-only.".
I've obviously searched for this error, and the only suggestions are to set IMEX=1 on the connection, which is already done, and to set DelayValidation = True, again this is already done.
The SSIS process should work the same for both the existing on-premise files as it does for the online ones, but for reasons unknown, the on-premise ones work as expected, but the online ones fail. The file isn't already open elsewhere, it's copied and then the SSIS process attempts to open it, but that's where it goes wrong. I can open the copied file without issue in Excel.
Is there something about SharePoint Online that leaves a lock on a file? Is there something we need to do using Graph API to release the copy from any links to SharePoint? Myself and my colleagues have all looked at this and can't figure out why the copied files don't open.
EDIT: Looking at the context of the SSIS error, it seems the ConnectionString is valid, as is the ExcelFilePath (which matches the Data Source in the former):
ConnectionString: Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\OUR_SERVER_NAME\ShareName_UAT$\Excel_Macro_Enabled_File.xlsm;Extended Properties="Excel 12.0 MACRO;HDR=NO";
ExcelFilePath: \\OUR_SERVER_NAME\ShareName_UAT$\Excel_Macro_Enabled_File.xlsm
Any ideas or advice gratefully received.
Thanks
Martin
Maybe it's related to Excel protection measures when the source file is originated from the internet?
Sometimes it helps if you open, save and close the file before reading it with ssis (https://stackoverflow.com/a/59865686/5605866)

How to open MS Access in Runtime using Excel VBA?

I'm struggling on how to open MS Access Runtime using VBA, from an Excel file.
You can open the full version of Access using CreateObject("Access.Application"), but that doesn't open Access in Runtime.
We only have Microsoft Access Runtime installed in some computers, because that's all we need to use the front-ends we've developed. So we need to open the accdb files using MS Access Runtime, but from Excel.
Any help is appreciated, thank you
You can use the Shell to open a file, as if you typed that command into window's command prompt.
d = Shell("pathToFile\Database1.accdb /runtime", vbNormalFocus)
Another option you could use to open in the file in runtime (if someone opens it from the folder or through some other method without the /runtime switch) would be to change the file extension to .accdr. This will always force runtime.

Transfer data into sharepoint using ssis

Is it possible to transfer data from SSIS to SharePoint and place the csv in a sharepoint list.
I have tried automating this with ssis and for some reason when I execute the package under a scheduled task the package will not run....
If i create a scheduled task and run dtexec (and the package path) this will not run under the scheduled task but it will run if i am using a .bat file and enter the same command script.. I am using creds that have access to the sharepoint site. It seems that there is just no way to automate placing csv files onto sharepoint.
http://social.msdn.microsoft.com/Forums/en/sharepoint2010programming/thread/905fd9fb-ae70-4335-9628-d28d040f0bdc
http://social.msdn.microsoft.com/Forums/en/sharepointdevelopment/thread/d59bbc46-27b4-468e-9ed6-70435200bef2
Although I haven't had the need to use it in a production environment yet, I'm sure this custom component will suit your needs :)
http://ssisctc.codeplex.com/wikipage?title=SharePoint List Destination&referringTitle=Home

Importing Multiple Tables from Excel Using SSIS 2008 - Exclusivity

I'm writing a SSRS report that is the direct result of a SSIS package.
It is my understanding that SSIS must have exclusive access to Excel files for import. Is there any way around this?
If I can't read what was there as of the last save, can I at least send an e-mail notifying the user of the failure? How do I catch that error?
This seems like a limitation of the Jet connection engine and Excel, by default, opens files in exclusive access mode. If there is only one or two people using the file, then you may be able to have them open the file in shared access mode to avoid this error. Or, since this is ultimately a Jet database engine connection, you might be able to specify in your connection string that you open it in Mode=Read.

Resources