The 'DbProviderFactories' section can only appear once per config file when running SQL Server 2012 Import Export 64 - sql

I fixed this in the machine.config files of both .net frameworks but I'm still getting the same error, thanks.

If you open SSMS (Sql Server Management Studio), then open Task Manager you'll notice even if your windows server is 2012 and 64 bit, and your SQL installation is 64 bit, SSMS is a 32bit application.
You most likely did what did and updated the machine.config in the following directory which is for the 64bit .NET Framework:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
you should also update the 32bit framework config:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
Fixing the first will fix SSIS packages running as scheduled jobs which may be using an ADO.NET connection because at that point SQL Agent is running it in a 64bit setting, but running the package through the import export wizard will run in 32bit mode. I also experienced the same error when selecting Edit Top 200 rows through the object explorer.

Related

Restore older DTExec.exe version?

We have SSMS 2012 installed on several servers (mix of physical and virtual hardwares) with the 64-bit DTExec.exe Version 11.0.2100.60 that we use to run SSIS packages. The SSIS packages are stored in a Microsoft SQL Server 2016 on another physical server.
On one of the SSMS 2012 servers, I installed SQL Server Data Tools for VS2017. Since then, one of our SSIS packages would not run to completion. It aborts about halfway, specifically, when it is about to run (or already running?) the script component of the package. When it aborts, %ERRORLEVEL% is set to a high negative number (-1073741819). I make sure the 64-bit DTExec.exe Version 11.0.2100.60 is the one being used to run the package by putting its path, C:\Program Files\Microsoft SQL Server\110\DTS\Binn, ahead of any other versions’ paths in the PATH environment variable. (It also shows “64-bit” and the version number inside the DOS box where the package is running.)
If I run the same failing package from another SSMS 2012 server using its local copy of the same 64-bit DTExec.exe 11.0.2100.60, the package runs fine. So I suspect the 64-bit DTExec.exe 11.0.2100.60 on the server where I installed SSDT 2017 somehow got “corrupted” (?).
I have uninstalled SSDT 2017 but still the package fails.
Curiously, if I use the 32-bit version instead of DTExec.exe with the same version 11.0.2100.60, the package runs fine. So all the more reason for me to suspect that the 64-bit DTExec.exe version was “corrupted”.
Is there any way to “repair” the 64-bit DTExec.exe Version 11.0.2100.60 to restore it to its former glory? I realize we can just use the 32-bit version but we’d like to use the same version of DTExec.exe across all our SSMS 2012 servers so they all share identical PATH environment variables, .BAT files, etc..
Any leads appreciated – thank you!
EDIT: I'd also like to add that before failing, a DOS window pops up then very quickly closes. The DOS window seems blank but it could be that it just closes very fast for me to see. On other SSMS servers where the packages runs to completion, no DOS window pops up.

Unexpected Termination when loading data from excel using ssis

I have SSIS package which simply loads data from excel using microsoft.ace.oledb. 12.0 driver to a sql server table.
The excel file size is 4.5mb
It is running fine locally.
When I delploy and run using Sql Server Agent in development enviroment, the job is failing with status 'Unexpected Termination'(after post validation and on information). I am not able to troubleshoot as there is no error message.
Please note development enviroment is exact image copy of my local.
This is only occurring for large excel files.
Make sure Microsoft Access Database Engine 2010 Redistributable https://www.microsoft.com/en-gb/download/details.aspx?id=13255 is installed on the server the SSIS package is running on so microsoft.ace.oledb. 12.0 is available. Be sure you choose the right version 64 vs 32 bit depending on how you run the package. Its probably x64 but unless you've explicitly set it to be x32.

