SQLPackage not found in SQL Server on Linux - sql-server

I am trying to do dacpac deployment using SQLPackage on Linux.
My environment:
Server : Ubuntu Linux version 16.04
SQL Server 2017 latest release candidate version RC1.
SQL Server installation is successful and I am able to create tables on SQL Server database on Ubuntu. Now I am trying to implement dacpac deployment on Linux. As per this documentation
https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-export-import-with-sqlpackage
SQLPackage executable has to be at /opt/mssql/bin. But it is not. Any idea how to install SQLPackage on linux?
When I check the older version which is CTP 2.1 I have that SqlPackage executable. Is that missed in RC 1?

-Regarding temporary removal of sqlpackage from SQL Server 2017 package-
The goal is to offer customers the best CLI experience on Linux, macOS and Windows with a multi-os version of sqlpackage that uses DACFx APIs based on .NET Core.
As a stop-gap towards this goal, we offered an early preview version of the Windows-based sqlpackage in SQL2017 CTPs on Linux to seek customer feedback. We have removed this preview version of sqlpackage from SQL2017 RC1.
Work on the multi-os version of sqlpackage is in progress but I cannot share a release date at this time. Until then, you can use one or more of the alternatives below to import a dataset on each new run of your image:
1) restore an existing .bak file into the new image using the sqlcmd CLI tool.https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools
2) run sqlpackage on a Windows machine to work with SQL 2017 running in the new image.
3) generate a script with CREATE + INSERT statements for your database or specific tables. You can use SSMS’s Generate Script wizard on Windows or the new Python-based mssql-scripter CLI (public preview) to generate the script and check it into source control if you wish. Then, you can use the sqlcmd CLI tool to execute the script in your new image. For mssql-scripter installation instruction, please see README.md inhttps://github.com/Microsoft/sql-xplat-cli
Please send me an email at sanagama#microsoft.com if you have more questions or feedback and we'll be happy to help.

As mentioned by #Lin Leng-MSFT, sqlpackage has been removed from the installation package as of RC1. That said "SqlPackage can still be run against Linux remotely from Windows."

Related

SSIS Error "To run a SSIS package outside of SQL Server Data Tools you must install Standard Edition (64-bit) of Integration Services "

