Ssis Interview Questions
Ssis Interview Questions
Ssis Interview Questions
2.3 Go to Child Package and create a variable with same name as your parent package
variable.
2.4 Add Package configurations
2.5 "Enable Package Configuration", choose Configuration type as "Parent Package
Variable" and type the name of the variable.
2.6 click 'Next' button and select the 'Value' property of the child package variable.
How to Implement?
Designed SSIS package like:
How to Implement?
IMPORT COLUMN - Reads image specific column from database onto a flat file.
LOOKUP - Performs the lookup (searching) of a given reference object set against a data
source. It is used to find exact matches only.
MERGE - Merges two sorted data sets of same column structure into a single output.
MERGE JOIN - Merges two sorted data sets into a single dataset using a join.
MULTI CAST - is used to create/distribute exact copies of the source dataset to one or
more destination datasets.
ROW COUNT - Stores the resulting row count from the data flow / transformation into a
variable.
ROW SAMPLING - Captures sample data by using a row count of the total rows in
dataflow specified by rows or percentage.
UNION ALL - Merge multiple data sets into a single dataset.
PIVOT Used for Normalization of data sources to reduce analomolies by converting
rows into columns
UNPIVOT Used for demoralizing the data structure by converts columns into rows
incase of building Data Warehouses.
8. What are the different types of Transaction Options
Required: If a transaction already exists at the upper level, the current executable will
join the transaction. If No transaction at the upper level, a new transaction is created
automatically.
Supported:In any executable, if there is a transaction at upper level, the executable join
the transaction else do not create a new transaction.
Not Supported:The executable of the package do not honour any transaction ie do not
join other transaction nor creates new transaction.
9. Explain about Checkpoints with properties
Checkpoint is used to restart the package execution from the point of failure rather than
from initial start.
Set the following Properties:
CheckpointFileName: Specifies the name of the checkpoint file.
CheckpointUsage: Never, IfExists, Always
SaveCheckpoints: indicates whether the package needs to save checkpoints. This
property must be set to True to restart a package from a point of failure.
FailPackageOnFailure: property needs to be set to True for enabling the task in the
checkpoint.
Checkpoint mechanism uses a Text File to mark the point of package failure.
These checkpoint files are automatically created at a given location upon the package
failure and automatically deleted once the package ends up with success.
Select 'Load to sql Table' Data flow Task. Navigate to 'Even Handlers' Tab.
Drag and Drop 'Execute Sql Task'. Open the Execute Sql Task Editor and in Parameter
Mapping' section, select the system variables as follows:
Create a table in Sql Server Database with Columns as: PackageID, PackageName,
TaskID, TaskName, ErrorCode, ErrorDescription.
Foreach ADO:
The ADO Enumerator enumerates rows in a table. For example, we can get the rows in
the ADO records.The variable must be of Object data type.
Foreach ADO.NET Schema Rowset:
The ADO.Net Enumerator enumerates the schema information. For example, we can get
the table from the database.
Foreach File:
The File Enumerator enumerates files in a folder. For example, we can get all the files
which have the *.txt extension in a windows folder and its sub folders.
Foreach From Variable:
The Variable Enumerator enumerates objects that specified variables contain. Here
enumerator objects are nothing but an array or data table.
Foreach Item:
The Item Enumerator enumerates the collections. For example, we can enumerate the
names of executables and working directories that an Execute Process task uses.
Foreach Nodelist:
The Node List Enumerator enumerates the result of an XPath expression.
Foreach SMO:
The SMO Enumerator enumerates SQL Server Management Objects (SMO). For example,
we can get the list of functions or views in a SQL Server database.
29. How to execute the package from .NET?
We need a reference to Microsoft.SqlServer.ManagedDts.dll to call a package.
using Microsoft.SqlServer.Dts.Runtime
Application app = new Application();
Package package = null;
package = app.LoadPackage(@"C:\Program Files\Microsoft SQL
Server\100\DTS\Packages\Integration Services Project2\Package.dtsx", null);
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
30. How to schedule a package (Role of Sql Server Agent)
In order for the job to run successfully, the SQL Server agent should be running on the
target machine.
We can start the SQL Server Agent Services in numerous ways like:
Container Description
Foreach
Loop
Container
For Loop
Container
Sequence
Container
language).
memory as a result of this your extraction will fail. So it is recommended to set these
values to an optimum value based on your environment.
#7 - DefaultBufferSize and DefaultBufferMaxRows :
The execution tree creates buffers for storing incoming rows and performing
transformations.
The number of buffer created is dependent on how many rows fit into a buffer and how
many rows fit into a buffer dependent on few other factors. The first consideration is the
estimated row size, which is the sum of the maximum sizes of all the columns from the
incoming records. The second consideration is the DefaultBufferMaxSize property of the
data flow task. This property specifies the default maximum size of a buffer. The default
value is 10 MB and its upper and lower boundaries are constrained by two internal
properties of SSIS which are MaxBufferSize (100MB) and MinBufferSize (64 KB). It
means the size of a buffer can be as small as 64 KB and as large as 100 MB. The third
factor is, DefaultBufferMaxRows which is again a property of data flow task which
specifies the default number of rows in a buffer. Its default value is 10000.
If the size exceeds the DefaultBufferMaxSize then it reduces the rows in the buffer. For
better buffer performance you can do two things.
First you can remove unwanted columns from the source and set data type in each
column appropriately, especially if your source is flat file. This will enable you to
accommodate as many rows as possible in the buffer.
Second, if your system has sufficient memory available, you can tune these properties to
have a small number of large buffers, which could improve performance. Beware if you
change the values of these properties to a point where page spooling (see Best Practices
#8) begins, it adversely impacts performance. So before you set a value for these
properties, first thoroughly testing in your environment and set the values appropriately.
#8 - How DelayValidation property can help you
SSIS uses two types of validation.
First is package validation (early validation) which validates the package and all its
components before starting the execution of the package.
Second SSIS uses component validation (late validation), which validates the
components of the package once started.
Let's consider a scenario where the first component of the package creates an object i.e.
a temporary table, which is being referenced by the second component of the package.
During package validation, the first component has not yet executed, so no object has
been created causing a package validation failure when validating the second
component. SSIS will throw a validation exception and will not start the package
execution. So how will you get this package running in this common scenario?
To help you in this scenario, every component has a DelayValidation (default=FALSE)
property. If you set it to TRUE, early validation will be skipped and the component will be
validated only at the component level (late validation) which is during package execution
9. Better performance with parallel execution
10. When to use events logging and when to avoid.
The first step to setting up the proxy is to create a credential (alternatively you could use
an existing credential). Navigate to Security then Credentials in SSMS Object Explorer
and right click to create a new credential
Navigate to SQL Server Agent then Proxies in SSMS Object Explorer and right click to
create a new proxy
38. How to execute a Stored Procedure from SSIS
using Execute SQL Task
39. How to deploy packages from one server to another server
1.To copy the deployment bundle
Locate the deployment bundle on the first server.
If you used the default location, the deployment bundle is the Bin\Deployment folder.
Right-click the Deployment folder and click Copy.
Locate the public share to which you want to copy the folder on the target computer and
click Paste.
2: Running the Package Installation Wizard
1. On the destination computer, locate the deployment bundle.
2. In the Deployment folder, double-click the manifest file,
Project1.SSISDeploymentManifest.
3. On the Welcome page of the Package Installation Wizard, click Next.
4. On the Deploy SSIS Packages page, select either File sytem or SQL Server
deployment option, select the "Validate packages after installation" check box, and
then click Next.
5. On the Specify Target SQL Server page, specify (local), in the Server name box.
6. If the instance of SQL Server supports Windows Authentication, select Use Windows
Authentication; otherwise, select Use SQL Server Authentication and provide a user
name and a password.
7. Verify that the "Rely on server storage for encryption" check box is cleared.
Click Next.
8. On the Select Installation Folder page, click Browse.
9. On the Confirm Installation page, click Next.
10. The wizard installs the packages. After installation is completed, the Configure
Packages page opens.
Right click on the Solution in Solution Explorer and choose properties in the
Menu.
This screen lets you select where shall the packages be deployed, as mentioned in the
Dialog Box, deploying in SQL Server is more secure, since SQL Server stores the
packages internally compared to File System where additional security measures needs
to taken to secure the physical
files.
44.
Difference
between
Merge
and
UnionAll
Transformations
The Union All transformation combines multiple inputs into one output. The
transformation inputs are added to the transformation output one after the other; no
reordering of rows occurs.
Merge Transformations combines two sorted data sets of same column structure into a
single output.The rows from each dataset are inserted into the output based on values in
their key columns.
The Merge transformation is similar to the Union All transformations. Use the Union All
transformation instead of the Merge transformation in the following situations:
-The Source Input rows are not need to be sorted.
-The combined output does not need to be sorted.
At run time, the FTP task connects to a server by using an FTP connection manager. The
FTP connection manager includes the server settings, the credentials for accessing the
FTP server, and options such as the time-out and the number of retries for connecting to
the server.
The FTP connection manager supports only anonymous authentication and basic
authentication. It does not support Windows Authentication.
Predefined FTP Operations:
Send Files,
Receive File,
Create Local directory,
Remove Local Directory,
Create Remote Directory, Remove Remote Directory
Delete Local Files,
Delete Remote File
Customer Log Entries available on FTP Task:
FTPConnectingToServer
FTPOperation
TOKEN: This function allows you to return a substring by using delimiters to separate a
string into tokens and then specifying which occurrence to
return: TOKEN(character_expression, delimiter_string, occurrence)
TOKENCOUNT: This function uses delimiters to separate a string into tokens and then
returns the count of tokens found within the string: TOKENCOUNT(character_expression,
delimiter_string)
6. Easy Column Remapping in Data Flow (Mapping Data Flow Columns) -When modifying
a data flow, column remapping is sometimes needed -SSIS 2012 maps columns on name
instead of id -It also has an improved remapping dialog
7. Shared Connection Managers: To create connection managers at the project level that
can shared by multiple packages in the project. The connection manager you create at
the project level is automatically visible in the Connection Managers tab of the SSIS
Designer window for all packages. -When converting shared connection managers back
to regular (package) connection managers, they disappear in all other packages.
8. Scripting Enhancements: Now Script task and Script Component support for 4.0. Breakpoints are supported in Script Component
9. ODBC Source and Destination - -ODBC was not natively supported in 2008 -SSIS
2012 has ODBC source & destination -SSIS 2008 could access ODBC via ADO.NET
10. Reduced Memory Usage by the Merge and Merge Join Transformations The old
SSIS Merge and Merge Join transformations, although helpful, used a lot of system
resources and could be a memory hog. In 2012 these tasks are much more robust and
reliable. Most importantly, they will not consume excessive memory when the multiple
inputs produce data at uneven rates.
11. Undo/Redo: One thing that annoys users in SSIS before 2012 is lack of support of
Undo and Redo. Once you performed an operation, you cant undo that. Now in SSIS
2012, we can see the support of undo/redo.
52. Difference between Script Task and Script Component in SSIS.
Script Task
Script Component
Control
Flow/Date
Flow
Purpose
A Script task can accomplish almost any general-purpose You must specify whether you want to create
task.
a source, transformation, or destination with
the Script component.
Raising
Results
Raising
Events
Execution
Editor
Interaction
with the
Package
In the code written for a Script task, you use the Dts
property to access other features of the package. The
Dts property is a member of the ScriptMain class.
Using
Variables
Using
The Script task uses the Connections property of the Dts
Connections object to access connection managers defined in the
package. For example:
string
myFlatFileConnection;
myFlatFileConnection =
(Dts.Connections["Test Flat File
Connection"].AcquireConnection(Dts.Transaction) as
String);
ADO enumerator saves the value from each column of the current row into a separate
package variable. Then, the tasks that you configure inside the Foreach Loop container
read those values from the variables and perform some action with them.
61. Delay Validation, Forced Execution
Delay Validation: Validation take place during the package execution.
Early Validation: Validation take place just before the package execution.
62. Transfer Database Task
used to move a database to another SQL Server instance or create a copy on the same
instance (with different database name). This task works in two modes: Offline, Online.
Offline: In this mode, the source database is detached from the source server after
putting it in single user mode, copies of the mdf, ndf and ldf files are moved to specified
network location. On the destination server the copies are taken from the network
location to the destination server and then finally both databases are attached on the
source and destination servers. This mode is faster, but a disadvantage with mode is that
the source database will not available during copy and move operation. Also, the person
executing the package with this mode must be sysadmin on both source and destination
instances.
Online: The task uses SMO to transfer the database objects to the destination server. In
this mode, the database is online during the copy and move operation, but it will take
longer as it has to copy each object from the database individually. Someone executing
the package with this mode must
be either sysadmin or database owner of the specified databases.
63. Transfer SQL Server Object Task
Used to transfer one or more SQL Server objects to a different database, either on the
same or another SQL Server instance. You can transfer tables, views, Indexes, stored
procedures, User defined functions, Users, Roles etc.
temporary table created in one Control Flow task can be retained in another task.
RetainSameConnection means that the temp table will not be deleted when the task is
completed.
2. Create a data-flow task that consumes your global temp table in an OLE DB Source
component.
3. Set DelayValidation=TRUE on the data-flow task, means that the task will not check if
the table exists upon creation.
68. How to Lock a variable in Script Task?
public void Main()
{
Variables vars = null ;
bool fireAgain = true;
Dts.VariableDispenser.LockOneForRead("varName", ref vars);
//Do something with the value...
vars.Unlock();
Dts.TaskResult = (int)ScriptResults.Success;
}
69. How to pass property value at Run time?
A property value like connection string for a Connection Manager can be passed to the
package using package configurations.
70. How to skip first 5 lines in each Input flat file?
In the Flat file connection manager editor, Set the 'Header rows to skip' property.
71. Parallel processing in SSIS
To support parallel execution of different tasks in the package, SSIS uses 2 properties:
1.MaxConcurrentExecutables: defines how many tasks can run simultaneously, by
specifying the maximum number of SSIS threads that can execute in parallel per
package. The default is -1, which equates to number of physical or logical processor + 2.
2. EngineThreads: is property of each DataFlow task. This property defines how many
threads the data flow engine can create and run in parallel. The EngineThreads property
applies equally to both the source threads that the data flow engine creates for sources
and the worker threads that the engine creates for transformations and destinations.
Therefore, setting EngineThreads to 10 means that the engine can create up to ten
source threads and up to ten worker threads.
72. How do we convert data type in SSIS?
The Data Conversion Transformation in SSIS converts the data type of an input column
to a different data type.
3.
Enter the following:
="javascript:void(window.open('http://servername?%2freportserver%2fpathto
%2freport&rs:Command=Render'))"
4.
Parameterized Solution
Assume you have a field called ProductCode. Normally, you might hard code that like
this:
http://servername/reportserver?%2fpathto
%2freport&rs:Command=Render&ProductCode=123
In this case, you want to pass variables dynamically, using an available value from the
source dataset. You can think of it like this:
http://servername/reportserver?%2fpathto
%2freport&rs:Command=Render&ProductCode=Fields!ProductCode.Value
The exact syntax in the "Jump to URL" (Fx) expression window will be:
="javascript:void(window.open('http://servername/reportserver?%2fpathto
%2freport&rs:Command=Render&ProductCode="+Fields!ProductCode.Value+"'))"
4. How to pass parameter from chart to Table in same report?
5. How to apply custom Colors of chart report?
STEP1:
Create your custome color palette in the report using Custom Code in your report. To do
so, click Report => Report Properties => Code and copy below code:
1. The total time to generate a report (RDL) can be divided into 3 elements:
Time to retrieve the data (TimeDataRetrieval).
Time to process the report (TimeProcessing)
Time to render the report (TimeRendering)
Total time = (TimeDataRetrieval) + (TimeProcessing) + (TimeRendering)
These 3 performance components are logged every time for which a deployed report is
executed. This information can be found in the table ExecutionLogStorage in the
ReportServer database.
SELECT TOP 10 Itempath, parameters,
TimeDataRetrieval + TimeProcessing + TimeRendering as [total time],
TimeDataRetrieval, TimeProcessing, TimeRendering,
ByteCount, [RowCount],Source, AdditionalInfo
FROM ExecutionLogStorage
ORDER BY Timestart DESC
2. Use the SQL Profiler to see which queries are executed when the report is generated.
Sometimes you will see more queries being executed than you expected. Every dataset
in the report will be executed. A lot of times new datasets are added during building of
reports. Check if all datasets are still being used. For instance, datasets for available
parameter values. Remove all datasets which are not used anymore.
3. Sometimes a dataset contains more columns than used in the Tablix\list. Use only
required columns in the Dataset.
4. ORDER BY in the dataset differs from the ORDER BY in the Tablix\list. You need to
decide where the data will be sorted. It can be done within SQL Server with an ORDER
BY clause or in by the Reporting server engine. It is not useful to do it in both. If an
index is available use the ORDER BY in your dataset.
5. Use the SQL Profiler to measure the performance of all datasets (Reads, CPU and
Duration). Use the SQL Server Management Studio (SSMS) to analyze the execution plan
of every dataset.
6. Avoid dataset with result sets with a lot of records like more than 1000 records. A lot
of times data is GROUPED in the report without an Drill down option. In that scenario do
the group by already in your dataset. This will save a lot of data transfer to the SQL
Server and it will save the reporting server engine to group the result set.
7. Rendering of the report can take a while if the result set is very big. Look very critical
if such a big result set is necessary. If details are used in only 5 % of the situations,
create another report to display the details. This will avoid the retrieval of all details in
95 % of the situations.
12. I have 'State' column in report, display the States in bold, whose State
name starts with letter 'A' (eg: Andhra pradesh, Assam should be in bold)
13. In which scenario you used Matrix Report
Use a matrix to display aggregated data summaries, grouped in rows and columns,
similar to a PivotTable or crosstab. The number of rows and columns for groups is
determined by the number of unique values for each row and column groups.
14. Image control in SSRS
An image is a report item that contains a reference to an image that is stored on the
report server, embedded within the report, or stored in a database.
Image Source : Embedded
Local report images are embedded in the report and then referenced. When you embed
an image, Report Designer MIME-encodes the image and stores it as text in the report
definition.
When to Use:
When image is embedded locally within the report.
When you are required to store all images within the report definition.
To create a shared dataset, you must use an application that creates a shared dataset
definition file (.rsd). You can use one of the following applications to create a shared
dataset:
1. Report Builder: Use shared dataset design mode and save the shared dataset to a
report server or SharePoint site.
2. Report Designer in BIDS: Create shared datasets under the Shared Dataset folder in
Solution Explorer. To publish a shared dataset, deploy it to a report server or SharePoint
site.
Upload a shared dataset definition (.rsd) file. You can upload a file to the report server or
SharePoint site. On a SharePoint site, an uploaded file is not validated against the
schema until the shared dataset is cached or used in a report.
The shared dataset definition includes a query, dataset parameters including default
values, data options such as case sensitivity, and dataset filters.
18. How do u display the partial text in bold format in textbox in Report? (eg:
FirstName LastName, where "FirstName" should in bold fornt and "LastName"
should be in normal font.)
Use PlaceHolder
19. How to Keep Headers Visible When Scrolling Through a Report?
1. Right-click the row, column, or corner handle of a tablix data region, and then click
Tablix Properties.
2. On the General tab, under Row Headers or Column Headers, select Header should
remain visible while scrolling.
3. Click OK.
21. A main report contain subreport also. Can we export both main report and
subreport to Excel?
Yes. The exported report contains both the mail report and sub report.
22. how to convert PDF report from Portrait to Landscape format?
In Report Properties -->
Set the width of the report to the landscape size of your A4 paper: 29.7 cm
Set the height of the report to 21 cm.
To avoid extra blank pages during export, the size of the body should be less or equal to
the size of the report - margins.
Set the width of the body to 26.7 cm (29.7 -1.5 - 1.5)
Set the height of the body to 18 cm (21 - 1.5 -1.5)
23. Error handling in Report
Step 1: All the data sets of the report should contain one addition input parameter which
should pass a unique information for every request (for every click of View Report
button) made by the user.
Step 2: Need to implement TRY CATCH blocks for all the Stored procedures used in the
SSRS reports through datasets. The CATCH section of every procedure should have the
provision to save the error details into DB table, if any error occurred while execution of
that procedure.
Step 3: Add one more additional dataset with the name "ErrorInfo" which should call the
store procedure (USP_ERROR_INFO). This procedure should be accepting a unique value.
This unique value should be passed to all the data sets for every click of 'View Report'
button made by the user. This dataset will return the error information available in the
data base table by verifying records with the unique id which has passes as input
parameter.
Step 4:Enable the Use Single Transaction When Processing Queries option in data
source properties, which makes all the query executions through a single transaction.
Step 5: After successful completion of all the above mentioned steps, insert new table on
SSRS report with custom error information which will be shown to the report user if the
user gets any error during execution of the report.
3. There are 2 options for deploying the reports that you create with Report Builder 3.0:
1. Report Manager
2. SharePoint document library
26. Difference between Cached Report and Snapshot Report
Cached Report is a saved copy of processed report.
The first time a user clicks the link for a report configured to cache, the report execution
process is similar to the on-demand process. The intermediate format is cached and
stored in ReportServerTempDB Database until the cache expiry time.
If a user request a different set of parameter values for a cached report, then the report
processor treats the requests as a new report executing on demand, but flags it as a
second cached instance.
Report snapshot contains the Query and Layout information retrieved at specific point of
time. It executes the query and produces the intermediate format. The intermediate
format of the report has no expiration time like a cached instance, and is stored in
ReportServer Database.
27. Subscription. Different types of Subscriptions?
Subscriptions are used to deliver the reports to either File Share or Email in response to
Report Level or Server Level Schedule.
There are 2 types of subscriptions:
1. Standard Subscription: Static properties are set for Report Delivery.
2. Data Driven Subscription: Dynamic Runtime properties are set for Subscriptions
28. SSRS Architecture
29. How to deploy Reports from one server to other server
30. Different life cycles of Report
1.Report authoring:
This stage involves creation of reports that are published using the Report Definition
language. RDL is an XML based industry standard for defining reports.
Report Designer is a full-featured report authoring tool that runs in Business Intelligence
Development Studio and Report Builder.
2. Report management:
This involves managing the published reports as a part of the webservice. The reports
are cached for consistency and performance. They can be executed whenever demanded
or can be scheduled and executed.
In short Report Management includes:
- Organizing reports and data sources,
- Scheduling report execution and delivery
- Tracking reporting history.
3. Report delivery:
Reports can be delivered to the consumers either on their demand or based on an event.
Then they can view them is a web-based format.
Web based delivery via Report Manager web site
Subscriptions allow for automated report delivery
URL Access, Web Services and Report Viewer control
4.Report security:
control because Report Viewer control does not perform any data processing in Local
processing mode, but used data that the host application supplies.
35. Difference between Sorting and Interactive Sorting?
To control the Sort order of data in report, you must set the sort expression on the data
region or group. The does not have control over sorting.
You can provide control to the user by adding Interactive Sort buttons to toggle between
ascending and descending order for rows in a table or for rows and columns in a matrix.
The most common use of interactive sort is to add a sort button to every column header.
The user can then choose which column to sort by.
36. What is Report Builder
Windows Winform application for End users to build ad-hoc reports with the help of
Report models.
37. Difference between Table report and Matrix Report
A Table Report can have fixed number of columns and dynamic rows.
A Matrix Report has dynamic rows and dynamic columns.
38. When to use Table, Matrix and List
1. Use a Table to display detail data, organize the data in row groups, or both.
2. Use a matrix to display aggregated data summaries, grouped in rows and columns,
similar to a PivotTable or crosstab. The number of rows and columns for groups is
determined by the number of unique values for each row and column groups.
3. Use a list to create a free-form layout. You are not limited to a grid layout, but can
place fields freely inside the list. You can use a list to design a form for displaying many
dataset fields or as a container to display multiple data regions side by side for grouped
data. For example, you can define a group for a list; add a table, chart, and image; and
display values in table and graphic form for each group value
39. Report Server Configuration Files
1. RSReportServer.config:
Stores configuration settings for feature areas of the Report Server service: Report
Manager, the Report Server Web service, and background processing.
2. RSSrvPolicy.config
Stores the code access security policies for the server extensions.
3. RSMgrPolicy.config
Stores the code access security policies for Report Manager.
4. Web.config for the Report Server Web service
Includes only those settings that are required for ASP.NET.
5. ReportingServicesService.exe.config
6. Registry settings
7. Web.config for Report Manager
Includes only those settings that are required for ASP.NET
8. RSReportDesigner.config
9. RSPreviewPolicy.config
40. Difference between a Report and adhoc Report
Ad Hoc reporting allows the end users to design and create reports on their own
provided the data models.
Adhoc Report is created from existing report model using Report Builder.
The order of the dataset execution sequence is determined by the topdown order of the dataset appearance in the RDL file, which also
corresponds to the order shown in report designer.
49. ReportServer and ReportServerTempDB Databases
ReportServer: hosts the report catalog and metadata.
For eg: keeps the catalog items in the Catalog table, the data source information in the
Data-Source table of ReportServer Database.
ReportServerTempDB: used by RS for caching purposes.
For eg: once the report is executed, the Report Server saves a copy of the report in the
ReportServerTempDB database.
2) Flat file connection Used to make a connection to a single file in the File System. Required
for reading information from a File System flat file
3) ADO.Net connection Uses the .Net Provider to make a connection to SQL Server 2005 or
other
connection exposed through managed code (like C#) in a custom task
4) Analysis Services connection Used to make a connection to an Analysis Services database or
project. Required for the Analysis Services DDL Task and Analysis Services Processing Task
5) File connection Used to reference a file or folder. The options are to either use or create a file
or folder
6) Excel
What is the use of Bulk Insert Task in SSIS?
Bulk Insert Task is used to upload large amount of data from flat files into Sql Server. It supports
only OLE DB connections for destination database.
What is Conditional Split transformation in SSIS?
This is just like IF condition which checks for the given condition and based on the condition
evaluation, the output will be sent to the appropriate OUTPUT path. It has ONE input and
MANY outputs. Conditional Split transformation is used to send paths to different outputs based
on some conditions. For example, we can organize the transform for the students in a class who
have marks greater than 40 to one path and the students who score less than 40 to another path.
How do you eliminate quotes from being uploaded from a flat file
to SQL Server?
This can be done using TEXT QUALIFIER property. In the SSIS package on the Flat File
Connection Manager Editor, enter quotes into the Text qualifier field then preview the data to
ensure the quotes are not included.
Can you explain how to setup a checkpoint file in SSIS?
The following items need to be configured on the properties tab for SSIS package:
CheckpointFileName Specify the full path to the Checkpoint file that the package uses
to save the value of package variables and log completed tasks. Rather than using a hard-coded
path as shown above, its a good idea to use an expression that concatenates a path defined in a
package variable and the package name.
CheckpointUsage Determines if/how checkpoints are used. Choose from these options:
Never(default), IfExists, or Always. Never indicates that you are not using Checkpoints. IfExists
is the typical setting and implements the restart at the point of failure behavior. If a Checkpoint
file is found it is used to restore package variable values and restart at the point of failure. If a
Checkpoint file is not found the package starts execution with the first task. The Always choice
raises an error if the Checkpoint file does not exist.
SaveCheckpoints Choose from these options: True or False (default). You must select
True to implement the Checkpoint behavior.
What are the different values you can set for CheckpointUsage
property ?
There are three values, which describe how a checkpoint file is used during package execution:
1) Never: The package will not use a checkpoint file and therefore will never restart.
2) If Exists: If a checkpoint file exists in the place you specified for the CheckpointFilename
property, then it will be used, and the package will restart according to the checkpoints written.
3) Always: The package will always use a checkpoint file to restart, and if one does not exist,
the package will fail.
What is the ONLY Property you need to set on TASKS in order to
configure CHECKPOINTS to RESTART package from failure?
The one property you have to set on the task is FailPackageOnFailure. This must be set
for each task or container that you want to be the point for a checkpoint and restart. If you do not
set this property to true and the task fails, no file will be written, and the next time you invoke the
package, it will start from the beginning again.
Where can we set the CHECKPOINTS, in DataFlow or ControlFlow ?
Checkpoints only happen at the Control Flow; it is not possible to checkpoint transformations or
restart inside a Data Flow. The Data Flow Task can be a checkpoint, but it is treated as any other
task.
Can you explain different options for dynamic configurations in
SSIS?
1) XML file
2) custom variables
3) Database per environment with the variables
4) Use a centralized database with all variables
What is the use of Percentage Sampling transformation in SSIS?
Percentage Sampling transformation is generally used for data mining. This transformation builds
a random sample of set of output rows by choosing specified percentage of input rows. For
example if the input has 1000 rows and if I specify 10 as percentage sample then the
transformation returns 10% of the RANDOM records from the input data.
What is the use of Term Extraction transformation in SSIS?
Term Extraction transformation is used to extract nouns or noun phrases or both noun and noun
phrases only from English text. It extracts terms from text in a transformation input column and
then writes the terms to a transformation output column. It can be also used to find out the
content of a dataset.
What is Data Viewer and what are the different types of Data
Viewers in SSIS?
A Data Viewer allows viewing data at a point of time at runtime. If data viewer is placed before
and after the Aggregate transform, we can see data flowing to the transformation at the runtime
and how it looks like after the transformation occurred. The different types of data viewers are:
1. Grid
2. Histogram
3. Scatter Plot
4. Column Chart.
What is Ignore Failure option in SSIS?
In Ignore Failure option, the error will be ignored and the data row will be directed to continue on
the next transformation. Lets say you have some JUNK data(wrong type of data or JUNK data)
flowing from source, then using this option in SSIS we can REDIRECT the junk data records to
another transformation instead of FAILING the package. This helps to MOVE only valid data to
destination and JUNK can be captured into separate file.
Which are the different types of Control Flow components in SSIS?
The different types of Control Flow components are: Data Flow Tasks, SQL Server Tasks, Data
Preparation Tasks, Work flow Tasks, Scripting Tasks, Analysis Services Tasks, Maintenance
Tasks, Containers.
What are containers? What are the different types of containers in
SSIS?
Containers are objects that provide structures to packages and extra functionality to tasks. There
are four types of containers in SSIS, they are: Foreach Loop Container, For Loop Container,
Sequence Container and Task Host Container.
What are the different types of Data flow components in SSIS?
There are 3 data flow components in SSIS.
1. Sources
2. Transformations
3. Destinations
What are the different types of data sources available in SSIS?
There are 7 types of data sources provided by SSIS: a.) Data Reader source b.) Excel source c.)
Flat file source d.) OLEDB source e.) Raw file source f.) XML source g.) Script component
What is the diff between control flow Items and data flow Items?
The control flow is the highest level control process. It allows you to manage the run-time
process activities of data flow and other processes within a package.
When we want to extract, transform and load data within a package. You add an SSIS dataflow
task to the package control flow.
What are the main component of SSIS(project-architecture)?
SSIS archItecture has 4 main components
1.ssis service
2.ssis runtime engine & runtime executables
3.ssis dataflow engine & dataflow components
4.ssis clients
Different components in SSIS package?
Control flow
Data flow
Event handler
Package explorer
What are Connection Managers?
It is a bridge b/w package object and physical data. It provides logical representation of a
connection at design time the properties of the connection mgr describes the physical connection
that integration services creates when the package is run.
What is environment variable in SSIS?
An environment variable configuration sets a package property equal to the value in an
environment variable.
Environmental configurations are useful for configuring properties that are dependent on the
computer that is executing the package.
How to provide securIty to packages?
We can provide security in two ways
1. Package encryption
2. Password protection.
What are Precedence constraints?
Constraints that link executable, container, and tasks wIthin the package control flow and specify
condItion that determine the sequence and condItions for determine whether executable run.
What is Design time Deployment in SSIS ?
When you run a package from with in BIDS,it is built and temporarily deployed to the folder. By
default the package will be deployed to the BIN folder in the Packages Project folder and you
can configure for custom folder for deployment. When the Packages execution is completed and
stopped in BIDS,the deployed package will be deleted and this is called as Design Time
Deployment.
1. What is a package?
a).a discrete executable unit of work composed of a collection of control
flow and other objects, including data sources, transformations, process
sequence, and rules, errors and event handling, and data destinations.
2. What is a workflow in SSIS?
a).`a workflow is a set of instructions on how to execute Tasks.
(It is a set of instructions on how to execute Tasks such as sessions, emails
and shell commands. a workflow is created form work flow mgr.)
3. What is the Difference between control flow Items and data
flow Items?
a).the control flow is the highest level control process. It allows you to
manage the run-time process the run time process activities of data flow
and other processes within a package.
When we want to extract, transform and load data within a package. You
add an SSIS dataflow Task to the package control flow.
4. What are the main components of SSIS (project-architecture)?
A).SSIS architecture has 4 main components
1.SSIS service
2.SSIS runtime engine & runtime executables
3.SSIS dataflow engine & dataflow components
4.SSIS clients
5.different components in SSIS package?
1. Control flow
2.data flow
3.event handler
4.package explorer
Containers: provide structure and scope to your package
Types of containers:
i. Task host container: the Taskhost container services a single Task.
ii. Sequence container: It can handle the flow of subset of a package
and can help you drive a package into smaller more manageable process.
Uses:-
1. Grouping Tasks so that you can disable a part of the package that no
longer needed.
2. Narrowing the scope of the variable to a container.
3. Managing the property of multiple Tasks in one step by setting the
properties of the container.
iii. For loop container: evaluates an expression and repeats Its workflow
until the expression evaluates to false.
iv. For each loop container: defines a control flow repeatedly by using
an enumerator.
For each loop container repeats the control flow for each member of a
specified enumerator.
Tasks: It provides the functionality to your package.
It is a individual unit of work.
Event handler: It responds to raised events in your package.
Precedence constraints: It provides ordinal relationship b/w various
Items in your package.
6. How to deploy the package?
To deploy the package first we need to configure some properties.
Go to project tab->package properties->we get a window, configure
deployment Utility as "True"
Specify the path as "bin/deployment"
7. Connection manager:
a).It is a bridge b/w package object and physical data. It provides logical
representation of a connection at design time the properties of the
connection mgr describes the physical connection that integration
services creates when the package is run.
8. Tell the Utility to execute (run) the package?
a) In BIDS a package that can be executed in debug mode by using the
debug menu or toolbar or from solution explorer.
In production, the package can be executed from the command line or
from Microsoft windows Utility or It can be scheduled for automated
execution by using the SQL server agent.
i). Go to->debug menu and select the start debugging button
ii).press F5 key
iii).right click the package and choose execute package.
iv).command prompts utilities
a).DTExecUI
b).DTExec Utility
1.open the command prompt window.
2. Command prompt window->type dtexec /followed by the DTS, SQL, or
file option and the package path, including package name.
3. If the package encryption level is encrypting sensitive with password or
encrypt all with password, use the decrypt option to provide the password.
If no password is included, dtexec will prompt you for the password.
4. Optionally, provide additional command-line options
5. Press enter.
6. Optionally, view logging and reporting information before closing the
command prompt window.
The execute package Utility dialog box opens.
7. In the execute package Utility dialog box, click execute package.
Wait until the package has executed successfully.
v).using SQL server mgmt studio to execute package
1. In SSMS right click a package, and then click run package.
Execute package Utility opens.
2. Execute the package as described previously.
9. How can u design SCD in SSIS?
a) Def:-SCD explains how to capture the changes over the period of time.
This is also known as change data capture.
type1: It keeps the most recent values in the target. It does not maintain
the history.
type2: It keeps the full history in the target database. For every update in
the source a new record is inserted in the target.
type3: It keeps current & previous information in the target.
10. How can u handle the errors through the help of logging in
SSIS?
a) To create an on error event handler to which you add the log error
execute SQL Task.
11. What is a log file and how to send log file to mgr?
a) It is especially useful when the package has been deployed to the
production environment, and you cannot use BIDS and VSA to debug the
package.
SSIS enables you to implement logging code through the Dts. Log method.
When the Dts. Log method is called in the script, the SSIS engine will route
the message to the log providers that are configured in the containing
package.
12. What is environment variable in SSIS?
a) An environment variable configuration sets a package property equal to
the value in an environment variable.
Environmental configurations are useful for configuring properties that are
dependent on the computer that is executing the package.
13. about multiple configurations?
a) It means including the xml configuration, environment variable, registry
entry, parent package variable, SQL Server table, and direct and indirect
configuration types.
14. How to provide security to packages?
a) In two ways
1. Package encryption
2. Password protection.
15. as per error handling in T/R, which one handle the better
performance? Like fail component, redirect row or ignore failure?
a) Redirect row provides better performance for error handling.
16. Staging area??
a) It is a temporary data storage location. Where various data T/R
activities take place.
Staging area is a kitchen of data warehouse.
17. Task??
a) An individual unit of work.
13.
14.
15.
16.
17.
18.
19.
24. Batch?
a) A batch is defined as group of sessions. Those are 2 types.
1. Parallel batch processing
2. Sequential batch processing
to execute a SSIS package we will use "execute package utility"
To deploy a SSIS package we will use "package deployment Utility
SSIS Interview Questions / FAQs
Question: Which SSIS versions You have worked on?
Comment: Differences between 2005 and 2008 are not very big so 2005, 2008 or
2008 R2 experience usually is very similar. The big difference is with 2000 which
had DTS and it very different (SSIS is created from scratch)
Question: Have you used or what do you mean by SSIS Framework?
Comment: This is common term in SSIS world which just means that you have
templates that are set up to perform routine tasks like logging, error handling
etc. Yes answer would usually indicate experienced person, no answer is still fine
if your project is not very mission critical.
Question: Share experienced working with data warehouses?
Comment: SSIS is in most cases used for data warehouses so knowledge of Data
Warehouses Designs is very useful.
Question: How have you attended any training SSIS.
Comment: The thing is that most people who read good books have usually an
advantage over those who hasn't because they know what they know and they
know what they don't know (but they know it exists and is available).
Blog/Articles very in quality so best practise articles is a big plus+, conferences
can be also a plus.
Question: SSIS certifications?
Comment: This is rather disappointing point for me. Qualifications generally are
welcome but unfortunately many people simply cheat. Companies run courses
and then give questions and answers, or people find them on the internet. I've
met people who had certification but knew very little, I've met people very
experienced and knowledgeable without certification and people who have done
certification for their self-satisfaction and are experienced and knowledgeable. In
other words be careful with certification. It is easy to get a misleading
impression so make sure you ask the best questions for the position you can.
SSIS Development Interview FAQ
Question: How many difference source and destinations have you used?
It is very common to get all kinds of sources so the more the person worked with
the better for you. Common ones are SQL Server, CSV/TXT, Flat Files, Excel,
Access, Oracle, MySQL but also Salesforce, web data scrapping.
Question: What configuration options have you used?
Question: What is your approach for ETL with data warehouses (how many
packages you developer during typical load etc.)?
Comment: This is rather generic question. A typical approach (for me) when
building ETL is to. Have a package to extract data per source with extract specific
transformations (lookups, business rules, cleaning) and loads data into staging
table. Then a package do a simple merge from staging to data warehouse
(Stored Procedure) or a package that takes data from staging and performs extra
work before loading to data warehouse. I prefer the first one and due to this
approach I occasionally consider having extract stage (as well as stage phase)
which gives me more flexibility with transformation (per source) and makes it
simpler to follow (not everything in one go). So to summarize you usually have
package per source and one package per data warehouse table destination.
There are might be other approach valid as well so ask for reasons.
SSIS Advanced Interview Questions
Question: What is XMLify component?
Comment: It is 3rd party free component used rather frequently to output errors
into XML field which saves development time.
Question: What command line tools do you use with SSIS ?
Comment: dtutil (deployment), dtexec (execution), dtexecui (generation of
execution code)
SSIS Interview Questions continue
Q: What is SSIS? How it related with SQL Server.
SQL Server Integration Services (SSIS) is a component of SQL Server which can be
used to perform a wide range of Data Migration and ETL operations. SSIS is a
component in MSBI process of SQL Server.
This is a platform for Integration and Workflow applications. It is known for a fast and
flexible OLTP and OLAP extensions used for data extraction, transformation, and loading
(ETL). The tool may also be used to automate maintenance of SQL Server databases
and multidimensional data sets.
A control flow consists of one or more tasks and containers that execute when the
package runs. To control order or define the conditions for running the next task or
container in the package control flow, we use precedence constraints to connect the
tasks and containers in a package. A subset of tasks and containers can also be
grouped and run repeatedly as a unit within the package control flow. SQL Server 2005
Integration Services (SSIS) provides three different types of control flow elements:
Containers that provide structures in packages, Tasks that provide functionality, and
Precedence Constraints that connect the executables, containers, and tasks into an
ordered control flow.
Q: What is a data flow?
A data flow consists of the sources and destinations that extract and load data, the
transformations that modify and extend data, and the paths that link sources,
transformations, and destinations The Data Flow task is the executable within the SSIS
package that creates, orders, and runs the data flow. A separate instance of the data
flow engine is opened for each Data Flow task in a package. Data Sources,
Transformations, and Data Destinations are the three important categories in the Data
Flow.
Q: How does Error-Handling work in SSIS
When a data flow component applies a transformation to column data, extracts data
from sources, or loads data into destinations, errors can occur. Errors frequently occur
because of unexpected data values.
Type of typical Errors in SSIS:
-Data Connection Errors, which occur incase the connection manager cannot be
initialized with the connection string. This applies to both Data Sources and Data
Destinations along with Control Flows that use the Connection Strings.
-Data Transformation Errors, which occur while data is being transformed over a Data
Pipeline from Source to Destination.
-Expression Evaluation errors, which occur if expressions that are evaluated at run time
perform invalid
Q: What is environment variable in SSIS?
An environment variable configuration sets a package property equal to the value in an
environment variable.
Environmental configurations are useful for configuring properties that are dependent on
the computer that is executing the package.
Q: What are the Transformations available in SSIS?
AGGEGATE - It applies aggregate functions to Record Sets to produce new output
records from aggregated values.
AUDIT - Adds Package and Task level Metadata - such as Machine Name, Execution
Instance, Package Name, Package ID, etc..
CHARACTER MAP - Performs SQL Server level makes string data changes such as
changing data from lower case to upper case.
CONDITIONAL SPLIT Separates available input into separate output pipelines based
on Boolean Expressions configured for each output.
COPY COLUMN - Add a copy of column to the output we can later transform the copy
keeping the original for auditing.
DATA CONVERSION - Converts columns data types from one to another type. It stands
for Explicit Column Conversion.
DATA MINING QUERY Used to perform data mining query against analysis services
SQLServer:SSIS Pipeline
BLOB bytes read
BLOB bytes written
BLOB files in use
Buffer memory
Buffers in use
Buffers spooled
Flat buffer memory
Flat buffers in use
Private buffer memory
Private buffers in use
Rows read
Rows written
Q SSIS Blocking and Non blocking transformation.
Data flow transformations in SSIS use memory/buffers in different ways. The way a
transformation uses memory can dramatically impact the performance of your package.
Transformation buffer usage can be classified into 3 categories: Non Blocking, Partially
Blocking, and (Full) Blocking.
If you picture a data flow as a river, and transformation buffer usage as a dam in that
river, here is the impact of your transformation on your data flow.
A Non Blocking transformation is a dam that just lets the water spill over the top. Other
than perhaps a bit of a slow down the water (your data) proceeds on its way with very
little delay
A Partially Blocking transformation is a dam that holds the water back until it reaches a
certain volume , and then releases that volume of water downstream and then
completely blocks the flow until that volume is achieved again. Your data in this case,
will stop, then start, then stop, then start over and over until all the data has moved
through the transformation. The downstream transformations end up starved for data
during certain periods, and then flooded with data during other periods. Clearly your
downstream transformations will not be able to work as efficiently when this happens,
and your entire package will slow down as a result.
A Blocking transformation is a dam that lets nothing through until the entire volume of the
river has flowed into the dam. Nothing is left to flow from upstream, and nothing has
been passed downstream. Then once the transformation is finished, it releases all the
data downstream. Clearly for a large dataset this can be extremely memory intensive.
Additionally, if all the transforms in your package are just waiting for data, your package
is going to run much more slowly.
Generally speaking if you can avoid Blocking and Partially Blocking transactions, your
package will simply perform better. If you think about it a bit, you will probably be able to
figure out which transformations fall into which category. Here is a quick list for your
reference:
Non Blocking
Audit
Character Map
Conditional Split
Copy Column
Data Conversion
Derived Column
Import Column
Lookup
Multicast
Percentage sampling
Row count
Row sampling
Script component
Partially Blocking
Data mining
Merge
Merge Join
Pivot/Unpivot
Term Extraction
Term Lookup
Union All
Blocking
Aggregate
Fuzzy Grouping
Fuzzy Lookup
Sort
Facts :
Sort is a fully blocking transformation.
A Merge transform requires a Sort, but a Union All does not, use a Union All when you
can.
Q. Diffrence between synchronous and asynchronous data transmission
To understand the difference between a synchronous and an asynchronous
transformation in Integration Services, it is easiest to start with an understanding of a
synchronous transformation. If a synchronous transformation does not meet your needs,
your design might require an asynchronous transformation.
Synchronous Transformations: A synchronous transformation processes incoming rows
and passes them on in the data flow one row at a time. Output is synchronous with input,
meaning that it occurs at the same time. Therefore, to process a given row, the
transformation does not need information about other rows in the data set. In the actual
implementation, rows are grouped into buffers as they pass from one component to the
next, but these buffers are transparent to the user, and you can assume that each row is
processed separately.
call DirectErrorRow to send rows with problems to the error output instead of the default
output.
Asynchronous Transformations: requires an asynchronous transformation when it is not
possible to process each row independently of all other rows. In other words, you cannot
pass each row along in the data flow as it is processed, but instead must output data
asynchronously, or at a different time, than the input. For example, the following
scenarios require an asynchronous transformation:
The component has to acquire multiple buffers of data before it can perform its
processing. An example is the Sort transformation, where the component has to process
the complete set of rows in a single operation.
The component has to combine rows from multiple inputs. An example is the Merge
transformation, where the component has to examine multiple rows from each input and
then merge them in sorted order.
There is no one-to-one correspondence between input rows and output rows. An
example is the Aggregate transformation, where the component has to add a row to the
output to hold the computed aggregate values.
In Integration Services scripting and programming, you specify an asynchronous
transformation by assigning a value of 0 to the SynchronousInputID property of the
component's outputs. . This tells the data flow engine not to send each row automatically
to the outputs. Then you must write code to send each row explicitly to the appropriate
output by adding it to the new output buffer that is created for the output of an
asynchronous transformation.
Note
Since a source component must also explicitly add each row that it reads from
the data source to its output buffers, a source resembles a transformation with
asynchronous outputs.
utility to customize the way the packages in the project will be deployed. For example,
you can specify whether package configurations can be updated when the project is
deployed. To access the properties of an Integration Services project, right-click the
project and click Properties.
The following table lists the deployment utility properties.
1. AllowConfigurationChange: A value that specifies whether configurations can be
updated
during deployment.
2. CreateDeploymentUtility: A value that specifies whether a package deployment is
created when the project is built. This property must be True to create a deployment
utility.
3. DeploymentOutputPath: The location, relative to the Integration Services project, of
the deployment utility.
When you build an Integration Services project, a manifest file,
.SSISDeploymentManifest.xml, is created and added, together with copies of the project
packages and package dependencies, to the bin\Deployment folder in the project, or to
the location specified in the DeploymentOutputPath property. The manifest file lists the
packages, the package configurations, and any miscellaneous files in the project.
The content of the deployment folder is refreshed every time that you build the project.
This means that any file saved to this folder that is not copied to the folder again by the
build process will be deleted. For example, package configuration files saved to the
deployment folders will be deleted.
To create a package deployment utility
In SQL Server Data Tools (SSDT), open the solution that contains the Integration
Services project for which you want to create a package deployment utility.
Right-click the project and click Properties.
In the Property Pages dialog box, click Deployment Utility.
To update package configurations when packages are deployed, set
AllowConfigurationChanges to True.
Set CreateDeploymentUtility to True.
Optionally, update the location of the deployment utility by modifying the
DeploymentOutputPath property.
Click OK.
In Solution Explorer, right-click the project, and then click Build.
View the build progress and build errors in the Output window
After youve gone through these steps the next time you build your project it will create
the file (YourProjectName).SSISDeploymentManifest. This file is located in the same
folder as your packages in the bin\Deployment folder.
If you run this file it will open the Package Installation Wizard that will allow you to deploy
all your packages that were located in the project to a desired location.
Q Setting the Protection Level of Packages
Using Encryption
Encryption, as used by package protection levels, is performed by using the
Microsoft Data Protection API (DPAPI), which is part of the Cryptography API
(CryptoAPI).
The package protection levels that encrypt packages by using passwords require
that you provide a password also. If you change the protection level from a level
that does not use a password to one that does, you will be prompted for a
password.
Also, for the protection levels that use a password, Integration Services uses the
Triple DES cipher algorithm with a key length of 192 bits, available in the .NET
Framework Class Library (FCL).
Protection Levels
1. Do not save sensitive (DontSaveSensitive)
Suppresses the values of sensitive properties in the package when the package
is saved. This protection level does not encrypt, but instead it prevents
properties that are marked sensitive from being saved with the package and
therefore makes the sensitive data unavailable to other users. If a different user
opens the package, the sensitive information is replaced with blanks and the
user must provide the sensitive information.
When used with the dtutil utility (dtutil.exe), this protection level corresponds to
the value of 0.
2. Encrypt all with password (EncryptAllWithPassword)
Uses a password to encrypt the whole package. The package is encrypted by
using a password that the user supplies when the package is created or
exported. To open the package in SSIS Designer or run the package by using the
dtexec command prompt utility, the user must provide the package password.
Without the password the user cannot access or run the package.
When used with the dtutil utility, this protection level corresponds to the value of
3.
3. Encrypt all with user key (EncryptAllWithUserKey)
Uses a key that is based on the current user profile to encrypt the whole
package. Only the user who created or exported the package can open the
package in SSIS Designer or run the package by using the dtexec command
prompt utility.
When used with the dtutil utility, this protection level corresponds to the value of
4.
Note
For protection levels that use a user key, Integration Services uses DPAPI
standards. For more information about DPAPI, see the MSDN Library at
http://msdn.microsoft.com/library.
4. Encrypt sensitive with password (EncryptSensitiveWithPassword)
Uses a password to encrypt only the values of sensitive properties in the
package. DPAPI is used for this encryption. Sensitive data is saved as a part of
the package, but that data is encrypted by using a password that the current
user supplies when the package is created or exported. To open the package in
SSIS Designer, the user must provide the package password. If the password is
not provided, the package opens without the sensitive data and the current user
must provide new values for sensitive data. If the user tries to execute the
package without providing the password, package execution fails. For more
information about passwords and command line execution, see dtexec Utility
(SSIS Tool).
When used with the dtutil utility, this protection level corresponds to the value of
2.
5. Encrypt sensitive with user key (EncryptSensitiveWithUserKey)
Uses a key that is based on the current user profile to encrypt only the values of
sensitive properties in the package. Only the same user who uses the same
profile can load the package. If a different user opens the package, the sensitive
information is replaced with blanks and the current user must provide new values
for the sensitive data. If the user attempts to execute the package, package
execution fails. DPAPI is used for this encryption.
When used with the dtutil utility, this protection level corresponds to the value of
1.
Note For protection levels that use a user key, Integration Services uses DPAPI
standards. For more information about DPAPI, see the MSDN Library at
http://msdn.microsoft.com/library.
6. Rely on server storage for encryption (ServerStorage)
Protects the whole package using SQL Server database roles. This option is
supported only when a package is saved to the SQL Server msdb database. It is
not supported when a package is saved to the file system from Business
Intelligence Development Studio.
you change the protection level as listed in the following steps:
1. During development, leave the protection level of packages set to the
default value, EncryptSensitiveWithUserKey. This setting helps ensure that only
the developer sees sensitive values in the package. Or, you can consider using
EncryptAllWithUserKey, or DontSaveSensitive.
2. When it is time to deploy the packages, you have to change the protection
level to one that does not depend on the developer's user key. Therefore you
typically have to select EncryptSensitiveWithPassword, or
EncryptAllWithPassword. Encrypt the packages by assigning a temporary strong
password that is also known to the operations team in the production
environment.
3. After the packages have been deployed to the production environment, the
operations team can re-encrypt the deployed packages by assigning a strong
password that is known only to them. Or, they can encrypt the deployed
packages by selecting EncryptSensitiveWithUserKey or EncryptAllWithUserKey,
and using the local credentials of the account that will run the packages