Get rid of exception 0x80040154 , generated while trying to execute a SSIS package on MS SQL 2008 R2 [duplicate]

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Exception 0x80040154 generated while executing a simple ssis package in MS SQL 2008R2 enviornment
I am trying to execute a simple SSIS package on MS SQL 2008 R2.
I am reading a flat source file, sorting the data based on the ID and write the results in a new flat source file destination.
But when I execute, I get following exception:
TITLE: Microsoft Visual Studio
Failed to start project
ADDITIONAL INFORMATION:
Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) (Microsoft.DataTransformationServices.VsIntegration)
How do I proceed from here?
A lot of forums ask to reinstall MS SQL environment but I am not sure if this is the only way to get rid of the exception.
Any better or alternate ways to get rid of this exception?
Thanks.
Try this:
The most common reason for this error message is running a 32 bit dtExec on a 64-bit machine. This post will explain it properly - Quick Reference SSIS in 32- and 64-bits.
Edit: Cached Google link of the article:
http://webcache.googleusercontent.com/search?q=cache:FQN0QKQCleEJ:toddmcdermid.blogspot.com/2009/10/quick-reference-ssis-in-32-and-64-bits.html+&cd=1&hl=en&ct=clnk&gl=au#!http://toddmcdermid.blogspot.com/2009/10/quick-reference-ssis-in-32-and-64-bits.html
There are quite a few misconceptions flying about out there regarding SQL Server Integration Services and 64 bitness. I've had to set more than a few people on the right path in the forums - mostly on one particular setting inside the SSIS packages that is getting misinterpreted. Of course, this information only applies to 64-bit architectures - if you are running a Windows 32-bit OS, you have no choice - your packages will always run in 32-bit mode.
Why would you want to run in 32-bit mode if you have a 64-bit system? Drivers, mostly. I'm not referring to hardware drivers, but data providers. As an example, Excel and some versions of Oracle don't have 64-bit providers. So for the ever-increasing base of 64-bit users, here's the skinny on executing Integration Services packages in your choice of 64-bit or 32-bit mode.
Background
I Can Design Fine, Why Won't It Run?
A little background to start. Business Intelligence Design Studio (BIDS) is a 32-bit application. When you're designing your package, you're using 32-bit facilities - and have no choice in the matter. When you execute your package using DTExec, you have the option of 32-bit or 64-bit operation - but the default on a 64-bit installation is to use 64-bit mode (obviously). However, some commonly used objects in SSIS don't have 64-bit counterparts, and will therefore cause your packages to fail.
Unfortunately, it usually doesn't say anywhere in these messages that the fault lies with 32 vs 64 bits. It's usually something like:
0x80040154 ... Class Not Registered
The AcquireConnection method call to the connection manager XXX failed with error code 0xC0202009
0xC00F9304 ... SSIS Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED
The OLE DB provider "Microsoft.Jet.OLEDB.4.0" has not been registered
(I include those sample errors here in the hope that those searching the web may find this article!)
Why Do I Want 32-bit Mode?
The most common reason to want 32-bit mode in an executing SSIS package is the Excel Provider. It's currently not available for 64 bits, and will cause your package to crash. (Office 14 (2010) is reported to have 64-bit support - even though it's not supported side-by-side with 32-bit.) This applies to the other Office providers as well - Access, specifically - and to several other third party drivers and providers (like Oracle). They simply will not work in a 64-bit environment (pre-2010). You may also wish to run Execute DTS 2000 Package Tasks - and those can only run in 32-bit mode as well.
It Depends How You're Executing Your Package
There are many ways to execute an SSIS package - and this is the primary determiner of whether you're running it in 64-bit or 32-bit mode. So pick your execution environment from the list below, and read up on how to force the bitness you desire.
Choosing Bitness Inside Business Intelligence Development Studio (BIDS)
If you're running your package inside BIDS, the setup is simple unless you're using the Execute Package Task or Execute Process Task to run child packages.
The package you currently have open will (by default) run in 64 bit mode. The setting that controls this is a property on the project called Run64BitRuntime. To access this property, right-click on the Integration Services project in your solution explorer and select Properties. Then select the Debugging node in the editor. The default here is "true", which means all the packages in this project will run in 64-bit mode. If you change this to "false", all the packages will be run in 32-bit mode.
Special Note: Execute Package Task
Any child packages executed via the Execute Package Task will run in the same mode as the parent, regardless of the Run64BitRuntime setting of the project that the child package belongs to, regardless of the setting of ExecuteOutOfProcess. This means that even if your child package has Run64BitRuntime set to false in the project you designed it in, it will be executed in 64-bit mode within BIDS if your parent package's Run64BitRuntime property is true.
Special Note: Execute Process Task
The Execute Process Task can allow you to choose 32-bit mode independently of the settings in the parent package, at the expense of running the child package in another process. As with the SQL Agent methods described later, you can specifically identify the 32-bit DTExec to run SSIS child packages in 32-bit mode (see below).
Choosing Bitness With SQL Agent
Instructing SQL Agent what environment you want your packages to run in is simple in Integration Services 2008. SSIS 2005 makes you jump through a few more hoops.
Integration Services 2008
In the Agent Job Step Properties, you'll be using the SQL Server Integration Services Package type of step. If you go to the Execution Options tab, you'll see an option to "Use 32 bit runtime" down at the bottom.
Integration Services 2005
With SQL 2005, you can not use the Integration Services Package type of job step to run an SSIS package in 32-bit mode. Your recourse is to use the Operating System type of job step, and refer to the 32-bit version of DTExec specifically in the command line that you use, and manually specify arguments to DTExec.
Hurdle #1 - Finding the 32-bit DTExec
Finding the executable shouldn't be difficult. In a standard 64-bit installation, the 32-bit DTExec.EXE should be located in the "\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn" folder. It's plainly called "DTExec.EXE", and doesn't identify itself in any way as a 32-bit app - you'll have to "know" it is by it being located in the 32-bit folder. (Or you could try to execute it and watch Task Manager.) If you've installed SQL to a non-standard location, you may have to hunt a little. If you can't find it at all, you may not have installed the 32-bit components on your 64-bit machine. During the install of SQL Server, if you only selected "Integration Services" and didn't install "Business Intelligence Development Studio" OR "Management Tools - Complete", then you won't have the 32-bit DTExec installed. You'll have to run SQL Setup, and install one of those options.
Hurdle #2 - Determining the Command Line Arguments
Next, you need to determine the command line parameters you need to operate DTExec from the command line. You could read through the documentation and attempt to determine the arguments and settings by yourself, but I would recommend you use the power of the included GUI tools. Both the IS Job Step in SQL Agent, and the DTExecUI tool provide a GUI to configure an SSIS package run. On the last page of the GUI, it very helpfully places the exact command line arguments needed to run DTExec, based on all of the configuration options you've chosen on the ten or so other tabs of the GUI. Leverage that! Set up your package execution using the GUI, then copy the arguments off that last page.
Precompiled Scripts
This is only an issue in Integration Services 2005 - the dev team completely fixed this issue in SSIS 2008. There is a "Precompile" option on Script Tasks, which is set to "true" by default. If this has somehow been set to "false", your packages may not execute in a 64-bit environment.
32-bit ODBC Drivers
There is also one other oddity with using 32-bit ODBC drivers in Windows - at least in Server 2003, 2008, Vista, and Windows 7 64-bit OSes. The first step to using those drivers is to set up a DSN to handle storing the server name and other particulars. In my experience, the natural first place to start is by opening the "Data Sources" applet in the Control Panel. That's mistake #1 - because that applet only manages 64-bit drivers. You won't see yours listed at all. The next step is to poke around and realize that there's a "Data Sources (32-bit)" applet there in the Control Panel as well. That's mistake #2 - but not your mistake. In my experience, this icon leads to some odd hybrid 32/64 bit management utility. It definitely did NOT manage my 32-bit sources. If you fire it up, then look at the processes tab in Task Manager, you'll see a process labeled "odbcad32.exe"... but you'll notice that it doesn't have the "*32" after it denoting that it's a 32-bit app. Whatever it's attempting to manage, it's not the 32-bit ODBC drivers. What you need to do is navigate to another odbcad32.exe that's sitting in your SYSWOW64 folder. That ODBC data source administrator truly does manage 32-bit drivers, in a 32-bit process.
References/Resources
Most (if not all) of this information is also distilled in an MSDN article: 64-bit Considerations for Integration Services. If you find other useful articles, pointers, or mistakes in the above, please post a comment.
Some other very useful articles:
How To: Run a Package, MSDN
64-bit references within an SSIS Script Component by Michael Entin, Microsoft SSIS Dev.
64-bit Considerations for SQL Server Integration Services by Douglas Laudenschlager, Microsoft SSIS Dev.
Where is my app.config for SSIS? by Darren Green, SQL Server MVP.
Oracle Driver Configuration in a 64-bit environment by Rob Kerr
Importing data from 64-bit Excel in SSIS by Hrvoje Piasevoli
32- and 64-Bit Connectivity from the Same Machine by SQLCAT
Posted 18th October 2009 by Todd McDermid