I am using Visual studio ultimate 2012, SQL Server 2017 and Sql Server Data tools 2012. I am working with windows 10 64 bit.
My package consists of script tasks(c#) and Sql commands and it runs successfully from SSDT, but while trying to run my package from CMD i am getting
To run a SSIS package outside of SQL Server Data Tools you must install Standard Edition (64-bit) of Integration Services.
If i make another empty package and try to run it then it runs successfully too.
Please help.
(1) Integration Services (Shared feature) installation
I think that the issue is that you have installed SQL Server Data Tools (SSDT) for Visual Studio but you didn't install the Integration Services (Shared feature) from the SQL Server Installation which is necessary to execute .dtsx packages outside of visual studio.
For more information check the following link:
SSIS Error – “To run a SSIS package outside of SQL Server Data Tools you must install…”
(2) Execute using dtexec(32-bit)
Another thing you can try is to execute package via 32-bit dtexec.
As mentioned in the following Microsoft Documentation:
On a 64-bit computer, Integration Services installs a 64-bit version of the dtexec utility (dtexec.exe). If you have to run certain packages in 32-bit mode, you will have to install the 32-bit version of the dtexec utility. To install the 32-bit version of the dtexec utility, you must select either Client Tools or Business Intelligence Development Studio during setup.
By default, a 64-bit computer that has both the 64-bit and 32-bit versions of an Integration Services command prompt utility installed will run the 32-bit version at the command prompt. The 32-bit version runs because the directory path for the 32-bit version appears in the PATH environment variable before the directory path for the 64-bit version. (Typically, the 32-bit directory path is :\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn, while the 64-bit directory path is :\Program Files\Microsoft SQL Server\100\DTS\Binn.)
More info at:
How to execute a package in 32-bit mode using dtexec.exe?
Also, similar issues was mentioned in other links, you can check them for more information:
SQL Server Central Forum - Run a SSIS package outside of SQL Server Data Tools you must install of Integration
Code Project - How To run a SSIS package outside of SQL Server Data Tools ?
MSDN - To run a SSIS package outside of SQL Server Data Tools you must install Standard Edition of Integration Services or higher
To run a SSIS package outside of SQL Server Data Tools you must install Move File to Archive of Integration Services or higher
SE DBA - Error: “To run a ssis package outside of sql server data tools you must install [send successful email] of Integration Services or higher.”
Adding to Hadi's answer, the change would be to use the right version which in my case was to use
C:\Program Files\Microsoft SQL Server\130\DTS\Binn>
Instead of
C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn>
I had the same error and my integration services of 2017 was installed, so the suggested solution was not relevant.
i tried many options including uninstall and re-install, what solved finally was an upgrade to ENTERPRISE EDITION!
I found out that in a server where the dtexec ran successfully an ENTERPRISE VERSION was installed, while in the problematic server there was not an ENTERPRISE edition.
How did i find it? i ran the following in both servers:
run setup.exe file of SQL SERVER 2017 installation
on the left menu you will see "tools" - press the link
find: "installed SQL server features discovery report"
you will see in edition column an empty cell vs. "Enterprise Edition"
which is the successful one!
how did i upgrade in the problematic server?
run setup.exe file of SQL SERVER 2017 installation
on the left menu you will see "maintenance" - press the link
find: "edition upgrade"
follow the instructions, in my case since my organization had an automatic updated key i just pressed "next" a few times until a successful upgrade
good luck!

Bare Bones Setup to Run SSIS Package

I work with Microsoft Access 2016 with a SQL Server 2008 R2 backend. I have used SQL Server Management Studio to create some SSIS package for quick copying of data (right-click DB -> Tasks -> Import/Export).
I was able to create a button in Access to kick off the SSIS package successfully using VBA. I use the Shell function to run the following command:
"C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\DTExec.exe" /F "\\MyPath\MySSISPackage.dtsx". This works on my machine because I'm running my particular instance of DTExec.exe to execute the SSIS package.
I need to set up users' Win10 64-bit computers now so that this process will work for them as well. I don't know if DTExec was installed when I installed SSMS or my local SQL Server Express Edition DB, but the user doesn't need either of these programs. What is the bare minimum I need to install on the users' computers for it to work for them also?
I've done a lot of googling but either the scenario didn't quite fit mine, or I just wasn't understanding what they were talking about. The users will have Microsoft Access only as a start.
Links to download locations would be extra appreciated!
Thanks!
For running SSIS packages in a production environment you must install and license SQL Server. A user who only has Microsoft Access installed cannot run SSIS packages.
You can install and run SSIS packages on your SQL Server (Standard Edition or higher), but not on your clients' PCs.
Once you have credentials all sorted out with DBA team. At min you will need read (select permission) on desired database(s) . Build your ssis in VS2017 locally and test. It will run great I'm sure. And when your ready to deploy you can use steps below.
Steps below outline package deployment mode.

The version of Dynamics CRM Source is not compatible with this version of the DataFlow

I'm running SSIS w/ Kingswaysoft on latest version of VS2017. I have created a package that executes successfully on my local computer and I have also successfully deployed the project deployment file via Integration Services Deployment Wizard to a SQL 2014 server (from the command prompt with ISDeploymentWizard.exe).
Before deploying, I checked that "TargetServerVersion" was indeed "SQL Server 2014".
After the successfull deploy, when I manually execute the package on the target server I got the following exception:
Data Flow Task:Error:
Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMism atchException:
The version of Dynamics CRM Source is not compatible with this version
of the DataFlow. [[The version or pipeline version or both for the
specified component is higher than the current version. This package
was probably created on a new version of DTS or the component than is
installed on the current PC.]] at
Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHos
t.HostCheckAndPerformUpgrade (IDTSManagedComponentWrapper100 wrapper,
Int32 lPipelineVersion)
Anyone have a clue how to solve this one?
It is likely you have a later version of our software on your development environment then the server you are deploying to. You will want to make sure both environments are using the same version of our software.
https://www.kingswaysoft.com/products/ssis-integration-toolkit-for-microsoft-dynamics-365/download
Please let us know if you still have trouble.

Embedding SQL Server into a .NET application

Hey, I've just finished writing a VB.NET application. Now I want to package the executable and the database ofcourse into a single installer file. I tried using QSetup, InstallShield to make SQL Server embedded into the setup file, and finally after hours of try&fail I have no idea. Anyone?
You can do a rightmouse on the properties of your Visual Studio Setup Project, and then there is this button 'Prerequisites'. There you can tick 'SQL Server Express ...' Or the 'SQL Server Compact 3.5'
link to image
You're probably best off just to set the connection file directly to the mdf, and attach it when the program is run. This is easier as it doesn't require a custom setup script to install the database to the database directory itself.
Note: Consider using the Compact Version, it's smaller, people don't like a full blown engine on their computer :)
InstallShield has a concept called Setup Prerequisites where you can teach it how to install additional packages along with your own. In older versions this would happen before calling your MSI. In newer versions you can have a "Feature" prerequisite where the prereq can associated to a feature and only installed if that feature is selected to be installed and after it's been selected but still before the main activity of your MSI occurs during the install execute sequence.
InstallShield also has a pattern for executing SQL scripts against your database instance so that you can then load your database into your newly installed instance.
All of this is quite powerful but it does take a bit of digging to learn.
As far as I know, anything but the SQL Server Compact Edition (SQL Server CE) cannot be embedded into your setup, really. Microsoft doesn't want that - you need to have SQL Server Express installed separately - any other edition can't even be shipped with your software (the client must have a license and installation separately).
You can indeed distribute SQL server with your custom application:
http://msdn.microsoft.com/en-us/library/bb264562(SQL.90).aspx

How do I reference SSIS on a build machine without installing SQL Server 2008 Client Tools?

I need to build SSIS packages on a build machine, and do not want the overhead of installing SQL Server Management Studio on this machine. A SQL Server 2008 SDK would be ideal, but I could not find where to download it.
The dlls I require are (for example):
Microsoft.SQLServer.ManagedDTS
Microsoft.SqlServer.PipelineHost
Microsoft.SqlServer.DTSPipelineWrap
Microsoft.SQLServer.DTSRuntimeWrap
I could attempt to copy them to the build machine individually, but I would rather just use an SDK if possible.
Where can I get the SDK, or alternatively, what suggestions are there?
You could probably manually copy things about and register then in the GAC, but the client tools are hardly huge, and don't take long to install, so I don't see why they are much of an overhead?
As far as I know there's no other way to get those assemblies.
I think he is trying to accomplish SSIS packages as part of the automated continuous build process. The way i did it was to have an express edition of SQL Server and SSIS on the build machine, use BIDS helper to script the cmd line file for deploying the packages and use NANT to use this script. Hope this helped.
I don't know about SQL 2008 but SQL 2005 SSIS packages are developed in Visual Studio.
Edited:
When you run install for client tools, it's an option to add the stuff to VS.NET, "Client tools" as such can be deselected (end edit)
SSMS can be used to manage them and administer.
What other editor did you want to use...?

Resources