SSIS package not running from SQL server catalog - ssis

I have created one project for SSIS and deployed that on sql server 2014. When I am running packages from sql server data tool its running fine and performing all operations, but when I am running from catlog procs [SSISDB].[CATALOG].[Create_execution] its shows run successful but I can't see any data into my staging tables. I have used configuration tables to configure connection and files path.
Any idea.

PLease check the user privileges (file system, etc.) - if you call the procedures with another user than you execute the package from within Data Tools, this might be the reason.

Related

Integration Service Catalog and Linked server

I have SSIS packages in SSIS catalog on SQL Server, Serv1. The packages, while executing, establish connection to SQL Server, Serv2. And they fail while acquiring connection.
I know a little bit about linked server that is to run query from one server on another the latter one has to be a linked server to former one. The above scenatrio looks the same but i didn't find any information related to it. Do i have to add Serv2 as Linked Server for Serv1?
No. Linked server scenario is used when you need to access DB from the outer server inside SQL query run on local server.
SSIS packages are built with goal that it access some DB server, possibly a remote one, fetch data from it, transform and store results somewhere - in files, DB etc. Accessing a remote SQL DB is a normal scenario.
Moreover, using Linked server in SSIS package is a bad practice. You move control of DB access from SSIS catalogue to DB server, in case of any problems - it is more difficult to trace and investigate.
In your case - SSIS packages in SSIS catalogue - check in package execution log which connection string is used to connect to the remote server. Is it an integrated authentication? Does the account under which SSIS package is executed have an access to the DB? If using SQL auth - are login and password valid?

Different Servers for SSIS and Database

We are going to use different SQL servers for SSIS and database. Currently both are in same servers. We have a package which calls another package inside that. But I am not able to select the secondary package location from SQL server option in the editor as the MSDB is in SSIS server not in database server. Should the MSDB in database server for me to select it or can we use SSIS server to deploy MSDB?
Thanks
Ajeesh
So first, create a connection to your SSIS Server in your package. Let's name it SSISServer.
Create your Execute Package task.
In the editor, under the Package Tab, under ReferenceType, choose External Reference.
Under Location, choose SQL Server.
Under Connection, choose SSISServer.
Under PackageName, browse to your package.
This is how you execute packages on different servers from the package that is running.

Create a task in SQL or Windows Server to clean a directory nightly

I have a temp directory on my website where users export data in .csv files.
The newer intranet apps delete the file after it's sent to the client but the legacy apps just leave the files in this directory.
I'd like to create a task to clean this directory nightly. There can be .csv files and directories with files in them.
Basically I want to run:
del *.* /s
rd /s
...every night at midnight.
Would love to do it with a SQL maintenance task but that only runs on the actual SQL server and doesn't work with mapped drives (unless I'm missing something).
How does one go about performing this task?
Can it be done through SQL server somehow?
You have the option of creating "Jobs" that run stored procedures or bits of code. These jobs can be scheduled to run daily, weekly, etc. Check out this thread: How can i create SQL Agent job in SQL Server 2008 standard?
Sounds like you may be using SQL Server Express Edition for which Microsoft removed the SQL Agent on 2008 and above. In cases like this you're best choice is using the Windows Scheduler to run your commands via a batch file.

How to mimic SSIS with production connection string on development machine

Scenario :
SSIS in production uses production connection and Instance name of SQL Server.
Once I open the same SSIS on my machine, the connection break since we do not have access to prod.
I can obviously change the connection and use my local dev, but that would mean that whenever I deploy to production I would have to ask my Network guys to open the SSIS and change the connections back from my local to Production, that too for EACH SQL task.
Is there a way for me to mimic production connection on my dev so that I would not have to touch the connection strings from prod and also be able to do my debugging / modifications and upload it back to production?
You need to make use of SSIS Package Configurations that will allow you to store all the configurable values in one of the following options:
XML configuration file
Environment variable
Registry entry
Parent package variable
SQL Server table
Read more about package configuration on MSDN, below documentation link refers to SSIS 2012.
Package Configurations
I prefer SQL Server table because it gives the flexibility to easily update the values using T-SQL queries. When you develop the package, you will select the connection managers and variables that you think might require different values across environments. Once you create package configuration, you can move the package and simply modify the values on the package configuration XML file or SQL Server table without having to touch the package (.dtsx)
Refer the answer to the below SO question for detailed steps on how to make use of package configurations:
Run SSIS Package with 2 Different Configurations

Where is actual work done - app server or DB server?

I am executing SSIS packages from an application server that is different than the database server. This package will be reading and writing files. Is it better to have the potentially large input files on the DB server or the application server where the package is executed? I'm not clear on where the actual "work" takes place when I execute a package on a server other than the database server.
The Integration Services server is where the actual execution is done. Generally that means "the DB server" but it doesn't always have to be the same server that the houses the DB you are reading from/writing to.
"This package will be reading and writing files."
isnt that one of the specialities of a database server? ;)