Oracle client and networking components were not found

I created SSIS will do task like get data from oracle to sql server.i run ssis package run in my local system.it is working fine but i deployed ssis package in remote system and trying access from sql procedure. I'm getting error like below.
Oracle client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version on 7.3.3 or later client software installation.
Please let know if any solution there?
Simplest solution: The Oracle client is not installed on the remote server where the SSIS package is being executed.
Slightly less simple solution: The Oracle client is installed on the remote server, but in the wrong bit-count for the SSIS installation. For example, if the 64-bit Oracle client is installed but SSIS is being executed with the 32-bit dtexec executable, SSIS will not be able to find the Oracle client.
The solution in this case would be to install the 32-bit Oracle client side-by-side with the 64-bit client.
Technology used: Windows 7, UFT 32 bit, Data Source ODBC pointing out to 32 bit C:\Windows\System32\odbcad32.exe, Oracle client with both versions installed 32 bit and 64 bit.
What worked for me:
1.Start -> search for Edit the system environment variables
2.System Variables -> Edit Path
3.Place the path for Oracle client 32 bit in front of the path for Oracle Client 64 bit.
Ex:
C:\APP\ORACLE\product\11.2.0\client_32\bin;C:\APP\ORACLE\product\11.2.0\client_64\bin
1.Go to My Computer Properties
2.Then click on Advance setting.
3.Go to Environment variable
4.Set the path to
F:\oracle\product\10.2.0\db_2\perl\5.8.3\lib\MSWin32-x86;F:\oracle\product\10.2.0\db_2\perl\5.8.3\lib;F:\oracle\product\10.2.0\db_2\perl\5.8.3\lib\MSWin32-x86;F:\oracle\product\10.2.0\db_2\perl\site\5.8.3;F:\oracle\product\10.2.0\db_2\perl\site\5.8.3\lib;F:\oracle\product\10.2.0\db_2\sysman\admin\scripts;
change your drive and folder depending on your requirement...
After you install Oracle Client components on the remote server, restart SQL Server Agent from the PC Management Console or directly from Sql Server Management Studio. This will allow the service to load correctly the path to the Oracle components. Otherwise your package will work on design time but fail on run time.
In my case this was because a file named ociw32.dll had been placed in c:\windows\system32. This is however only allowed to exist in c:\oracle\11.2.0.3\bin.
Deleting the file from system32, which had been placed there by an installation of Crystal Reports, fixed this issue

XML Generation Error Installing SQL Server Express 2008 on Windows 8

Disclaimer: Yes, I know Windows 8 is a pre-release and things won't necessarily work. I still need to do this.
I'm trying to install SQL Server Express 2008 R2 on Windows 8 32-bit (via Virtual Box). When I run the installer, I get an error:
Database installer returned error code -2147024893 (The system cannot find the path specified.)
The web installer didn't work either. WPI's log file tells me:
DownloadManager Information: 0 : Install exit code for product 'SQL Server Express 2008 R2' is -2068774911
I tried running this in compatibility mode for Windows 7. I can run the installer, click through the setup screen, and finally I get this error:
There was an error generating the XML document.
Error code: 0x84B10001.
How do I get this working, or, how do I debug/triage this? I looked through the logs, but I'm not too sure what they said; it might've been a registry-write error. Running in admin mode just causes the installer to not load, or a nice BSOD:
The answer, ironically, is quite simple -- I was installing 32-bit SQL Server on a 32-bit Windows 8. Instead, I moved to installing a 64-bit SQL Server on a 64-bit Windows 8.
Problem solved.