<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8460659668410577616</id><updated>2012-02-17T15:29:38.021+05:30</updated><category term='Views'/><category term='Merge'/><category term='Custom Task in SSIS'/><category term='PowerShell'/><category term='SQL Server 2008'/><category term='General'/><category term='SQL Server'/><category term='SSRS'/><category term='Humor'/><category term='SQL Server Scripts'/><category term='SSIS'/><category term='Query Execution'/><category term='Functions'/><title type='text'>SQL Server Solutions</title><subtitle type='html'>Lets dig deep</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-7556692505884167416</id><published>2011-10-20T14:13:00.002+05:30</published><updated>2011-10-20T14:14:33.175+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Numeric gets converted to Text in Excel from SSIS</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is with reference to a question asked in MSDN forum where a User was trying to fill an Excel sheet with one the Numeric Column and field was changing to Text.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problem: &lt;/b&gt;&lt;br /&gt;Lets see the problem with an example I have a simple table with following structure&lt;br /&gt;&lt;i style="color: #38761d;"&gt;CREATE TABLE Emp&lt;br /&gt;( ID INT IDENTITY (1,1)&lt;br /&gt;, [Name] VARCHAR (10)&lt;br /&gt;, Salary NUMERIC (10,2)&lt;br /&gt;);&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Here ID and Salary are Integer and Numeric receptively and if we try to export them to Excel using SSIS, Excel will store the correct values but would convert them into Text as below( see the Green mark over cell)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cyaNX94b-Ag/Tp_b6iFqt_I/AAAAAAAAAdY/hLqls3fXqx0/s1600/greenMark.PNG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-cyaNX94b-Ag/Tp_b6iFqt_I/AAAAAAAAAdY/hLqls3fXqx0/s1600/greenMark.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Unforunatly there is no way that we can control or change&amp;nbsp; the format/ datatype of a column of Excel sheet form SSIS.Even if we change the datatype using Advance Editor in Excel Destination , it wont reflect the change.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;So is there is solution to this, well not excatly a solution but a workaround Yes.&lt;br /&gt;When Excel decide about format of cells in a column it takes sample from first few cells (other than first row-header) and keeps the same format for rest of cells down below. We can use this property of Excel and create one dummy row with the format as we are excepting for rest of the cells.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zQj5ocya_6Q/Tp_b58GVEMI/AAAAAAAAAdQ/Hmv7L39-6Eo/s1600/dummyrow.PNG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-zQj5ocya_6Q/Tp_b58GVEMI/AAAAAAAAAdQ/Hmv7L39-6Eo/s1600/dummyrow.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now during actual writing of data Excel will pick the format from Dummy Row and keep it for rest of them. You can even hide Dummy Row after putting some values in it. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-e1VHVPoNcUs/Tp_b7FW10jI/AAAAAAAAAdg/kIh25pjNscU/s1600/output.PNG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-e1VHVPoNcUs/Tp_b7FW10jI/AAAAAAAAAdg/kIh25pjNscU/s1600/output.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cheers!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-7556692505884167416?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/7556692505884167416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/10/numeric-gets-converted-to-text-in-excel.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7556692505884167416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7556692505884167416'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/10/numeric-gets-converted-to-text-in-excel.html' title='Numeric gets converted to Text in Excel from SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-cyaNX94b-Ag/Tp_b6iFqt_I/AAAAAAAAAdY/hLqls3fXqx0/s72-c/greenMark.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-8869063367985772461</id><published>2011-06-28T14:07:00.004+05:30</published><updated>2011-06-28T14:21:11.202+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>SSRS Interview Questions</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8ky5pvBtENU/TgmOH5igKHI/AAAAAAAAAck/Qe3VmJfq3wg/s1600/ssrsa.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;Q1. WHAT is SQL Server Reporting Services(SSRS)?&lt;/b&gt;&lt;br /&gt;SQL Server Reporting Services is a server-based reporting platform that you can use to create and manage tabular, matrix, graphical, and free-form reports that contain data from relational and multidimensional data sources. The reports that you create can be viewed and managed over a World Wide Web-based connection&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q2. Architecture of SSRS:&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8ky5pvBtENU/TgmOH5igKHI/AAAAAAAAAck/Qe3VmJfq3wg/s1600/ssrsa.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-8ky5pvBtENU/TgmOH5igKHI/AAAAAAAAAck/Qe3VmJfq3wg/s320/ssrsa.PNG" width="293" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;&amp;nbsp;&lt;i&gt;-Admin&lt;/i&gt;&lt;/u&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Q3. What are the three stages of Enterprise Reporting Life Cycle ?&lt;/b&gt;&lt;br /&gt;a. Authoring&lt;br /&gt;b. Management&lt;br /&gt;c. Access and Delivery&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q4. What are the components included in SSRS&lt;/b&gt;?&lt;br /&gt;&lt;b&gt;1. A Complete set of Tools&lt;/b&gt; that can be used to create, manage and view reports&lt;br /&gt;&lt;b&gt;2. A Report Server component&lt;/b&gt; that hosts and processes reports in a variety of formats. Output formats include HTML, PDF, TIFF, Excel, CSV, and more.&lt;br /&gt;&lt;b&gt;3.An API&lt;/b&gt; that allows developers to integrate or extend data and report processing in custom applications, or create custom tools to build and manage reports.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q5. What is the benefit of using embedded code in a report?&lt;/b&gt;&lt;br /&gt;1. Reuseability of Code: function created in embedded code to perform a logic can be then used in multiple expressions&lt;br /&gt;2. Centralized code: helps in better manageability of code.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q6. Which programming language can be used to code embedded functions in SSRS?&lt;/b&gt;&lt;br /&gt;Visual Basic .NET Code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q7. Important terms used in the reporting services? &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Report definition:&lt;/b&gt;&amp;nbsp; The blueprint for a report before the report is processed or rendered. A report definition contains information about the query and layout for the report.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Report snapshot: &lt;/b&gt;A report that contains data captured at a specific point in time. A report snapshot is actually a report definition that contains a dataset instead of query instructions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Rendered report:&lt;/b&gt; A fully processed report that contains both data and layout information, in a format suitable for viewing (such as HTML).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Parameterized report:&lt;/b&gt; A published report that accepts input values through parameters.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Shared data source:&lt;/b&gt; A predefined, standalone item that contains data source connection information.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. Shared schedule:&lt;/b&gt; A predefined, standalone item that contains schedule information.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7. Report-specific data source:&lt;/b&gt; Data source information that is defined within a report definition.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8. Report model:&lt;/b&gt; A semantic description of business data, used for ac hoc reports created in Report Builder.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;9. Linked report:&lt;/b&gt; A report that derives its definition through a link to another report.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;10. Report server administrator:&lt;/b&gt; This term is used in the documentation to describe a user with elevated privileges who can access all settings and content of a report server. If you are using the default roles, a report server administrator is typically a user who is assigned to both the Content Manager role and the System Administrator role. Local administrators can have elevated permission even if role assignments are not defined for them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;11. Folder hierarchy:&lt;/b&gt; A bounded namespace that uniquely identifies all reports, folders, report models, shared data source items, and resources that are stored in and managed by a report server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;12. Report Server:&lt;/b&gt; Describes the Report Server component, which provides data and report processing, and report delivery. The Report Server component includes several subcomponents that perform specific functions. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;13. Report Manager:&lt;/b&gt; Describes the Web application tool used to access and manage the contents of a report server database.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;14. Report Builder:&lt;/b&gt; Report authoring tool used to create ad hoc reports.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;15. Report Designer:&lt;/b&gt; Report creation tool included with Reporting Services.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;16. Model Designer:&lt;/b&gt; Report model creation tool used to build models for ad hoc reporting.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;17. Report Server Command Prompt Utilities:&lt;/b&gt; Command line utilities that you can use to administer a report server.&lt;br /&gt;a) RsConfig.exe, b) RsKeymgmt.exe, c) Rs.exe&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q8. what are the Command Line Utilities available In Reporting Services?&lt;/b&gt;&lt;br /&gt;&lt;b&gt;· Rsconfig Utility (Rsconfig.exe):&lt;/b&gt; encrypts and stores connection and account values in the RSReportServer.config file. Encrypted values include report server database connection information and account values used for unattended report processing&lt;br /&gt;&lt;b&gt;· RsKeymgmt Utility:&lt;/b&gt; Extracts, restores, creates, and deletes the symmetric key used to protect sensitive report server data against unauthorized access&lt;br /&gt;&lt;b&gt;· RS Utility: &lt;/b&gt;this utility is mainly used to automate report server deployment and administration tasks.Processes script you provide in an input file.&lt;br /&gt;&amp;nbsp;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Q. How to know Report Execution History?&lt;/b&gt;&lt;br /&gt;ExecutionLog table in ReportServer database store all the logs from last two months&lt;b&gt;. &lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;i&gt;SELECT * FROM ReportServer.dbo.ExecutionLog&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;&lt;b&gt;-Development&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Q. What is difference between Tablular and Matrix report?&lt;/b&gt;&lt;br /&gt;&lt;b&gt;OR What are the different styles of reports?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tablular report:&lt;/b&gt; A tabular report is the most basic type of report. Each column corresponds to a column selected from the database.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Matrix report:&lt;/b&gt; A matrix (cross-product) report is a cross-tabulation of four groups of data:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a. One group of data is displayed across the page.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b. One group of data is displayed down the page.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c. One group of data is the cross-product, which determines all possible locations where the across and down data relate and places a cell in those locations.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d. One group of data is displayed as the "filler" of the cells.&lt;br /&gt;Martix reports can be considered more of a&amp;nbsp; Pivot table.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q. How to create Drill-through reports?&lt;/b&gt;&lt;br /&gt;Using Navigation property of a cell and setting child report and its parameters in it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q. How to create Drill-Down reports?&lt;/b&gt;&lt;br /&gt;To cut the story short:&amp;nbsp; &lt;b&gt;&lt;/b&gt;&lt;br /&gt;- By grouping data on required fields&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8ky5pvBtENU/TgmOH5igKHI/AAAAAAAAAck/Qe3VmJfq3wg/s1600/ssrsa.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;-Then toggle visibility based on the grouped filed &lt;br /&gt;&lt;br /&gt;Q. How to &lt;i&gt;select ALL&lt;/i&gt; from a parameter list?&lt;br /&gt;&lt;a href="http://sqlserversolutions.blogspot.com/2011/03/select-all-in-parameter-of-ssrs-report.html"&gt;http://sqlserversolutions.blogspot.com/2011/03/select-all-in-parameter-of-ssrs-report.html&amp;nbsp;&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(Work in progress, more to follow)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #38761d;"&gt;&lt;b&gt;&lt;u&gt;&lt;i&gt;&lt;a href="http://sqlserversolutions.blogspot.com/2009/02/ssis-interview-questions.html"&gt;Might want to read SSIS Interview quesitons&lt;/a&gt; &lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-8869063367985772461?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/8869063367985772461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/06/ssrs-interview-questions.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8869063367985772461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8869063367985772461'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/06/ssrs-interview-questions.html' title='SSRS Interview Questions'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8ky5pvBtENU/TgmOH5igKHI/AAAAAAAAAck/Qe3VmJfq3wg/s72-c/ssrsa.PNG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-7985656516734284936</id><published>2011-06-06T14:42:00.001+05:30</published><updated>2011-06-06T14:44:18.284+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>Check out Whats happening on the Report Server</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Sometime it may happen that Report server may work slow and you&amp;nbsp; might want to know whats really happening in the server and which reports are in use to get a lead.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;1.&lt;/u&gt; &lt;/b&gt;To know which reports are running on you system is to check &lt;u&gt;ExecutionLog&lt;/u&gt; table in ReportServer database of your server.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #38761d;"&gt;&lt;i&gt;&lt;b&gt;SELECT * FROM ReportServer.dbo.ExecutionLog&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;This table contains the history of which report is executed at which time, taking how much time and by whom. This can lead to the report which is taking most time.&lt;br /&gt;&lt;br /&gt;But the draw back of this table is that it does not get information about subscription reports. And when I look into any Report Server first thing I look for is Reports Subscriptions. Those are little hidden ones and take work in background with letting anyone who that how much resource and time they are consuming.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;2.&lt;/b&gt;&lt;/u&gt; Next method of knowing whats happening in our Report Server is through &lt;u&gt;Manage Jobs&lt;/u&gt; page on ReportServers SiteSettings&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1kj2qo5uUyQ/TeyZ4isdcOI/AAAAAAAAAcg/lmwWwTagd_E/s1600/ManageJobs.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://2.bp.blogspot.com/-1kj2qo5uUyQ/TeyZ4isdcOI/AAAAAAAAAcg/lmwWwTagd_E/s320/ManageJobs.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This displays and lets user to cancel any In-Progress Report or Subscription. Only limition is that it will display only in-progress reports/subscription which are in-progress for atleast 60 seconds.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-7985656516734284936?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/7985656516734284936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/06/check-out-whats-happening-on-report.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7985656516734284936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7985656516734284936'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/06/check-out-whats-happening-on-report.html' title='Check out Whats happening on the Report Server'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1kj2qo5uUyQ/TeyZ4isdcOI/AAAAAAAAAcg/lmwWwTagd_E/s72-c/ManageJobs.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-2420392392525640030</id><published>2011-05-10T11:32:00.000+05:30</published><updated>2011-05-10T11:32:22.726+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Data-dump in Dynamic Flat file with todays date</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is with reference to a question asked my an online friend regarding how can we do a daily Datadump on a flat file with a todays date as a file name.&lt;br /&gt;&lt;br /&gt;To show that I will use an example in which we will dump a table "Student" from SQL Server database into a file with name appended with todays date and time eg. DataDump_201105101108.txt. 20110510 being the date and 11:08 as time of load.&lt;br /&gt;&lt;br /&gt;1. Lets have a look at our table.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-noWQ3k9SoP0/TcjT--E1wdI/AAAAAAAAAcc/DkI0c1xLosA/s1600/Student.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://1.bp.blogspot.com/-noWQ3k9SoP0/TcjT--E1wdI/AAAAAAAAAcc/DkI0c1xLosA/s320/Student.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;2. Now create a simple package with a Data Flow task which dumps data from Student to a flat file let say with Dummy.txt. SSIS is metadata oriented so at the time of creation of package you would need to have a dummy txt file so that mappings can be created.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-p9ajP9lyVyk/TcjT8VBtWxI/AAAAAAAAAcI/KZh5mjM0qmo/s1600/DTF.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://4.bp.blogspot.com/-p9ajP9lyVyk/TcjT8VBtWxI/AAAAAAAAAcI/KZh5mjM0qmo/s320/DTF.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3. Not the actual work starts. Go the Flat file Connection Managers Properties and expand Expressions.&lt;br /&gt;&amp;nbsp;Choose ConnectionString as Property.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-K1Zg8lfk4bw/TcjT8xnCJEI/AAAAAAAAAcM/A-nWLP4UOfQ/s1600/expressions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-K1Zg8lfk4bw/TcjT8xnCJEI/AAAAAAAAAcM/A-nWLP4UOfQ/s320/expressions.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;4. In Expression Builder window create a expression as&lt;br /&gt;&lt;b&gt;&lt;i style="color: blue;"&gt;"E:\\DataDump_" + (DT_WSTR,4)DatePart("yyyy", GetDate()) + RIGHT("0" + (DT_WSTR,2)DatePart("mm", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("dd", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("hh", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("mi", GetDate()), 2) + ".txt"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-OlojPB78jAI/TcjT9wZKe8I/AAAAAAAAAcU/evkgbHyUALM/s1600/Formula.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="284" src="http://3.bp.blogspot.com/-OlojPB78jAI/TcjT9wZKe8I/AAAAAAAAAcU/evkgbHyUALM/s320/Formula.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;5. Run the package it will create a flat file with required File name.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--slK88HJtRM/TcjT-fFucFI/AAAAAAAAAcY/qiF_mk4mr5E/s1600/run.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://1.bp.blogspot.com/--slK88HJtRM/TcjT-fFucFI/AAAAAAAAAcY/qiF_mk4mr5E/s320/run.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TvkpZcRCDsc/TcjT9ez6pgI/AAAAAAAAAcQ/hQN_mplNK8s/s1600/files.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-TvkpZcRCDsc/TcjT9ez6pgI/AAAAAAAAAcQ/hQN_mplNK8s/s1600/files.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--Cheers&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-2420392392525640030?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/2420392392525640030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/05/data-dump-in-dynamic-flat-file-with.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/2420392392525640030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/2420392392525640030'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/05/data-dump-in-dynamic-flat-file-with.html' title='Data-dump in Dynamic Flat file with todays date'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-noWQ3k9SoP0/TcjT--E1wdI/AAAAAAAAAcc/DkI0c1xLosA/s72-c/Student.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5536794053148117779</id><published>2011-04-14T15:42:00.004+05:30</published><updated>2011-04-15T09:53:09.746+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Can't Expand MSDB in Integration Services Server</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;&lt;b&gt;TCP Provider: No connection could be made because the target machine actively refused it. (MsDtsSrvr)&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #cc0000; text-align: center;"&gt;&lt;b&gt;OR&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #cc0000;"&gt;&lt;b&gt;"Named Pipes Provider: Could not open a connection to SQL Server [2].&amp;nbsp; (Microsoft SQL Native Client)"&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Other day one of the team here had to work on a fairly static server which has few SSIS packages installed on it. The Team wasn't able to expand MSDB node to view packages installed on the Intergration Services.&lt;br /&gt;Error they were receiving was:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zGRKiNjFwK4/TabGWTY81SI/AAAAAAAAAcA/SSsY-hIgFwc/s1600/err.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="184" src="http://1.bp.blogspot.com/-zGRKiNjFwK4/TabGWTY81SI/AAAAAAAAAcA/SSsY-hIgFwc/s320/err.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;Steps to check if you are not able to expand MSDB in Integration Services:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;1. &lt;/b&gt;User has permission on MSDB database as SSIS pacakges are stored in MSDB&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. &lt;/b&gt;Check if SQLBrowser services is running. Run &amp;gt; Services.msc&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.&lt;/b&gt; Check if TCP-IP/Named pipe are enabled for the Sever instance from SQL Server Configuration Manager&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. &lt;/b&gt;Windows firewall is not blocking SQL Sever access. Add SQLServer.exe or port 1433 to exceptions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. &lt;/b&gt;Find MsDtsSrvr.ini file at drive:\Program Files\Microsoft SQL Server\90\DTS\Binn (for 2008 find in 100\DTS\bin folder) and check for Server tag if it is &lt;b&gt;&lt;span class="m"&gt;&amp;lt;&lt;/span&gt;&lt;span class="t"&gt;ServerName&lt;/span&gt;&lt;span class="m"&gt;&amp;gt;&lt;/span&gt;&lt;span class="tx"&gt;.&lt;/span&gt;&lt;span class="m"&gt;&lt;span class="t"&gt;ServerName&lt;/span&gt;&lt;span class="m"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="m"&gt;&lt;span class="m"&gt; (this was the case with the team here :-) )&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="m"&gt;&lt;span class="m"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="m"&gt;If yes then replace "." with Servername\instance name and restart Integration Sevices.&lt;/span&gt;&lt;b&gt;&lt;span class="m"&gt;&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kc5TZOdJbb4/TabH_UJXwDI/AAAAAAAAAcE/an7EyCFSv-k/s1600/ini.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="109" src="http://1.bp.blogspot.com/-kc5TZOdJbb4/TabH_UJXwDI/AAAAAAAAAcE/an7EyCFSv-k/s320/ini.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Have fun!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5536794053148117779?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5536794053148117779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/04/cant-expand-msdb-in-integration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5536794053148117779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5536794053148117779'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/04/cant-expand-msdb-in-integration.html' title='Can&apos;t Expand MSDB in Integration Services Server'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-zGRKiNjFwK4/TabGWTY81SI/AAAAAAAAAcA/SSsY-hIgFwc/s72-c/err.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-4315973422459783778</id><published>2011-03-22T11:07:00.002+05:30</published><updated>2011-03-22T11:20:14.670+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>Select ALL in parameter of SSRS report</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Select ALL as parameter value is one of the most common functionality which most of the reports have and there are number of ways to implement it.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-mQ9PtL8zptQ/TYg3thRJgxI/AAAAAAAAAb8/ECwqYqYwGRI/s1600/sel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-mQ9PtL8zptQ/TYg3thRJgxI/AAAAAAAAAb8/ECwqYqYwGRI/s1600/sel.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I will explain below the way I do it and I find easiest. The driver of the solution is CASE option under WHERE clause of SELECT DataSet Query.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #0c343d;"&gt;&lt;b&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT * FROM TableName&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;i&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CASE&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHEN&amp;nbsp; @RepParam &amp;lt;&amp;gt; 'ALL' AND ColName= @&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #274e13;"&gt;RepParam&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #274e13;"&gt; THEN 1&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN&amp;nbsp; @&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #274e13;"&gt;RepParam&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: #274e13;"&gt;= 'ALL'&amp;nbsp; THEN 1&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; END&lt;/span&gt;&lt;br style="color: #274e13;" /&gt;&lt;span style="color: #274e13;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) = 1 ;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Lets see it through an simple Student Table example where we will Select student either on the basis of  the Grade they are in or select all of them.&lt;br /&gt;&lt;br /&gt;1. Records in Student table are&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-B0OilkaFd4k/TYgysStVhrI/AAAAAAAAAbc/wngL3IFP79Y/s1600/StudentTable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="https://lh3.googleusercontent.com/-B0OilkaFd4k/TYgysStVhrI/AAAAAAAAAbc/wngL3IFP79Y/s320/StudentTable.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-1wfHVBCzqjU/TYgy1mKchfI/AAAAAAAAAbg/vSXxIojAZOo/s1600/qSelectStudent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;2. Create a simple report with DataSet Student as SELECT * FROM Student;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-vltYDfrRj5M/TYgy3-q6QMI/AAAAAAAAAbo/P4pwMHFhKrw/s1600/SelectALL.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="154" src="https://lh6.googleusercontent.com/-vltYDfrRj5M/TYgy3-q6QMI/AAAAAAAAAbo/P4pwMHFhKrw/s320/SelectALL.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. To add the Grade parameter and option for Select ALL&lt;br /&gt;&lt;br /&gt;3.a. Create a DataSet for available Grades for Report parameter&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-OepYZbNzDZs/TYgy4nidGbI/AAAAAAAAAbs/q_xdI7NyE08/s1600/SelectGrades.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="https://lh4.googleusercontent.com/-OepYZbNzDZs/TYgy4nidGbI/AAAAAAAAAbs/q_xdI7NyE08/s320/SelectGrades.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3.b. Configure a Report parameter "Grade" as&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-NG6C1avnrlw/TYgy2X5VKNI/AAAAAAAAAbk/5KGwqLFoH5E/s1600/reportParam.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="https://lh3.googleusercontent.com/-NG6C1avnrlw/TYgy2X5VKNI/AAAAAAAAAbk/5KGwqLFoH5E/s320/reportParam.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3.c. Modify query for Student Dataset&amp;nbsp; to allow filtering on Grades as&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-1wfHVBCzqjU/TYgy1mKchfI/AAAAAAAAAbg/vSXxIojAZOo/s1600/qSelectStudent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="https://lh3.googleusercontent.com/-1wfHVBCzqjU/TYgy1mKchfI/AAAAAAAAAbg/vSXxIojAZOo/s320/qSelectStudent.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;4.a. Run the Report for ALL grades&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-9Aj3WByDxjE/TYgzF1F-K2I/AAAAAAAAAbw/Pwc2l6qQe3U/s1600/ALLGrades.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="https://lh6.googleusercontent.com/-9Aj3WByDxjE/TYgzF1F-K2I/AAAAAAAAAbw/Pwc2l6qQe3U/s320/ALLGrades.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;4.b. Run the Report for grade - X &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-lDSrOeJTxTw/TYgzGuw9QWI/AAAAAAAAAb0/_I7MdiXpGTA/s1600/gradeX.png" imageanchor="1"&gt;&lt;img border="0" height="240" src="https://lh4.googleusercontent.com/-lDSrOeJTxTw/TYgzGuw9QWI/AAAAAAAAAb0/_I7MdiXpGTA/s1600/gradeX.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Cheers!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-4315973422459783778?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/4315973422459783778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/03/select-all-in-parameter-of-ssrs-report.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4315973422459783778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4315973422459783778'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2011/03/select-all-in-parameter-of-ssrs-report.html' title='Select ALL in parameter of SSRS report'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-mQ9PtL8zptQ/TYg3thRJgxI/AAAAAAAAAb8/ECwqYqYwGRI/s72-c/sel.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-8944587896128925195</id><published>2010-12-10T11:21:00.004+05:30</published><updated>2010-12-10T11:26:30.776+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Execute Scripts from a folder using Powershell</title><content type='html'>For last few days I am kinda got wired up with Powershell and trying to do whatever I used to do otherwise using SQL PowerShell e.g. other day we had some 40 odd scripts to be deployed on our database so I worte a simple 2 liner SQL PS script which would go and execute each script one by one.&lt;br /&gt;&lt;br /&gt;1. To illustrate I have 3 Scripts in a folder called ScritpsFolder to create 3 Stored Procedures&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/TQG-y6d8eNI/AAAAAAAAAao/3Zg_99HhQtQ/s1600/Folder.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="101" src="http://2.bp.blogspot.com/_QovaFUn52ys/TQG-y6d8eNI/AAAAAAAAAao/3Zg_99HhQtQ/s320/Folder.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;2. Script inside sp_A&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/TQG-0O9aXeI/AAAAAAAAAas/SGQP2ZVX0L8/s1600/Procs.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_QovaFUn52ys/TQG-0O9aXeI/AAAAAAAAAas/SGQP2ZVX0L8/s1600/Procs.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3. Now the Powershell code to execute scripts from the folder.&lt;br /&gt;&lt;br /&gt;&lt;b style="color: red;"&gt;ForEach ($S In Gci -Path "C:\ScriptsFolder\" -Fliter *.sql | Sort-Object Name )&lt;br /&gt;{&lt;br /&gt;Invoke-SqlCmd -InputFile $S.FullName&lt;br /&gt;}&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/TQG-1yPHkoI/AAAAAAAAAaw/0DceZNydh9Q/s1600/RunScript.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="118" src="http://1.bp.blogspot.com/_QovaFUn52ys/TQG-1yPHkoI/AAAAAAAAAaw/0DceZNydh9Q/s320/RunScript.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;a) ForEach :&lt;/b&gt; will iterate on each item insire $S.&lt;br /&gt;&lt;b&gt;b) Gci (Get-Child Item):&lt;/b&gt; will get all the filenames from given path and will store in variable $S. &lt;br /&gt;&lt;b&gt;c) Invoke-SqlCmd:&lt;/b&gt; will take the script and run it on the Database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To run the script you should be in context of your SQL Server/Database and particular database if it not defined in the script. &lt;br /&gt;&lt;br /&gt;4. Check the SPs created in the database&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/TQG-xZjWcGI/AAAAAAAAAak/pAWSgH6Qvjs/s1600/Check.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/TQG-xZjWcGI/AAAAAAAAAak/pAWSgH6Qvjs/s1600/Check.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-8944587896128925195?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/8944587896128925195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/12/execute-scripts-from-folder-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8944587896128925195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8944587896128925195'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/12/execute-scripts-from-folder-using.html' title='Execute Scripts from a folder using Powershell'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QovaFUn52ys/TQG-y6d8eNI/AAAAAAAAAao/3Zg_99HhQtQ/s72-c/Folder.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-8992193290301590279</id><published>2010-12-01T15:26:00.006+05:30</published><updated>2010-12-01T15:43:35.814+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Execution Tree in SSIS</title><content type='html'>I have been asked many times, the way we can see Execution Query Plan for Queries in SSMS, Can we see something similar in&amp;nbsp; SSIS too. Well YES WE CAN, it wont give you factors like I/O, CPU or SubTree Cost but will give you fair idea of path and buffers SSIS engine will create to do the DATA FLOW.&lt;br /&gt;&lt;br /&gt;At run time Data Flow Engine divides the Data Flow Task operations into Execution Trees which demonstrate how package uses buffers and threads. &lt;b&gt;These execution trees specify how buffers and threads are allocated in the package&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Each tree creates a new buffer and may execute on a different thread. When a new buffer is created such as when a partially blocking or blocking transformation is added to the pipeline, additional memory is required to handle the data transformation; however, it is important to note that each new tree may also give you additional worker thread.[TechNet]&lt;br /&gt;&lt;br /&gt;Let's take an example to show the Execution Tree in the Data Flow Task. I will create a simple Data Flow Task and have two flows in it.&lt;br /&gt;&lt;br /&gt;1) Direct transfer of data from SrcEmployee table to DestEmployee table.&lt;br /&gt;2) SrcDepartment to DestDepartment by having one Sort Component in between to sort on DepName.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/TPYZhDfD2TI/AAAAAAAAAaY/YngaLRUomjs/s1600/SSISExecutionTree.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/_QovaFUn52ys/TPYZhDfD2TI/AAAAAAAAAaY/YngaLRUomjs/s320/SSISExecutionTree.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TPYZo0tv4mI/AAAAAAAAAag/zH4DckZoDKE/s1600/Logs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;To see Execution Tree log you will have enable build-in logging and to see log entries add Log Event window from View&amp;gt;OtherWindows.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TPYZo0tv4mI/AAAAAAAAAag/zH4DckZoDKE/s1600/Logs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://3.bp.blogspot.com/_QovaFUn52ys/TPYZo0tv4mI/AAAAAAAAAag/zH4DckZoDKE/s320/Logs.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now when you run package, SSIS will log an entry for User:PipelineExecutionTrees which discribes the Trees/paths SSIS has created to run the Package.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/TPYZk_WuQfI/AAAAAAAAAac/CjZE73deq80/s1600/LogEvent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://1.bp.blogspot.com/_QovaFUn52ys/TPYZk_WuQfI/AAAAAAAAAac/CjZE73deq80/s320/LogEvent.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Message:&lt;br /&gt;&lt;br /&gt;&lt;b style="color: #274e13;"&gt;&lt;span style="background-color: white;"&gt;Begin Path 0 &lt;/span&gt;&lt;i&gt;&lt;span style="background-color: white;"&gt;[Tree 1]&lt;/span&gt;&lt;/i&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; output "OLE DB Source Output" (11); component "SrcEmployee" (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; input "OLE DB Destination Input" (29); component "DestEmployee" (16)&lt;br /&gt;End Path 0&lt;br /&gt;&lt;br /&gt;Begin Path 1 &lt;i&gt;[Tree 2]&lt;/i&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; output "OLE DB Source Output" (124); component "SrcDepartment" (114)&lt;br /&gt;&amp;nbsp;&amp;nbsp; input "Sort Input" (147); component "SortDepartment" (146)&lt;br /&gt;End Path 1&lt;br /&gt;&lt;br /&gt;Begin Path 2 &lt;i&gt;[Tree 3]&lt;/i&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; output "Sort Output" (148); component "SortDepartment" (146)&lt;br /&gt;&amp;nbsp;&amp;nbsp; input "OLE DB Destination Input" (142); component "DestDepartment" (129)&lt;br /&gt;End Path 2&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Happy Extraction and &lt;i&gt;Inception&lt;/i&gt;!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-8992193290301590279?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/8992193290301590279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/12/execution-tree-in-ssis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8992193290301590279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8992193290301590279'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/12/execution-tree-in-ssis.html' title='Execution Tree in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/TPYZhDfD2TI/AAAAAAAAAaY/YngaLRUomjs/s72-c/SSISExecutionTree.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-6223171023422279669</id><published>2010-11-16T14:34:00.002+05:30</published><updated>2010-11-16T14:36:51.644+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Merge'/><title type='text'>MERGE Statement in SQL SERVER 2008</title><content type='html'>&lt;span style="font-size: small;"&gt;SQL SERVER 2008 has introduced &lt;b&gt;MERGE&lt;/b&gt; statement which is very helpful in synchronizing two tables.We can perform INSERT, UPDATE, or DELETE operations on target table based on the result of the join with the source table.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Well Syntax for MERGE is very complex so I will use a very simple example where I will create two table SOURCE&amp;nbsp; and TARGET and then perform insert, update and delete on SOURCE table and then synchronize TARGET table using MERGE Statement.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;1. Lets create two tables Source and Target&lt;/b&gt; with same schema and data and after updates in Source we will sync it with Target table.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;nbsp;CREATE TABLE SOURCE&lt;br /&gt;(&lt;br /&gt;ID INTEGER,&lt;br /&gt;Name VARCHAR(50),&lt;br /&gt;);&lt;br /&gt;GO&lt;br /&gt;INSERT INTO SOURCE&lt;br /&gt;( ID, Name)&lt;br /&gt;VALUES&lt;br /&gt;(1, 'Rahul'),&lt;br /&gt;(2, 'Mark'),&lt;br /&gt;(3, 'Jen');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;SELECT *&amp;nbsp; INTO TARGET FROM SOURCE;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/TOJIJl8OUaI/AAAAAAAAAXc/HcSEfcu7_NA/s1600/MERGE1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_QovaFUn52ys/TOJIJl8OUaI/AAAAAAAAAXc/HcSEfcu7_NA/s320/MERGE1.PNG" width="285" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;2. Lets modify data in Source table ( Delete , update and Insert new record).&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;DELETE FROM SOURCE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ID =2;&lt;br /&gt;--Update in source &lt;br /&gt;UPDATE Source &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET Name = 'Jason'&lt;br /&gt;WHERE Id = 3;&lt;br /&gt;&lt;br /&gt;-- new record in source&lt;br /&gt;INSERT INTO SOURCE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ID, Name)&lt;br /&gt;VALUES &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4, 'Antonia');&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/TOJIKCGuheI/AAAAAAAAAXg/4n-qh0ugo8A/s1600/MERGE2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_QovaFUn52ys/TOJIKCGuheI/AAAAAAAAAXg/4n-qh0ugo8A/s320/MERGE2.PNG" width="258" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;3. Now comes the MERGE Statement&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Source table will be joined with Target table on ID and then WHEN clause is used to identify type of changes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;a.Update: Where both ID match but other columns doesnt match.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;MATCHED and Target.Name &amp;lt;&amp;gt; Source.Name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;b. New/Inserts: When IDs are not matched by Target&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;c. Deletes: When IDs are not matched by Source.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;MERGE INTO TARGET&lt;br /&gt;USING (SELECT * from Source) AS SOURCE&lt;br /&gt;ON Target.ID = Source.ID&lt;br /&gt;WHEN -- upadate &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MATCHED and Target.Name &amp;lt;&amp;gt; Source.Name THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; UPDATE &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SET Name = SOURCE.Name &lt;br /&gt;WHEN -- new record in source&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOT MATCHED BY TARGET THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT&amp;nbsp; ( ID ,Name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES ( Source.ID,Source.Name)&lt;br /&gt;WHEN --records deleted in source&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOT MATCHED BY SOURCE THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DELETE&lt;br /&gt;--see action&lt;br /&gt;OUTPUT $action&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , Inserted.ID AS InsertedID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , Inserted.NAME AS InsertedName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , Deleted.ID AS DeletedID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , Deleted.Name AS DeletedName;&lt;/i&gt;&lt;/span&gt; &lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I have used an OUTPUT to see operations performed by MERGE Statement.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/TOJIK0kKVPI/AAAAAAAAAXk/vHJ53MnTb4A/s1600/MERGE3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_QovaFUn52ys/TOJIK0kKVPI/AAAAAAAAAXk/vHJ53MnTb4A/s320/MERGE3.PNG" width="284" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;4. Tables after MERGE&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/TOJIIVD4owI/AAAAAAAAAXY/R06DstlSJNk/s1600/MERGE4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_QovaFUn52ys/TOJIIVD4owI/AAAAAAAAAXY/R06DstlSJNk/s320/MERGE4.PNG" width="274" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Happy Coding!!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-6223171023422279669?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/6223171023422279669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/11/merge-statement-in-sql-server-2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6223171023422279669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6223171023422279669'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/11/merge-statement-in-sql-server-2008.html' title='MERGE Statement in SQL SERVER 2008'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/TOJIJl8OUaI/AAAAAAAAAXc/HcSEfcu7_NA/s72-c/MERGE1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-1991294900635589649</id><published>2010-08-30T12:05:00.001+05:30</published><updated>2010-08-30T12:06:25.429+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Script Out Database objects using PowerShell</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;PowerShell is a very powerful tool and sometimes provide an amazing way for accomplishing which otherwise would have taken lot of effort and time.. One such scenario I had recently when I had to script out few stored procedure from my SQL Sever Database. There we go.. Below I will explain how we can script out Database Objects using PowerShell.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Lets get rolling and start PowerShell-&amp;nbsp;&lt;/b&gt; We start PowerShell directly from SSMS by Right clicking any node and select Start PowerShell. It will open PowerShell connected to your Server&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/THtQIVEwlqI/AAAAAAAAAW4/pROCBHSRHb8/s1600/PS1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/THtQIVEwlqI/AAAAAAAAAW4/pROCBHSRHb8/s320/PS1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I will script Stored Procedures from the Database and I will show various options of doing that.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;First let get down to Stored Procedures&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/THtQGt3nJyI/AAAAAAAAAWw/UhOHv18tPQQ/s1600/GetToSP.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/THtQGt3nJyI/AAAAAAAAAWw/UhOHv18tPQQ/s320/GetToSP.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;1. First thing first .. let try to display our Stored Procedure on Screen&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b style="color: #38761d;"&gt;gci *&lt;span style="color: black;"&gt;uspGetAllNodes&lt;/span&gt;* | %{$_.Script()}&lt;/b&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/THtQKT2WPAI/AAAAAAAAAXA/q39Ako72e1o/s1600/script1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/THtQKT2WPAI/AAAAAAAAAXA/q39Ako72e1o/s320/script1.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;2. Displaying it on Screen doesnt help much, lets Sript-Out this in a file&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b style="color: #38761d;"&gt;gci *&lt;span style="color: black;"&gt;uspGetAllNodes&lt;/span&gt;* | %{$_.Script()} | Out-File &lt;span style="color: black;"&gt;c:\Scripts\uspGetAllNodes.sql&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/THtQMfsTeuI/AAAAAAAAAXI/IyEkOqYHqNM/s1600/toFile.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/THtQMfsTeuI/AAAAAAAAAXI/IyEkOqYHqNM/s320/toFile.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b style="color: #38761d;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;3. Thats cool we can get one Stored Procedure, how about getting all the StoredProcedures&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="color: #38761d;"&gt;gci&amp;nbsp; | %{$_.Script()} | Out-File &lt;/span&gt;c:\Scripts\AllStoredProcs.txt&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/THtP-n3WeSI/AAAAAAAAAWY/hN_DeSmTQcc/s1600/all+sps.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/THtP-n3WeSI/AAAAAAAAAWY/hN_DeSmTQcc/s320/all+sps.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;4. Great, but what if I have few Stored procedures to extract and I dont what to run the script again and again.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Use an Array Variable.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b style="color: #38761d;"&gt;$SPNameList = @("&lt;span style="color: black;"&gt;uspGetAllNodes&lt;/span&gt;", "&lt;span style="color: black;"&gt;uspGetAllPaths&lt;/span&gt;") &lt;br /&gt;FOREACH ( $SP in $SPNameList)&lt;br /&gt;{&lt;br /&gt;gci *$SP* | %{$_.Script()} | out-file &lt;span style="color: black;"&gt;c:\Scripts\$SP.sql &lt;/span&gt;&lt;br /&gt;}&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/THtQCnCLbKI/AAAAAAAAAWg/AsbUYwUR5Lg/s1600/arrays.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/THtQCnCLbKI/AAAAAAAAAWg/AsbUYwUR5Lg/s320/arrays.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;5. OutPut Directory&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/THtQEfb7ZoI/AAAAAAAAAWo/nupYGJlIHbs/s1600/Folder.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/THtQEfb7ZoI/AAAAAAAAAWo/nupYGJlIHbs/s320/Folder.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Thanks!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-1991294900635589649?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/1991294900635589649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/08/script-out-database-objects-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1991294900635589649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1991294900635589649'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/08/script-out-database-objects-using.html' title='Script Out Database objects using PowerShell'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QovaFUn52ys/THtQIVEwlqI/AAAAAAAAAW4/pROCBHSRHb8/s72-c/PS1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-8418206458610367760</id><published>2010-08-22T19:09:00.002+05:30</published><updated>2010-08-22T19:10:50.947+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Data from Dynamic Sheets of an Excel</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;This is with reference to a Question asked on the blog:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Question:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;How to get data from different sheets in an Excel WorkBook&amp;nbsp; having same column names?&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Solutions:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Basic idea to get the done is get name of all the sheets in an variable and then iterate over that variable and get data from respective Sheet.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;To Demonstrate I have created an Excel sheet having 3 sheets having only one column "ColumnName"&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;1. Excel WorkBook&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/THEnIag8tdI/AAAAAAAAAVY/E1S-4WI-YX0/s1600/Excel.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/THEnIag8tdI/AAAAAAAAAVY/E1S-4WI-YX0/s320/Excel.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;2. Now lets create the package with below variables&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/THEnZW-RMkI/AAAAAAAAAWQ/PWgOdJl7JmU/s1600/Variables.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/THEnZW-RMkI/AAAAAAAAAWQ/PWgOdJl7JmU/s320/Variables.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;3. Variable QueryStmt will hold a dynamic value which would be used as SQL Command passed to Excel.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Check EvaluateAsExpression Property as True and set Expression as&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/THEnV_iJ0PI/AAAAAAAAAWA/8qZlI7PZb5E/s1600/QueryVar.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_QovaFUn52ys/THEnV_iJ0PI/AAAAAAAAAWA/8qZlI7PZb5E/s320/QueryVar.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;4a. Next Step is to use Script Task to get all the sheet names in Variable SheetNamesList.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/THEnX17l35I/AAAAAAAAAWI/UJFXDyjA5jg/s1600/Script1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_QovaFUn52ys/THEnX17l35I/AAAAAAAAAWI/UJFXDyjA5jg/s320/Script1.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;4b. Write below code in Script Task to get all the sheets names in SheetNamesList Variable.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Directive needed &lt;/span&gt;&lt;span style="color: #38761d; font-size: small;"&gt;using System.Data.OleDb;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Main()&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OleDbConnection con = null;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Data.DataTable dt = null;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string ExlPath = Dts.Variables["ExcelPath"].Value.ToString();&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Data Source=" + ExlPath + ";Extended Properties=Excel 8.0;";&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con = new OleDbConnection(conStr);&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.Open();&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] excelSheetNames = new String[dt.Rows.Count];&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i = 0;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (DataRow row in dt.Rows)&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; excelSheetNames[i] = row["TABLE_NAME"].ToString();&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.Variables["SheetNameList"].Value = excelSheetNames;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: Add your code here&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br style="color: #38761d;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.TaskResult = (int)ScriptResults.Success;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="color: #38761d; font-size: small;"&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;5&amp;nbsp; Create a For Each Loop to iterate over SheetNameList&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;a.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/THEnQElQ8YI/AAAAAAAAAVw/YEgW2luK4pw/s1600/ForEach1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_QovaFUn52ys/THEnQElQ8YI/AAAAAAAAAVw/YEgW2luK4pw/s320/ForEach1.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;b. Set the index to SheetName to get counter sheet name&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/THEnUQFo2LI/AAAAAAAAAV4/leOS0uY8xPI/s1600/ForEach2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/THEnUQFo2LI/AAAAAAAAAV4/leOS0uY8xPI/s320/ForEach2.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;6. Add a DATA FLOW TASK and use Excel Source to connect to the WorkBook and Set the properties as &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/THEnMpR5uZI/AAAAAAAAAVg/_bororltpic/s1600/ExcelSource.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/THEnMpR5uZI/AAAAAAAAAVg/_bororltpic/s320/ExcelSource.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/THEnHeKwSLI/AAAAAAAAAVQ/4-HBFpggRYg/s1600/DFT1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/THEnHeKwSLI/AAAAAAAAAVQ/4-HBFpggRYg/s320/DFT1.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;7. Thats it.. Execute the package and get the data...&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/THEnFZ9I0II/AAAAAAAAAVI/TBMM0zWVt8k/s1600/DataViewer.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/THEnFZ9I0II/AAAAAAAAAVI/TBMM0zWVt8k/s320/DataViewer.PNG" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/THEnOcERCDI/AAAAAAAAAVo/uWiJ3XLiO-w/s1600/Execute.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/THEnOcERCDI/AAAAAAAAAVo/uWiJ3XLiO-w/s320/Execute.PNG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Thanks!!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-8418206458610367760?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/8418206458610367760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/08/data-from-dynamic-sheets-of-excel.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8418206458610367760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8418206458610367760'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/08/data-from-dynamic-sheets-of-excel.html' title='Data from Dynamic Sheets of an Excel'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/THEnIag8tdI/AAAAAAAAAVY/E1S-4WI-YX0/s72-c/Excel.PNG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-6875242214831292211</id><published>2010-08-15T22:01:00.003+05:30</published><updated>2010-08-15T22:02:55.172+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSRS'/><title type='text'>Drop-Down/ComboBox Sorting in SSRS</title><content type='html'>&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;For Dynamic Sorting SSRS has Interactive Sorting&amp;nbsp; which enables a sorting button on the Tablix Column and user can sort on desired Column but many time user wants to have Drop-Down or Combo Box listing columns and wish to chose the sorting column from there.. Something like&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TGgURXLXrcI/AAAAAAAAAT4/ptT44GsBE-Q/s1600/ByMarks.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TGgURXLXrcI/AAAAAAAAAT4/ptT44GsBE-Q/s320/ByMarks.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Okay , this is not built-in feature of SSRS but we can certainly work around and provide that feature... I will take a simple example to demonstrate that: I will create a Simple Student table and provide drop down sorting on the columns in the table.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;So Lets get started&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;1. Create a Student table&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/TGgUbHYmK0I/AAAAAAAAAUw/BKfarUFvsjQ/s1600/StudentTable.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/TGgUbHYmK0I/AAAAAAAAAUw/BKfarUFvsjQ/s320/StudentTable.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;2. Create a SSRS project and create a Shared DataSource linking our Database&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/TGgUZ76D3fI/AAAAAAAAAUo/qBhF8of2ORQ/s1600/StudentDS.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/TGgUZ76D3fI/AAAAAAAAAUo/qBhF8of2ORQ/s320/StudentDS.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;3. Create a simple report having columns from Student table&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/TGgUWU1pj3I/AAAAAAAAAUY/cCpwWaCgcjQ/s1600/ReportLayout.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/TGgUWU1pj3I/AAAAAAAAAUY/cCpwWaCgcjQ/s320/ReportLayout.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;4. Report would look like.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TGgVWzFdSAI/AAAAAAAAAVA/NVFxAb8rUOI/s1600/SimpleRpt.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TGgVWzFdSAI/AAAAAAAAAVA/NVFxAb8rUOI/s320/SimpleRpt.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;5a. Now lets start our work and create a parameter SortBy&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/TGgUUMcxIHI/AAAAAAAAAUI/q2Yub67BL9c/s1600/Parameter1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_QovaFUn52ys/TGgUUMcxIHI/AAAAAAAAAUI/q2Yub67BL9c/s320/Parameter1.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;5b. Specify Available values as Column name from the Student table and assign values to them &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/TGgUVfLqwoI/AAAAAAAAAUQ/08JxB0smY9I/s1600/Parameter2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/TGgUVfLqwoI/AAAAAAAAAUQ/08JxB0smY9I/s320/Parameter2.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;6. Go to Tablix Properties&amp;gt; Sorting&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TGgUeBpQXJI/AAAAAAAAAU4/sKpeZzxVDLA/s1600/TablixProperty.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TGgUeBpQXJI/AAAAAAAAAU4/sKpeZzxVDLA/s320/TablixProperty.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;7.Add a sorting Option and in Column tab give expression as&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;blockquote style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;=IIf(Parameters!SortBy.Value=1,Fields!StudentID.Value&lt;br /&gt;,IIf(Parameters!SortBy.Value=2,Fields!Name.Value&lt;br /&gt;,Fields!Marks.Value))&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TGgUXskW1KI/AAAAAAAAAUg/gHevBIfRdHk/s1600/SortingOrder.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TGgUXskW1KI/AAAAAAAAAUg/gHevBIfRdHk/s320/SortingOrder.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;8. Run the report and chose the SortBy column from Drop-Down&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;a. By Name&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/TGgUTJJnhiI/AAAAAAAAAUA/W_ZKPd1gktY/s1600/ByName.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/TGgUTJJnhiI/AAAAAAAAAUA/W_ZKPd1gktY/s320/ByName.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;b.By Marks&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TGgURXLXrcI/AAAAAAAAAT4/ptT44GsBE-Q/s1600/ByMarks.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TGgURXLXrcI/AAAAAAAAAT4/ptT44GsBE-Q/s320/ByMarks.PNG" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Cheers-Have fun!!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Rahul Sherawat&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-6875242214831292211?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/6875242214831292211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/08/drop-downcombobox-sorting-in-ssrs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6875242214831292211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6875242214831292211'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/08/drop-downcombobox-sorting-in-ssrs.html' title='Drop-Down/ComboBox Sorting in SSRS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QovaFUn52ys/TGgURXLXrcI/AAAAAAAAAT4/ptT44GsBE-Q/s72-c/ByMarks.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5905268940593877252</id><published>2010-05-31T10:20:00.012+05:30</published><updated>2010-05-31T19:40:44.603+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Task in SSIS'/><title type='text'>Create Custom Task in SSIS</title><content type='html'>&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TAM-5pdfE1I/AAAAAAAAARs/NlGzd_s-XsY/s1600/Form.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt; &lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Microsoft fitted SSIS with rich set of Tasks and Transformation that an ETL developer would need but sometime you have a requirment which you feel better done in some othere way so SSIS allows you to create &lt;b&gt;Custom task&lt;/b&gt; and include it in SSIS.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Whenever any tricky situation comes my boss would say "Why dont you do this with Custom Task or Create package programtically" and I used to think if there is something that cant be done using existing tasks and transformation then perphaps the work doesnt worth doing with SSIS or I dont worth working on SSIS.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Well than one night( wonder why developers always have night rather than day) I thought lets do something programatically. &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;SSIS allows to have 5 types of custom objects&lt;/b&gt;&lt;/div&gt;&lt;ul style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;Custom tasks.&lt;/li&gt;&lt;li&gt;Custom connection managers&lt;/li&gt;&lt;li&gt;Custom log providers&lt;/li&gt;&lt;li&gt;Custom enumerators&lt;/li&gt;&lt;li&gt;Custom data flow components&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;I will create a Custom Task in this post. Most common thing when I debug a SSIS pacakage is to know the value of a variable so I created a custom task to &lt;b&gt;display value of a select variable in a message box&lt;/b&gt; ( can do it in script task but isnt it a pain to do such a simple thing there). So lets create a "Display Variable" task.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;It is best practice to create two assemblies: one for &lt;b&gt;UI &lt;/b&gt;and anothter for actual &lt;b&gt;runtime&lt;/b&gt; &lt;b&gt;processing code&lt;/b&gt;.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;First lets start with UI of DisplayVariable&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A1.&lt;/b&gt; Create a Class Library project&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A2.&lt;/b&gt; Add reference to &lt;/div&gt;&lt;ol style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Drawing&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.DataTransformationServices.Controls -- This doesnt show up in .Net tab so you can browse to C:\Windows\Assembly to add&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.SqlServer.Dts.Design&lt;/li&gt;&lt;/ol&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A3&lt;/b&gt;. &lt;b&gt;DisplayVariableForm:&lt;/b&gt;&lt;br /&gt;Add a Windows Form ( name as &lt;b&gt;DisplayVariableForm&lt;/b&gt;) then add one comboBox (CmBxVariableList ) and a Button( butOK)&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TAM-5pdfE1I/AAAAAAAAARs/NlGzd_s-XsY/s1600/Form.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TAM-5pdfE1I/AAAAAAAAARs/NlGzd_s-XsY/s320/Form.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A4. &lt;/b&gt;Code for DisplayVariableFormUI.cs&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Collections.Generic;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.ComponentModel;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Data;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Drawing;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Linq;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Text;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Windows.Forms;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using Microsoft.SqlServer.Dts.Runtime;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using Microsoft.SqlServer.Dts.Runtime.Design;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;namespace DisplayVariableUI&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;{&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class DisplayVariableForm : Form&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private TaskHost vTaskHost;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Connections vConnection;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const string VARIABLE_NAME = "VariableName";&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; const string VARIABLE_VALUE = "VariableValue";&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DisplayVariableForm(TaskHost taskHost, Connections connections)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTaskHost = taskHost;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vConnection = connections;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Fill Variable combo&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void DisplayVariableForm_Load(object sender, EventArgs e)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CmBxVariableList.BeginUpdate();&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Variable var in vTaskHost.Variables)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CmBxVariableList.Items.Add(var.QualifiedName);&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CmBxVariableList.EndUpdate();&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void butOK_Click(object sender, EventArgs e)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VariableName = CmBxVariableList.Text;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VariableValue = vTaskHost.Variables[VariableName].Value.ToString();&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DialogResult = DialogResult.OK;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //get variable name&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string VariableName&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (vTaskHost.Properties[VARIABLE_NAME].GetValue(vTaskHost) != null)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return vTaskHost.Properties[VARIABLE_NAME].GetValue(vTaskHost).ToString();&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTaskHost.Properties[VARIABLE_NAME].SetValue(vTaskHost, value);&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get variable value&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string VariableValue&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (vTaskHost.Properties[VARIABLE_VALUE].GetValue(vTaskHost) != null)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return vTaskHost.Properties[VARIABLE_VALUE].GetValue(vTaskHost).ToString();&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTaskHost.Properties[VARIABLE_VALUE].SetValue(vTaskHost, value);&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;}&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A5.&lt;/b&gt;&amp;nbsp; &lt;b&gt;DisplayVariableUI.cs:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To initialize and display the user interface associated with the task we will create a class &lt;b&gt;DisplayVariableUI.cs&lt;/b&gt; which will be inherited from interface&lt;b&gt; IDtsTaskUI&lt;/b&gt;. When the user interface for a task is invoked, the designer calls the Initialize method, implemented by the task user interface and then provides the TaskHost and Connections collections of the task and package, respectively, as parameters. These collections are stored locally, and used subsequently in the GetView method.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;The designer calls the &lt;b&gt;GetView&lt;/b&gt; method to request the window that is displayed in SSIS Designer. The task creates an instance of the window that contains the user interface for the task, and returns the user interface to the designer for display. Typically, the &lt;b&gt;TaskHost &lt;/b&gt;and &lt;b&gt;Connections &lt;/b&gt;objects are provided to the window through an overloaded constructor so they can be used to configure the task.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;The SSIS Designer calls the GetView method of the task UI to display the user interface for the task. The task user interface returns the Windows form from this method, and SSIS Designer shows this form as a modal dialog box.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;When the form is closed, SSIS Designer examines the value of the &lt;b&gt;DialogResult &lt;/b&gt;property of the form to determine whether the task has been modified and if these modifications should be saved. If the value of the DialogResult property is OK, the SSIS Designer calls the persistence methods of the task to save the changes; otherwise, the changes are discarded.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Collections.Generic;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Linq;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Text;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Windows.Forms;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using Microsoft.SqlServer.Dts.Runtime;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using Microsoft.SqlServer.Dts.Runtime.Design;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;namespace DisplayVariableUI&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;{&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class DisplayVariableUI : IDtsTaskUI&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private TaskHost taskHost;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Connections connectionService;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Initialize(TaskHost taskHost, IServiceProvider serviceProvider)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;this.taskHost = taskHost;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDtsConnectionService cs = serviceProvider.GetService (typeof(IDtsConnectionService)) as IDtsConnectionService;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.connectionService = cs.GetConnections();&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ContainerControl &lt;b&gt;GetView()&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new DisplayVariableForm(this.taskHost, this.connectionService);&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Delete(IWin32Window parentWindow)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void New(IWin32Window parentWindow)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;}&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A6.&lt;/b&gt; Now UI code is complete and we have to sign assembly with strong name so go to Properties &amp;gt;&amp;gt; Signing and sign the assembly using a StrongName.&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TAM_y1VqKVI/AAAAAAAAAR0/JpARRKResHU/s1600/signprivate+key.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TAM_y1VqKVI/AAAAAAAAAR0/JpARRKResHU/s320/signprivate+key.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;&amp;nbsp;A7.&lt;/b&gt; Build DisplayVariableUI&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;A8. &lt;/b&gt;We will need public key token of DisplayVariableUI assembly in Task project. To create Public key token Open Visual Studio 2008 command prompt , browse to the project folder where strongkey should be created and type&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b style="color: black;"&gt;&amp;nbsp;a.&lt;/b&gt; sn -p DisplayVariableUIPrivateKey.snk DisplayVariableUIPublicKey.snk&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;To see the Public key token &lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b style="color: black;"&gt;&amp;nbsp;b.&lt;/b&gt; sn -t DisplayVariableUIPublicKey.snk&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Copy the Public Key token&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Now we move to Task code with actual &lt;b&gt;runtime &lt;/b&gt;code is written:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;B1.&lt;/b&gt; Create a Class Library project ( &lt;b&gt;DisplayVariable.cs&lt;/b&gt;)&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;B2.&lt;/b&gt; Add reference to&lt;/div&gt;&lt;ol style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft.DataTransformationServices.Controls&lt;/li&gt;&lt;/ol&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- This doesnt show up in .Net tab so you can browse to C:\Windows\Assembly to add&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;B3&lt;/b&gt;. Code for &lt;b&gt;DisplayVariable.cs&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;a. Apply the DtsTaskAttribute attribute to the class, this attribute provides design-time information such as the name, description, and task type of the task. we will need to specify PublicKeyToken of UI here.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;b. DisplayVariable class should inherit from Task Class and then override Base Task class DTSExecResult Execute method to show a message box cantaining Variable name and Variable value.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Collections.Generic;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Linq;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using System.Text;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;using Microsoft.SqlServer.Dts.Runtime;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;namespace DisplayVariable&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;{&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DtsTask&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisplayName = "DisplayVariable",&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description = "Task can display any variable from Variable List",&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RequiredProductLevel = DTSProductLevel.None,&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TaskContact = "Rahul Sherawat-logtorahul@gmail.com",&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UITypeName = "DisplayVariableUI.DisplayVariableUI, DisplayVariableUI, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=6d67e5bed27edc4b"&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class DisplayVariable: &lt;b&gt;Task&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //will get Variable Name&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string UIvariableName;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string VariableName&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return UIvariableName; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { UIvariableName = value; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //will get variable value&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string UIVariableValue;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string VariableValue&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return UIVariableValue; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { UIVariableValue = value; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //override execute&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override &lt;b&gt;DTSExecResult&amp;nbsp; Execute&lt;/b&gt;(Connections connections, VariableDispenser variableDispenser, IDTSComponentEvents componentEvents, IDTSLogging log, object transaction)&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DTSExecResult execResult = DTSExecResult.Success;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (string.IsNullOrEmpty(VariableName))&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms.MessageBox.Show("No Variable Selected");&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string VarVal;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VarVal = VariableName + "\r\n"+ "Value: " + VariableValue;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Windows.Forms.MessageBox.Show(VarVal);&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return execResult;&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style="color: #38761d; font-family: Arial,Helvetica,sans-serif;"&gt;}&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;c. DtsTaskAttribute&amp;nbsp; attribute PublicKeyToken is the public key token of UI assembly that we will create in next step and this has to updated in Task assembly and rebuild.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;B4.&lt;/b&gt; DisplayVariable Assembly has to be signed so go to Properties &amp;gt;&amp;gt; Signing and sign the assembly using a StrongName.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;B5&lt;/b&gt;. Build the project. This will create DisplayVariable.dll in debug folder of project.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;C1&lt;/b&gt;. Go to DisplayVariableUI project in add reference of DisplayVariable.dll and build the UI project again.&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;C2.&lt;/b&gt; Now both the dll are created and we have to add them to GAC&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;In Visual Studio Command prompt type&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;a. For DisplayVariable.dll&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;span style="color: #38761d;"&gt;gacutil -i &lt;path&gt; &lt;/path&gt;&lt;/span&gt;&lt;/b&gt;&lt;path&gt;&lt;b&gt;&lt;span style="color: #38761d;"&gt;DisplayVariable.dll&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&amp;nbsp;b. For DisplayVariableUI.dll&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;span style="color: #38761d;"&gt;gacutil -i &lt;path&gt;&lt;/path&gt;&lt;/span&gt;&lt;/b&gt;&lt;path&gt;&lt;b&gt;&lt;span style="color: #38761d;"&gt; DisplayVariableUI.dll&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;C3.&lt;/b&gt; Copy DisplayVariableUI.dll&amp;nbsp; and DisplayVariable.dll to \\Program Files\Microsoft SQL Server\100\DTS\Tasks so that it can be picked up in SSIS tool box&lt;br /&gt;&lt;br /&gt;&lt;b&gt;C4.&lt;/b&gt; Create a new SSIS project. Go to Tools&amp;gt;&amp;gt;Choose ToolBox items..&amp;gt;&amp;gt;SSIS ControlFlow items select DisplayVariable &lt;br /&gt;&lt;br /&gt;&lt;b&gt;C5.&lt;/b&gt; You should be able to see DisplayVariable Task in ToolBox now.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;C6.&lt;/b&gt; Drag it to control flow and use it&lt;/path&gt;&lt;/path&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; font-family: Arial,Helvetica,sans-serif; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TAM_5MKtK9I/AAAAAAAAASE/Ug21bw1WjJ4/s1600/TaskForm.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TAM_5MKtK9I/AAAAAAAAASE/Ug21bw1WjJ4/s320/TaskForm.JPG" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/TAM_2fEITzI/AAAAAAAAAR8/lV2H1nHAfDg/s1600/Display.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/TAM_2fEITzI/AAAAAAAAAR8/lV2H1nHAfDg/s320/Display.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;path&gt;&lt;path&gt;You can download entire solution from&amp;nbsp; &lt;a href="http://docs.google.com/leaf?id=0BwHaId47bQZpYWI4MzYzYjEtZDkxYi00ODViLWIxMmEtNDM5ODM4ZjFkZTdj&amp;amp;hl=en"&gt;here&lt;/a&gt; &lt;/path&gt;&lt;/path&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5905268940593877252?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5905268940593877252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/05/create-custom-task-in-ssis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5905268940593877252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5905268940593877252'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/05/create-custom-task-in-ssis.html' title='Create Custom Task in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QovaFUn52ys/TAM-5pdfE1I/AAAAAAAAARs/NlGzd_s-XsY/s72-c/Form.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-8513616149867086667</id><published>2010-05-19T12:39:00.001+05:30</published><updated>2010-05-19T12:41:14.417+05:30</updated><title type='text'>Same Connection Manager on Multiple Server</title><content type='html'>There was a question on MSDN forum to Run same query on Mulitple Servers.&lt;br /&gt;&lt;br /&gt;We can do this by using one Connection Manager and passing the Connection String through Expressions&lt;br /&gt;Below are the steps I followed to achieve this&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Store Connection String for various connection in a table &lt;br /&gt;&lt;br /&gt;2. Declare two Varibles like&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/S_ON1_OWPZI/AAAAAAAAAQE/Rw-wsNV2nrQ/s1600/Var.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/S_ON1_OWPZI/AAAAAAAAAQE/Rw-wsNV2nrQ/s320/Var.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.Use Expression of Source Connection Manager to provide Connection String&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/S_OOEnCDnYI/AAAAAAAAAQM/0TITIEAYxwc/s1600/Expression.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/S_OOEnCDnYI/AAAAAAAAAQM/0TITIEAYxwc/s320/Expression.JPG" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/S_OOJY8_V0I/AAAAAAAAAQU/BDY2vmsEMTs/s1600/ExpressionShow.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/S_OOJY8_V0I/AAAAAAAAAQU/BDY2vmsEMTs/s320/ExpressionShow.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;4. Use Execute Sql Task to get connections in a Varible of type Objects from the table&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/S_OOOeqoEaI/AAAAAAAAAQc/FIuXo1UqPjU/s1600/ExecuteSQL.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/S_OOOeqoEaI/AAAAAAAAAQc/FIuXo1UqPjU/s320/ExecuteSQL.JPG" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/S_OOYrwd8nI/AAAAAAAAAQk/f2RQyGaGsNE/s1600/ExecuteSQL2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_QovaFUn52ys/S_OOYrwd8nI/AAAAAAAAAQk/f2RQyGaGsNE/s320/ExecuteSQL2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;5. Use For Each Loop to Iterate on that variable&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/S_OOf1QWGyI/AAAAAAAAAQs/WnYR1Pv289Q/s1600/ForEachLoop.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_QovaFUn52ys/S_OOf1QWGyI/AAAAAAAAAQs/WnYR1Pv289Q/s320/ForEachLoop.JPG" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/S_OOh32FAKI/AAAAAAAAAQ0/8_zAyU5HmB0/s1600/ForEachVar.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/S_OOh32FAKI/AAAAAAAAAQ0/8_zAyU5HmB0/s320/ForEachVar.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;6. Use Script component to cast the value of CurrConnection to String&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: Add your code here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.TaskResult = (int)ScriptResults.Success;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String con;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con = (string) Dts.Variables["CurrConnection"].Value;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.Variables["CurrConnection"].Value = con;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;7. Use any task inside the for loop with Connection Manager and it will use different server for each loop.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/S_OOj2aBYmI/AAAAAAAAAQ8/xvawBNrj6vU/s1600/package.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_QovaFUn52ys/S_OOj2aBYmI/AAAAAAAAAQ8/xvawBNrj6vU/s320/package.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-8513616149867086667?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/8513616149867086667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/05/same-connection-manager-on-multiple.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8513616149867086667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8513616149867086667'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/05/same-connection-manager-on-multiple.html' title='Same Connection Manager on Multiple Server'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QovaFUn52ys/S_ON1_OWPZI/AAAAAAAAAQE/Rw-wsNV2nrQ/s72-c/Var.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-2354307404188386872</id><published>2010-04-22T20:18:00.006+05:30</published><updated>2010-05-14T21:23:58.217+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server Scripts'/><title type='text'>Jobs Running on Server</title><content type='html'>&lt;div style="color: black;"&gt;&lt;b&gt;To find out jobs running on a server through T-Sql&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #38761d;"&gt;&lt;b&gt;&lt;br /&gt;DECLARE @job_owner VARCHAR(100);&lt;br /&gt;&lt;br /&gt;SELECT @job_owner = SUSER_SNAME()&lt;br /&gt;&lt;br /&gt;IF EXISTS&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SELECT 1&amp;nbsp;&amp;nbsp; &amp;nbsp;FROM tempdb.dbo.sysobjects&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;WHERE ID = OBJECT_ID(N'tempdb..#JobStats')&lt;br /&gt;)&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DROP TABLE #JobStats&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CREATE TABLE &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#JobStats &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;job_id UNIQUEIDENTIFIER&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;last_run_date INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;last_run_time INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;next_run_date INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;next_run_time INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;next_run_schedule_id&amp;nbsp; INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;requested_to_run INT &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;request_source INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;request_source_id VARCHAR(100)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;running INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;current_step INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;current_retry_attempt INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;,&amp;nbsp;&amp;nbsp; &amp;nbsp;job_state INT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;INSERT INTO #JobStats&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXECUTE master.dbo.xp_sqlagent_enum_jobs 1, @job_owner&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SELECT&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sysjobs.name&lt;br /&gt;,&amp;nbsp;&amp;nbsp; &amp;nbsp;JobStats.current_step&lt;br /&gt;,&amp;nbsp;&amp;nbsp; &amp;nbsp;JobStats.running&lt;br /&gt;,&amp;nbsp;&amp;nbsp; &amp;nbsp;JobStats.*&lt;br /&gt;FROM&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#JobStats JobStats&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JOIN MSDB..sysjobs sysjobs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ON JobStats.job_id = sysjobs.job_id&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;OR&amp;nbsp; &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;SELECT&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;SYSJOBS.Name&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;SYSJOBS.Job_Id&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;SYSPROCESSES.HostName&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;SYSPROCESSES.LogiName&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;*&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;FROM &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;MSDB.dbo.SYSJOBS&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;JOIN &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;MASTER.dbo.SYSPROCESSES&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;ON &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;SUBSTRING(SYSPROCESSES.PROGRAM_NAME,30,34) &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;=MASTER.dbo.fn_varbintohexstr ( SYSJOBS.job_id)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;AND &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #006600;"&gt;&lt;b&gt;LEFT(PROGRAM_NAME,28) ='SQLAgent - TSQL JobStep (Job'  &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt; &lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-2354307404188386872?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/2354307404188386872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/04/jobs-running-on-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/2354307404188386872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/2354307404188386872'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/04/jobs-running-on-server.html' title='Jobs Running on Server'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5449246679652066776</id><published>2010-04-16T09:49:00.006+05:30</published><updated>2011-05-10T11:03:05.123+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Dynamic Package Configuration File in SSIS</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This is in reference to an interesting problem posted on MSDB forum. It was so interesting that i though it worth a post. So here we go:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Problem: &lt;/b&gt;&lt;/div&gt;&lt;div&gt;Child Package should use a Configuration file whose path is determined only at the run time of Parent Package. Package Configuration doesnt have any property which may allow it to dynamically determine path at run time and use it.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Solution&lt;/b&gt;:&lt;/div&gt;&lt;div&gt;There can be many ways of solving this as suggested by other SSIS pandits but what struck to my mind first was, we can do it by using very basic tasks in SSIS. The approach is to:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In Child Package&lt;/b&gt;:&lt;/div&gt;&lt;div&gt;1. Create the Child Package as usual without bothering of Dynamic Config file and store config file to some location say E:\Configs&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In Parent Package&lt;img alt="Bold" border="0" class="gl_bold" src="http://www.blogger.com/img/blank.gif" /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;1. Get actual path of Config(which is to be used)&lt;/div&gt;&lt;div&gt;2. Use File System Task and copy this actual (Dynamic as I prefer to say) to the location of Child Package Config (E:\Configs)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To Demonstrate this.:&lt;/div&gt;&lt;div&gt;1. I Created a Child package which would access a database table using it Development config file.&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/S8fkdyGv7EI/AAAAAAAAAPA/Xs6l4uos_0Y/s1600/ChildPackResult1.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460584273527434306" src="http://4.bp.blogspot.com/_QovaFUn52ys/S8fkdyGv7EI/AAAAAAAAAPA/Xs6l4uos_0Y/s400/ChildPackResult1.JPG" style="cursor: pointer; height: 258px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;2. Now I created a Parent package which will copy the dynamic config to the location at call the child package.&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/S8fkoun2WyI/AAAAAAAAAPI/s77itO2-wo0/s1600/ParentPackage.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460584461571087138" src="http://2.bp.blogspot.com/_QovaFUn52ys/S8fkoun2WyI/AAAAAAAAAPI/s77itO2-wo0/s400/ParentPackage.JPG" style="cursor: pointer; height: 400px; width: 399px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Now i will Run this Parent package- which will make the child package to use the dynamic Config file&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/S8fk5N9_HfI/AAAAAAAAAPQ/FwOrtN36IaM/s1600/ChilPackResult2.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5460584744863342066" src="http://1.bp.blogspot.com/_QovaFUn52ys/S8fk5N9_HfI/AAAAAAAAAPQ/FwOrtN36IaM/s400/ChilPackResult2.JPG" style="cursor: pointer; height: 318px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers!!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5449246679652066776?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5449246679652066776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/04/dynamic-configuration-file.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5449246679652066776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5449246679652066776'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/04/dynamic-configuration-file.html' title='Dynamic Package Configuration File in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QovaFUn52ys/S8fkdyGv7EI/AAAAAAAAAPA/Xs6l4uos_0Y/s72-c/ChildPackResult1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-6403568617442627018</id><published>2010-04-10T14:09:00.009+05:30</published><updated>2010-04-10T14:27:48.536+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server Scripts'/><title type='text'>Delete Duplicates from a Table</title><content type='html'>&lt;div&gt;&lt;b&gt;WITH DupCTE(Col1,Col2, Ranking)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;AS&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;(&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;SELECT&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Col1&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;,&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;Col2&lt;/b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;,&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;DENSE_RANK() OVER&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(PARTITION BY ID ORDER BY NEWID() ASC) AS Ranking&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;FROM TableName&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;)&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;DELETE  FROM DupCTE&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;WHERE Ranking &gt; 1;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;GO&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Few days back I had a table which had duplicates on the Id columns also, so i had to flip a bit to write a shortest code i can write to delete or remove duplicates from the table.&lt;/div&gt;&lt;div&gt;Below I will demonstrate it by create a temp table, inserting it with some duplicate data and then remove the dups using CTE( Common Table Expressions)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Create Table with duplicate data:&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;--Create Table&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;CREATE TABLE #Dups&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;(&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;Id INT&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;,&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;Name VARCHAR(50)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;);&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;GO&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;--Insert data with Duplicates&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;INSERT INTO #Dups VALUES ( 1, 'Rahul');&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;INSERT INTO #Dups VALUES ( 1, 'Rahul');&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;INSERT INTO #Dups VALUES ( 2, 'Divya');&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;INSERT INTO #Dups VALUES ( 2, 'Divya');&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;INSERT INTO #Dups VALUES ( 3, 'Jason');&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;GO&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#009900;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/S8A6sl7wusI/AAAAAAAAAOw/9E-X0jAiBC0/s1600/QueryRemoveDupPic.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_QovaFUn52ys/S8A6sl7wusI/AAAAAAAAAOw/9E-X0jAiBC0/s400/QueryRemoveDupPic.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5458427286144465602" style="cursor: pointer; width: 400px; height: 307px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;2. CTE to remove Dups:&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;WITH DupCTE(Id, Name, Ranking)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;AS&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;(&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;SELECT&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;ID&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;,&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;Name&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;,&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;DENSE_RANK() OVER(PARTITION BY ID ORDER BY NEWID() ASC) AS Ranking&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;FROM #Dups&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;DELETE  FROM DupCTE&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;WHERE Ranking &gt; 1;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;GO&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#006600;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/S8A7QaYI8eI/AAAAAAAAAO4/3IiiiOxRePs/s1600/QueryRemoveDupPic.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_QovaFUn52ys/S8A7QaYI8eI/AAAAAAAAAO4/3IiiiOxRePs/s400/QueryRemoveDupPic.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5458427901517558242" style="cursor: pointer; width: 400px; height: 307px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can download the complete sample code from &lt;a href="http://docs.google.com/leaf?id=0BwHaId47bQZpZTQ3ODI4MGMtYzBkMy00ZGEwLTkyYWMtYjYzNTVmNTBjMTg4&amp;amp;hl=en"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers!!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-6403568617442627018?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/6403568617442627018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/04/delete-duplicates-from-table.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6403568617442627018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6403568617442627018'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/04/delete-duplicates-from-table.html' title='Delete Duplicates from a Table'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/S8A6sl7wusI/AAAAAAAAAOw/9E-X0jAiBC0/s72-c/QueryRemoveDupPic.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-4379840426238651347</id><published>2010-01-18T21:34:00.004+05:30</published><updated>2010-01-18T21:42:04.377+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Error: it(job) does not have any job server(s) defined</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Today I was creating a job on SQL SERVER 2000 through SSMS 2008, and when I was trying to run the job it gave me error as&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span"   style="  color: rgb(0, 0, 255); font-family:monospace;font-size:12px;"&gt;Server: Msg 14256, Level 16, State 1, Procedure sp_start_job, Line NN&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  color: rgb(0, 0, 255); font-family:monospace;font-size:12px;"&gt;Cannot start job 'XXXX' (ID NNNN) because it does not have any job server(s) defined.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=" color: rgb(0, 0, 255); "&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Solution:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Well the solution is pretty simple- In Job properties got to TARGET and &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;check either 'Target local server' or 'Target multiple servers'. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif, 'Bookman old style', Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Verdana, sans-serif, 'Bookman old style', Arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-4379840426238651347?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/4379840426238651347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/01/error-itjob-does-not-have-any-job.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4379840426238651347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4379840426238651347'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2010/01/error-itjob-does-not-have-any-job.html' title='Error: it(job) does not have any job server(s) defined'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-3950933248488352295</id><published>2009-12-27T18:51:00.001+05:30</published><updated>2009-12-27T18:53:21.239+05:30</updated><title type='text'>Top New Features in SSIS 2008</title><content type='html'>1) Create Script tasks by using Microsoft Visual C# and Microsoft Visual Basic .NET.&lt;br /&gt;&lt;br /&gt;2) Use ADO.NET for tasks as well as for source and destination components.&lt;br /&gt;&lt;br /&gt;3) Improve scalability with thread pooling and enhanced lookup transformations.&lt;br /&gt;&lt;br /&gt;4) Perform more functional and scalable data transfers with the improved SQL Server Import and Export Wizard.&lt;br /&gt;&lt;br /&gt;5) New SSIS connectors for SAP BW, Oracle and Teradata.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-3950933248488352295?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/3950933248488352295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/12/top-new-features-in-ssis-2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/3950933248488352295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/3950933248488352295'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/12/top-new-features-in-ssis-2008.html' title='Top New Features in SSIS 2008'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-6055194687047540265</id><published>2009-11-24T22:59:00.006+05:30</published><updated>2009-12-12T12:40:53.395+05:30</updated><title type='text'>Dynamic query as sql command for ADO NET / OleDb Source</title><content type='html'>A question on MSDN forum drew my attention towards a very common requirement which is made very tricky to do in SSIS.&lt;br /&gt;&lt;br /&gt;A user may need to pass a dynamic query to OleDb source/ADO source something like&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic; color: rgb(51, 255, 51);"&gt;SELECT * FROM TblNm  WHERE Col1 = @Var&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;In OleDb source user can create query like this in a variable and pass it to the OleDb Source but ADO NET source does not have Variable as Data Access Mode, so what do we do for ADO Net Source. Okay dont scratch around there is way out which works for both OleDb and ADO Net Source.&lt;br /&gt;&lt;br /&gt;1.  Create a variable&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbIpndzrI/AAAAAAAAANg/I4zFZr4FBMY/s1600/var.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 138px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbIpndzrI/AAAAAAAAANg/I4zFZr4FBMY/s400/var.JPG" alt="" id="BLOGGER_PHOTO_ID_5407727087989411506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Create ADO NET Source or OleDb Source and select SQL Command as DATA ACCESS MODE and give a simple query like SELECT * FROM TblNm&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbI-AEzLI/AAAAAAAAANo/gsfC7zfnCXc/s1600/ADONET.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 391px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbI-AEzLI/AAAAAAAAANo/gsfC7zfnCXc/s400/ADONET.JPG" alt="" id="BLOGGER_PHOTO_ID_5407727093461339314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3.  In Control Flow Select DataFlow Task which contains this Source and from it Property Tab select Expressions and open Property Expressions Editor&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SwwbJhW3KDI/AAAAAAAAAN4/ruiMRtSOtPU/s1600/Property.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 316px;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SwwbJhW3KDI/AAAAAAAAAN4/ruiMRtSOtPU/s400/Property.JPG" alt="" id="BLOGGER_PHOTO_ID_5407727102952155186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Choose [ADO NET Source].[SQL Commnad]  and make a expression like&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbJAknksI/AAAAAAAAANw/J3zNqXlMtpE/s1600/Exp.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 359px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbJAknksI/AAAAAAAAANw/J3zNqXlMtpE/s400/Exp.JPG" alt="" id="BLOGGER_PHOTO_ID_5407727094151484098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5. Now run the package and Sql will be dynamically created and will get the value of variable.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbJ7IsHNI/AAAAAAAAAOA/MMVAhaxczJs/s1600/result.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 218px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SwwbJ7IsHNI/AAAAAAAAAOA/MMVAhaxczJs/s400/result.JPG" alt="" id="BLOGGER_PHOTO_ID_5407727109872032978" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-6055194687047540265?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/6055194687047540265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/11/dynamic-query-at-sql-command-for-ado.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6055194687047540265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6055194687047540265'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/11/dynamic-query-at-sql-command-for-ado.html' title='Dynamic query as sql command for ADO NET / OleDb Source'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QovaFUn52ys/SwwbIpndzrI/AAAAAAAAANg/I4zFZr4FBMY/s72-c/var.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5142524689587759759</id><published>2009-11-01T12:24:00.004+05:30</published><updated>2009-11-01T13:10:18.446+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Fail to save package file : class not registered</title><content type='html'>&lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;&lt;span style="font-weight: bold;"&gt;Problem:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Sometime a user may encounter an error like below while creating a SSIS package from BIDS.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;Error creating package&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;------------------------------&lt;br /&gt;ADDITIONAL INFORMATION:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;div&gt; &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;Failed to save package file "C:\Documents and Settings\UserName\Local Settings\Temp\tmp87.tmp" with error 0x80040154 "Class not registered".&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;-------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Solution:&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;To solve this try to register below DLLs by typing below commands in CMD promopt:-&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:100%;"  &gt;regsvr32 msxml3.dll&lt;br /&gt;regsvr32 msxml4.dll&lt;br /&gt;regsvr32 msxml6.dll&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style=";font-family:Arial;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:Arial;font-size:10pt;color:black;"   &gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5142524689587759759?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5142524689587759759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/11/fail-to-save-package-file-class-not.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5142524689587759759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5142524689587759759'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/11/fail-to-save-package-file-class-not.html' title='Fail to save package file : class not registered'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-1045510694170389695</id><published>2009-04-21T10:32:00.010+05:30</published><updated>2010-09-22T12:47:33.994+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Copy/Rename a file using File System Task in SSIS</title><content type='html'>&lt;span style="color: #000099;"&gt;This is a reference answer to a post on MSDN&lt;span style="color: #333399;"&gt; forum&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333399;"&gt; but is very useful &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-size: 130%; font-weight: bold;"&gt;Question:&lt;/span&gt;&lt;span style="color: red;"&gt; &lt;span style="color: black;"&gt;While copying and renaming a file to a dynamic location through File System Task  using variable throws an error&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #333399; font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;Error: Failed to lock variable "c:\test\test_200904202009.txt" for read access with error 0xC0010001 "The variable cannot be found. This occurs when an attempt is made to retrieve a variable from the Variables collection on a container during execution of the package, and the variable is not there. The variable name may have changed or the variable is not being created.".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="color: red; font-weight: bold;"&gt;OR&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;How to copy and rename a file to a dynamic location using SSIS?&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-size: 130%; font-weight: bold;"&gt;Solution:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I will move and rename a file "test.txt" from c:\ to c:\backup with new name appended with date.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;1) &lt;/span&gt;Create three variables&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: Calibri;"&gt;Src_File = c:\test.txt&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: Calibri;"&gt;Dest_File = test&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: Calibri;"&gt;Dest_Dir = c:\backup&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/Se1VMmo034I/AAAAAAAAAMQ/qyTpvuO05iE/s1600-h/var.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5327007609267740546" src="http://2.bp.blogspot.com/_QovaFUn52ys/Se1VMmo034I/AAAAAAAAAMQ/qyTpvuO05iE/s400/var.jpg" style="cursor: pointer; height: 141px; width: 392px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;2)&lt;/span&gt; &lt;/span&gt;In connection Manager create a File Connection with name as &lt;span style="font-size: 130%; font-weight: bold;"&gt;DestinationConn&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;3)&lt;/span&gt;&lt;span style="font-family: georgia;"&gt; In Expression property of DestinationConn use ConnectionString and provide following expression&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #000099; font-weight: bold; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;@[Dest_Dir] + "\\" + @[Dest_File] + "_" + (DT_WSTR,4)DatePart("yyyy", GetDate()) + RIGHT("0" + (DT_WSTR,2)DatePart("mm", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("dd", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("hh", GetDate()), 2) + RIGHT("0" + (DT_WSTR,2)DatePart("mi", GetDate()), 2) + ".txt"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/Se1XIntUGGI/AAAAAAAAAMY/ybMgfQhaO6U/s1600-h/Conn.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5327009739858778210" src="http://2.bp.blogspot.com/_QovaFUn52ys/Se1XIntUGGI/AAAAAAAAAMY/ybMgfQhaO6U/s400/Conn.jpg" style="cursor: pointer; height: 269px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;this will set the destination path and new name for the file&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;4)&lt;/span&gt; Create a File System task and configure like :&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/Se1XsJRKh8I/AAAAAAAAAMg/BgH2D9YU9zw/s1600-h/FileSystemTask.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5327010350162937794" src="http://2.bp.blogspot.com/_QovaFUn52ys/Se1XsJRKh8I/AAAAAAAAAMg/BgH2D9YU9zw/s400/FileSystemTask.jpg" style="cursor: pointer; height: 374px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;5)&lt;/span&gt; Execute the package&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/Se1YU4K_XWI/AAAAAAAAAMo/do4QhkifZ7s/s1600/execute.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5327011049948274018" src="http://2.bp.blogspot.com/_QovaFUn52ys/Se1YU4K_XWI/AAAAAAAAAMo/do4QhkifZ7s/s400/execute.jpg" style="height: 279px; width: 400px;" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;a href="https://docs.google.com/leaf?id=0BwHaId47bQZpNzdkODY0ZGEtY2NjNS00Mzk5LWJmY2UtOTIwZmExNmU0MWI5&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50"&gt;This Package can be downloaded from here.&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;To run the package create a file named "&lt;b&gt;test.txt&lt;/b&gt;"&amp;nbsp; and a folder "&lt;b&gt;backup&lt;/b&gt;"at &lt;b&gt;C:\&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Thanks!!&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Please leave a comment.&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-1045510694170389695?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/1045510694170389695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/04/copyrename-file-using-file-system-task.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1045510694170389695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1045510694170389695'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/04/copyrename-file-using-file-system-task.html' title='Copy/Rename a file using File System Task in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QovaFUn52ys/Se1VMmo034I/AAAAAAAAAMQ/qyTpvuO05iE/s72-c/var.jpg' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-1900150179912889159</id><published>2009-04-01T16:57:00.003+05:30</published><updated>2009-04-01T16:59:03.068+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humor'/><title type='text'>Trail Period is Over - the funny side</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SdNPuhvtx7I/AAAAAAAAAMI/V5O_EzciZnk/s1600-h/TrailPeriod.jpg"&gt;&lt;img style="cursor: pointer; width: 328px; height: 400px;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SdNPuhvtx7I/AAAAAAAAAMI/V5O_EzciZnk/s400/TrailPeriod.jpg" alt="" id="BLOGGER_PHOTO_ID_5319683245605767090" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-1900150179912889159?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/1900150179912889159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/04/trail-period-is-over-humor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1900150179912889159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1900150179912889159'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/04/trail-period-is-over-humor.html' title='Trail Period is Over - the funny side'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/SdNPuhvtx7I/AAAAAAAAAMI/V5O_EzciZnk/s72-c/TrailPeriod.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-6971433048767945688</id><published>2009-03-24T16:05:00.005+05:30</published><updated>2009-03-25T14:02:49.628+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Column length in Excel source</title><content type='html'>Here is one very common warning with using Excel in SSIS&lt;br /&gt;&lt;br /&gt;Whenever we use Excel file in SSIS, it takes default length of each column as 255. This results in having a warning if we try to map this column with column having length less than 255. We can avoid this warning my setting column length of the Excel source.&lt;br /&gt;&lt;br /&gt;Right click to Open Excel source in Advance editor and set lenght of the column as depicted in the figure.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/Sci5oReS30I/AAAAAAAAAMA/dI7DQq04ji8/s1600-h/ExcelColLen.jpg"&gt;&lt;img style="cursor: pointer; width: 392px; height: 400px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/Sci5oReS30I/AAAAAAAAAMA/dI7DQq04ji8/s400/ExcelColLen.jpg" alt="" id="BLOGGER_PHOTO_ID_5316703461647245122" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-6971433048767945688?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/6971433048767945688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/03/column-length-in-excel-source.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6971433048767945688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6971433048767945688'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/03/column-length-in-excel-source.html' title='Column length in Excel source'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QovaFUn52ys/Sci5oReS30I/AAAAAAAAAMA/dI7DQq04ji8/s72-c/ExcelColLen.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-4761336942789480919</id><published>2009-03-02T19:02:00.008+05:30</published><updated>2009-03-02T19:33:29.063+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Getting Daily Feed in SSIS</title><content type='html'>Many time there comes a situation when you need to use a daily feed kind of file which is copied in a fixed directory and we need to use the file for data import.&lt;br /&gt;&lt;br /&gt;Below I will show an approach to automate the process so that SSIS package would check if the today's file is present or not and if present then do the data import.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;For Example &lt;/span&gt;&lt;br /&gt;File name format : FileName&lt;span style="font-style: italic;"&gt;Date&lt;/span&gt; (FileName03022009.xls)&lt;br /&gt;Fixed Directory : D:\Abc&lt;br /&gt;&lt;br /&gt;1.Create a Variable "FileName" This will hold the path and name of the daily feed file.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/Savi1yAH3dI/AAAAAAAAALY/PXJ0OpRtYvs/s1600-h/var.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 95px;" src="http://4.bp.blogspot.com/_QovaFUn52ys/Savi1yAH3dI/AAAAAAAAALY/PXJ0OpRtYvs/s400/var.jpg" alt="" id="BLOGGER_PHOTO_ID_5308585999369493970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2. Use script task. specify readwrite variable as "FileName"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QovaFUn52ys/SavjfvwHKAI/AAAAAAAAALg/oKiJke80ftc/s1600-h/script.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 374px;" src="http://3.bp.blogspot.com/_QovaFUn52ys/SavjfvwHKAI/AAAAAAAAALg/oKiJke80ftc/s400/script.jpg" alt="" id="BLOGGER_PHOTO_ID_5308586720319973378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3. Coding&lt;br /&gt;a) Configure FileName to have path and name of the daily feed file.&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; Dts.Variables("FileName").Value = "D:\Abc\FileName" _&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;        &amp;amp; Date.Today.Month.ToString.PadLeft(2, "0"c) &amp;amp; Date.Today.Day.ToString.PadLeft(2, "0"c) _&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;        &amp;amp; Date.Today.Year &amp;amp; ".xls"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;b) check if file is present or not. (Fail the package if file is not present)&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;'check if file is present&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;      &lt;br /&gt;Dim Fi As New FileInfo(CStr(Dts.Variables("FileName").Value))&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;        If (CBool(Fi.Exists().ToString())) Then&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;            Dts.TaskResult = Dts.Results.Success&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;        Else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;            MsgBox(CStr(Dts.Variables("FileName").Value) &amp;amp; " is not present")&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;            Dts.TaskResult = Dts.Results.Failure&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;        End If&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/Savj1hFWNYI/AAAAAAAAALo/mKw9cm3fM0U/s1600-h/script2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 291px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/Savj1hFWNYI/AAAAAAAAALo/mKw9cm3fM0U/s400/script2.jpg" alt="" id="BLOGGER_PHOTO_ID_5308587094339630466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4) Create a Excel Connection Manager and in Expression property specify&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SavkLBhvvTI/AAAAAAAAALw/AkdGgdllG6Q/s1600-h/ExcelCon.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 311px;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SavkLBhvvTI/AAAAAAAAALw/AkdGgdllG6Q/s400/ExcelCon.jpg" alt="" id="BLOGGER_PHOTO_ID_5308587463825931570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5) Use the Excel Connection Manager in Excel source of DATA FLOW&lt;br /&gt;6) Execute&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SavkiEMXxuI/AAAAAAAAAL4/bab1Cj16dss/s1600-h/Exec.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 291px;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SavkiEMXxuI/AAAAAAAAAL4/bab1Cj16dss/s400/Exec.jpg" alt="" id="BLOGGER_PHOTO_ID_5308587859678578402" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-4761336942789480919?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/4761336942789480919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/03/getting-daily-feed-in-ssis.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4761336942789480919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4761336942789480919'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/03/getting-daily-feed-in-ssis.html' title='Getting Daily Feed in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QovaFUn52ys/Savi1yAH3dI/AAAAAAAAALY/PXJ0OpRtYvs/s72-c/var.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-836513268631205446</id><published>2009-02-25T13:32:00.015+05:30</published><updated>2010-09-29T12:13:07.715+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Passing variable to Child package from Parent package in SSIS</title><content type='html'>&lt;b&gt;&lt;span style="color: #990000;"&gt;(APPLICABLE ONLY IN SSIS 2005, Use Parent Package Configuration for SSIS 2008) &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Very frequent Question which looks so complicated to programmers.&lt;br /&gt;&lt;br /&gt;Actually passing a variable value to a child package is very trivial task. We can pass on the value by configuring parent variable in package configuration but there is an easy way of achieve this and the fact lies beneath the fundamental principle of Variable Scope.&lt;br /&gt;&lt;br /&gt;If you call a Child package then it is like a container itself and all the variables defined in above hierarchy will be accessible in the Child package.&lt;br /&gt;&lt;br /&gt;Let me show this with an example in which I will declare a variable "ParentVar" in my parent package and call a Child package which will access "ParentVar" and display in a msgbox.&lt;br /&gt;&lt;br /&gt;1) Parent: Create Parent Package and declare a variable "ParentVar"&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/SaUMHxHW9wI/AAAAAAAAAKI/SyM9nPuJs6U/s1600-h/ParentVar.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5306661063508817666" src="http://1.bp.blogspot.com/_QovaFUn52ys/SaUMHxHW9wI/AAAAAAAAAKI/SyM9nPuJs6U/s400/ParentVar.jpg" style="cursor: pointer; height: 110px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Child: Create a Child package and use a script task and define readonly variable as ParentVar&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_QovaFUn52ys/SaUfBdWS4jI/AAAAAAAAAKQ/4b70wxxpcVc/s1600-h/childScript.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5306681845844468274" src="http://3.bp.blogspot.com/_QovaFUn52ys/SaUfBdWS4jI/AAAAAAAAAKQ/4b70wxxpcVc/s400/childScript.jpg" style="cursor: pointer; height: 374px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) Child: Now in Script you can use ParentVar like any other variable.eg I am using to display it in a msgbox. I would suggest to create another child package variable and assign Parent package variable value to it and use it in the child package variable through out the package.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/SaUgBjyoVKI/AAAAAAAAAKY/B8zKQEWyXjQ/s1600-h/ScriptCode.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5306682947085554850" src="http://2.bp.blogspot.com/_QovaFUn52ys/SaUgBjyoVKI/AAAAAAAAAKY/B8zKQEWyXjQ/s400/ScriptCode.jpg" style="cursor: pointer; height: 120px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Child: Whole Child package will look like&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/SaUgoxDPnDI/AAAAAAAAAKg/M3H5pkyknbY/s1600-h/Child.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5306683620659797042" src="http://2.bp.blogspot.com/_QovaFUn52ys/SaUgoxDPnDI/AAAAAAAAAKg/M3H5pkyknbY/s400/Child.jpg" style="cursor: pointer; height: 291px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5) Parent: Now in parent package call the child package through Execute Package task.&lt;br /&gt;The Parent package will look like&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/SaUhJG--6yI/AAAAAAAAAKo/EbtNxd7CRz0/s1600-h/Parent.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5306684176303319842" src="http://2.bp.blogspot.com/_QovaFUn52ys/SaUhJG--6yI/AAAAAAAAAKo/EbtNxd7CRz0/s400/Parent.jpg" style="cursor: pointer; height: 291px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6) Result: Execute Parent package.it will in turn call child package and it will display msgbox&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/SaUhkUhnMPI/AAAAAAAAAKw/f-KuslaUl78/s1600-h/msgbox.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5306684643794694386" src="http://4.bp.blogspot.com/_QovaFUn52ys/SaUhkUhnMPI/AAAAAAAAAKw/f-KuslaUl78/s400/msgbox.jpg" style="cursor: pointer; height: 113px; width: 158px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here was a simple method to use parent package variable in Child package.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-836513268631205446?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/836513268631205446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/passing-variable-to-child-package-from.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/836513268631205446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/836513268631205446'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/passing-variable-to-child-package-from.html' title='Passing variable to Child package from Parent package in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/SaUMHxHW9wI/AAAAAAAAAKI/SyM9nPuJs6U/s72-c/ParentVar.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5882601163862418893</id><published>2009-02-23T11:56:00.021+05:30</published><updated>2011-09-06T12:59:02.093+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>SSIS Interview Questions</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="color: #3333ff; font-family: verdana; font-size: 100%;"&gt;Common search for new SSIS programmer looking for change is what questions to expect on SSIS. Based on the interviews I take on SSIS, I will list down my favorites and expected questions on SSIS.&lt;/span&gt;&lt;span style="font-family: verdana; font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="font-size: 100%; line-height: 115%;"&gt;&lt;span style="color: #cc0000;"&gt;&lt;br /&gt;&lt;b&gt;Q1 Explain architecture of SSIS?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SSIS architecture consists of four key parts:&lt;br /&gt;a) &lt;span style="font-weight: bold;"&gt;Integration Services service:&lt;/span&gt; monitors running Integration Services packages and manages the storage of packages.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="font-size: 100%; line-height: 115%;"&gt;&lt;span style="color: blue;"&gt;b) &lt;span style="font-weight: bold;"&gt;Integration Services object model:&lt;/span&gt; includes managed API for accessing Integration Services tools, command-line utilities, and custom applications.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="font-size: 100%; line-height: 115%;"&gt;&lt;span style="color: blue;"&gt;c) &lt;span style="font-weight: bold;"&gt;Integration Services runtime and run-time executables:&lt;/span&gt; it saves the layout of packages, runs packages, and provides support for logging, breakpoints, configuration, connections, and transactions. The Integration Services run-time executables are the package, containers, tasks, and event handlers that Integration Services includes, and custom tasks.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="font-size: 100%; line-height: 115%;"&gt;&lt;span style="color: blue;"&gt;d) &lt;span style="font-weight: bold;"&gt;Data flow engine:&lt;/span&gt; provides the in-memory buffers that move data from source to destination.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/S9MMFk5wYFI/AAAAAAAAAP8/Yn8cDgWJMqc/s1600/SSIS+Architecture.JPG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5463724062875344978" src="http://4.bp.blogspot.com/_QovaFUn52ys/S9MMFk5wYFI/AAAAAAAAAP8/Yn8cDgWJMqc/s400/SSIS+Architecture.JPG" style="cursor: pointer; height: 400px; width: 296px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q2 How would you do Logging in SSIS?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Logging Configuration provides an inbuilt feature which can log the detail of various events like onError, onWarning etc to the various options say a flat file, SqlServer table, XML or SQL Profiler.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q3 How would you do Error Handling?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;A SSIS package could mainly have two types of errors&lt;br /&gt;a) Procedure Error: Can be handled in Control flow through the precedence control and redirecting the execution flow.&lt;br /&gt;b) Data Error: is handled in DATA FLOW TASK buy redirecting the data flow using Error Output of a component.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q4 How to pass property value at Run time? How do you implement Package Configuration?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;A property value like connection string for a Connection Manager can be passed to the pkg using package configurations.Package Configuration provides different options like XML File, Environment Variables, SQL Server Table, Registry Value or Parent package variable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q5 How would you deploy a SSIS Package on production?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;A) &lt;b&gt;Through Manifest&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;1&lt;span style="color: #3333ff;"&gt;. Create deployment utility by setting its propery as true .&lt;br /&gt;2. It will be created in the bin folder of the solution as soon as package is build.&lt;br /&gt;3. Copy all the files in the utility and use manifest file to deply it on the Prod.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;&lt;span style="color: #3333ff;"&gt;B) Using &lt;b&gt;DtsExec.exe&lt;/b&gt; utility&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;&lt;span style="color: #3333ff;"&gt;C)&lt;b&gt;Import Package&lt;/b&gt; directly in MSDB from SSMS by logging in Integration Services. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q6 Difference between DTS and SSIS?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;Every thing except both are product of Microsoft :-).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q7 What are new features in SSIS 2008?&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #cc0000;"&gt;&lt;br /&gt;explained in other post&lt;br /&gt;&lt;/span&gt;&lt;a href="http://sqlserversolutions.blogspot.com/2009/01/new-improvementfeatures-in-ssis-2008.html"&gt;&lt;span style="color: #3333ff;"&gt;http://sqlserversolutions.blogspot.com/2009/01/new-improvementfeatures-in-ssis-2008.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q8 How would you pass a variable value to Child Package?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;too big to fit here so had a write other post&lt;/span&gt;&lt;br /&gt;&lt;a href="http://sqlserversolutions.blogspot.com/2009/02/passing-variable-to-child-package-from.html"&gt;&lt;span style="color: #3333ff;"&gt;http://sqlserversolutions.blogspot.com/2009/02/passing-variable-to-child-package-from.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q9 What is Execution Tree?&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;Execution trees demonstrate how package uses buffers and threads. At run time, the data flow engine breaks down Data Flow task operations into execution trees. These execution trees specify how buffers and threads are allocated in the package. Each tree creates a new buffer and may execute on a different thread.  When a new buffer is created such as when a partially blocking or blocking transformation is added to the pipeline, additional memory is required to handle the data transformation and each new tree may also give you an additional worker thread.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q10 What are the points to keep in mind for performance improvement of the package?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;http://technet.microsoft.com/en-us/library/cc966529.aspx&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="color: #cc0000;"&gt;Q11 You may get a question stating a scenario and then asking you how would you create a package for that e.g. How would you configure a data flow task so that it can transfer data to different table based on the city name in a source table column?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q13 Difference between Unionall and Merge Join?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;a) Merge transformation can accept only two inputs whereas Union all can take more than two inputs&lt;br /&gt;&lt;br /&gt;b) Data has to be sorted before Merge Transformation whereas Union all doesn't have any condition like that.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q14 May get question regarding what X transformation do?Lookup, fuzzy lookup, fuzzy grouping transformation are my favorites.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;For you.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q15 How would you restart package from previous failure point?What are Checkpoints and how can we implement in SSIS?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;When a package is configured to use checkpoints, information about package execution is written to a checkpoint file. When the failed package is rerun, the checkpoint file is used to restart the package from the point of failure. If the package runs successfully, the checkpoint file is deleted, and then re-created the next time that the package is run.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q16 Where are SSIS package stored in the SQL Server?&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;MSDB.sysdtspackages90 stores the actual content and ssydtscategories, sysdtslog90, sysdtspackagefolders90, sysdtspackagelog, sysdtssteplog, and sysdtstasklog do the supporting roles.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q17 How would you schedule a SSIS packages?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Using SQL Server Agent. Read about Scheduling a job on Sql server Agent&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q18 Difference between asynchronous and synchronous transformations?&lt;/span&gt; &lt;/b&gt;&lt;span style="color: #3333ff;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;Asynchronous transformation have different Input and Output buffers and it is up to the component designer in an Async component to provide a column structure to the output buffer and hook up the data from the input.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q19 How to achieve parallelism in SSIS?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;Parallelism is achieved using &lt;b&gt;MaxConcurrentExecutable&lt;/b&gt; property of the package. Its default is -1 and is calculated as number of processors + 2.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;-More questions added-Sept 2011 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q20 How do you do incremental load?&lt;/span&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;Fastest way to do incremental load is by using Timestamp column in source table and then storing last ETL timestamp, In ETL process pick all the rows having Timestamp greater than the stored Timestamp so as to pick only new and updated records &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Q21 How to handle Late Arriving Dimension or Early Arriving Facts.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt;Late arriving dimensions sometime get unavoidable 'coz delay or error in Dimension ETL or may be due to logic of ETL. To handle Late Arriving facts, we can create dummy Dimension with natural/business key and keep rest of the attributes as null or default.&amp;nbsp; And as soon as Actual dimension arrives, the dummy dimension is updated with Type 1 change. These are also known as Inferred Dimensions.&lt;/span&gt;&lt;/div&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #3333ff; font-size: 100%;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #38761d; font-family: verdana;"&gt;&lt;u&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 100%; line-height: 115%;"&gt;&lt;b&gt; &lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;b&gt;&lt;u&gt;&lt;i&gt;&lt;a href="http://sqlserversolutions.blogspot.com/2011/06/ssrs-interview-questions.html"&gt;&lt;span style="color: #38761d;"&gt;Might want to read SSRS Interview Questions&lt;/span&gt;&lt;/a&gt;&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;b&gt;&lt;u&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 100%; line-height: 115%;"&gt;&lt;b&gt; &lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5882601163862418893?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5882601163862418893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/ssis-interview-questions.html#comment-form' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5882601163862418893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5882601163862418893'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/ssis-interview-questions.html' title='SSIS Interview Questions'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QovaFUn52ys/S9MMFk5wYFI/AAAAAAAAAP8/Yn8cDgWJMqc/s72-c/SSIS+Architecture.JPG' height='72' width='72'/><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-9091221344939931797</id><published>2009-02-19T11:25:00.022+05:30</published><updated>2009-03-06T16:46:20.699+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Selecting Excel source range in SSIS</title><content type='html'>Many times I have been asked by SSIS programmers that they face difficulties when they need to select some specified columns and rows or they need to skip first 2 /3 rows in the excel sheet.&lt;br /&gt;&lt;br /&gt;Below I will demonstrate how we can select a specified range in an Excel Sheet.&lt;br /&gt;&lt;br /&gt;A) Let me take below sheet as an example and select data after first 2 rows&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QovaFUn52ys/SZz1-0bV8zI/AAAAAAAAAJg/zucyhuWUNuw/s1600-h/ExcelSource.jpg"&gt;&lt;img style="cursor: pointer; width: 284px; height: 343px;" src="http://3.bp.blogspot.com/_QovaFUn52ys/SZz1-0bV8zI/AAAAAAAAAJg/zucyhuWUNuw/s400/ExcelSource.jpg" alt="" id="BLOGGER_PHOTO_ID_5304384920709624626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;B) Now in Data Flow task, select an Excel source&lt;br /&gt;Configure Data Access Mode as &lt;span style="color: rgb(51, 255, 51);"&gt;SQL Command&lt;/span&gt;&lt;br /&gt;and in SQL Command Text give query as&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;SELECT * FROM [Sheet1$ &lt;span style="font-style: italic;"&gt;range&lt;/span&gt;]&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;SELECT * FROM [Sheet1$A2:B10]&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SZz3WAbuz1I/AAAAAAAAAJw/1z3juekUzkE/s1600-h/excelCommand.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 391px;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SZz3WAbuz1I/AAAAAAAAAJw/1z3juekUzkE/s400/excelCommand.jpg" alt="" id="BLOGGER_PHOTO_ID_5304386418581098322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;range&gt;&lt;br /&gt;&lt;br /&gt;&lt;/range&gt;&lt;/span&gt;&lt;span&gt;&lt;range&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;C) Preview&lt;/span&gt;&lt;/range&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;range&gt;&lt;br /&gt;&lt;br /&gt;&lt;/range&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SZz36WJsCnI/AAAAAAAAAJ4/X9epdqHwQiU/s1600-h/excelpreview.jpg"&gt;&lt;img style="cursor: pointer; width: 385px; height: 400px;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SZz36WJsCnI/AAAAAAAAAJ4/X9epdqHwQiU/s400/excelpreview.jpg" alt="" id="BLOGGER_PHOTO_ID_5304387042886290034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;This way user can select  any range or any specific cell value in an Excel File&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-9091221344939931797?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/9091221344939931797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/selecting-excel-range-in-ssis.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/9091221344939931797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/9091221344939931797'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/selecting-excel-range-in-ssis.html' title='Selecting Excel source range in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QovaFUn52ys/SZz1-0bV8zI/AAAAAAAAAJg/zucyhuWUNuw/s72-c/ExcelSource.jpg' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-8956257684045651197</id><published>2009-02-03T14:34:00.012+05:30</published><updated>2009-02-16T17:40:13.001+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Matching in Lookup Component in SSIS</title><content type='html'>Many SSIS programmers get confused &lt;span style="font-size:100%;"&gt;with the comparison results of Lookup transformation and feels &lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0in;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-fareast-font-family:"Times New Roman";} span.EmailStyle15  {mso-style-type:personal;  mso-style-noshow:yes;  mso-ansi-font-size:10.0pt;  mso-bidi-font-size:10.0pt;  font-family:Arial;  mso-ascii-font-family:Arial;  mso-hansi-font-family:Arial;  mso-bidi-font-family:Arial;  color:windowtext;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.25in 1.0in 1.25in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="font-size:100%;"&gt;baffled&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;;-|&lt;/span&gt; . Lookup transformation in SSIS is used to lookup for a reference in the lookup table where it performs a equi-join and returns the referenced column.&lt;br /&gt;&lt;br /&gt;Let me explain the &lt;span style="font-weight: bold;"&gt;comparison/matching behavior of lookup transformation&lt;/span&gt;: It matches data differently when in cached (default) and non-cached (Enable memory Restriction) mode. In cached mode comparison will be case sensitive where as in non-cached mode comparison will be based on collation level of column being matched.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;       Mode  ::                                                                         &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Behavior&lt;/span&gt;&lt;br /&gt;Cached (default)  :: Case sensitive&lt;br /&gt;Non-cached (Enable memory restrictions) :: Collation level of column&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why?&lt;/span&gt;&lt;br /&gt;It basically depends where the comparision is done. In cached mode SSIS reterives data from the source and comparision is done at the client on the byte level which is &lt;span style="font-weight: bold;"&gt;CASE SENSITIVE&lt;/span&gt;. Whereas in Non-Cache mode ( Enable memory Restriction) comparision is done at database and is based on the &lt;span style="font-weight: bold;"&gt;collation level of the column&lt;/span&gt; being matched.&lt;br /&gt;&lt;br /&gt;That's the behavior of Lookup Transformation in SSIS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-8956257684045651197?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/8956257684045651197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/comparision-in-lookup-component-in-ssis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8956257684045651197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8956257684045651197'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/02/comparision-in-lookup-component-in-ssis.html' title='Matching in Lookup Component in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-505504622669010013</id><published>2009-01-30T14:27:00.006+05:30</published><updated>2009-01-30T15:48:08.292+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>New improvements / features in SSIS 2008</title><content type='html'>With the release of SQL SERVER 2008 comes improved SSIS 2008. I will try to list down the improved and new features in SSIS 2008&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;1) Improved Parallelism of Execution Trees&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;The biggest performance improvement in the SSIS 2008 is incorporation of parallelism  in the processing of execution tree. In SSIS 2005, each execution tree used a single thread whereas in SSIS 2008 , the Data flow engine is redesigned to utilize multiple threads and take advantage of dynamic scheduling to execute multiple components in parallel, including components within the same execution tree&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;2) Any .NET language for Scripting:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SSIS 2008 is incorporated with new Visual Studio Tool for Application(VSTA) scripting engine. Advantage of VSTA is it enables user to use any .NET language for scripting.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;3) New ADO.NET Source and Destination Component&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;SSIS 2008 gets a new Source and Destination Component for ADO.NET Record sets.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;4) Improved Lookup Transformation: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In SSIS 2008, the Lookuo Transformation has faster cache loading and lookup operations. It has new caching options, including the ability for the reference dataset to use a cache file(.caw) accessed by the Cache Connectin Manager. In addition same cache can be shared between multiple Lookup Transformations.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;5) New Data Profiling Task&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;SSIS 2008 has a new debugging aid Data Profiling Task that can help user analyze the data flows occurring in the package.In many cases, execution errors are caused by unexpected variations in the data that is being transferred. The Data Profiling Task can help users to discover the cource of these errors by giving better visibility into the data flow.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;6) New Connections Project Wizard:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the main usability enhancement to SSIS 2008 is the new Connections Project Wizard. The Connections Project Wizard guides user through the steps required to create source and destinations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-505504622669010013?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/505504622669010013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/new-improvementfeatures-in-ssis-2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/505504622669010013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/505504622669010013'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/new-improvementfeatures-in-ssis-2008.html' title='New improvements / features in SSIS 2008'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-828567486809293496</id><published>2009-01-29T13:07:00.007+05:30</published><updated>2009-01-29T13:59:50.801+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Difference between Merge and Union all transformation</title><content type='html'>I have been asked by many new SSIS developer about difference between Merge and Union all transformation in SSIS.&lt;br /&gt;&lt;br /&gt;Well both of them essentially takes outputs from more than one sources and combines them into a single result set but there are couple of differences between two:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;a) Merge transformation can accept only two inputs whereas Union all can take more than two inputs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;b) Data has to be sorted before Merge Transformation whereas  Union all doesn't have any condition like that.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-828567486809293496?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/828567486809293496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/difference-between-merge-and-union-all.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/828567486809293496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/828567486809293496'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/difference-between-merge-and-union-all.html' title='Difference between Merge and Union all transformation'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-7146903415784628329</id><published>2009-01-27T13:28:00.007+05:30</published><updated>2009-01-29T11:35:46.936+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Using varibles in Data flow Script task in SSIS</title><content type='html'>How to use variables in Script component of Data flow task in SSIS&lt;br /&gt;&lt;br /&gt;1) Declare a variable  as MyVar in varible window.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SX6_d87ZY1I/AAAAAAAAAJI/xbnNYIio18A/s1600-h/MyVar.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 96px;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SX6_d87ZY1I/AAAAAAAAAJI/xbnNYIio18A/s400/MyVar.jpg" alt="" id="BLOGGER_PHOTO_ID_5295880733126648658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Declare variable type in dataflow&gt; Script Component &gt;Script&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SX6_oXrzI2I/AAAAAAAAAJQ/u90j8wlSodU/s1600-h/declvar.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 391px;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SX6_oXrzI2I/AAAAAAAAAJQ/u90j8wlSodU/s400/declvar.jpg" alt="" id="BLOGGER_PHOTO_ID_5295880912107676514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) Use variable in the script&lt;br /&gt; Now here is the catch we use variable in data flow task by&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;Me.Variable.MyVar ="MyVariable"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;where as in control flow we use variable using&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;DTS.Variable("MyVar").value = "MyVariable"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-7146903415784628329?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/7146903415784628329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/using-varibles-in-data-flow-script-task.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7146903415784628329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7146903415784628329'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/using-varibles-in-data-flow-script-task.html' title='Using varibles in Data flow Script task in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/SX6_d87ZY1I/AAAAAAAAAJI/xbnNYIio18A/s72-c/MyVar.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-6886934292857313240</id><published>2009-01-05T17:09:00.010+05:30</published><updated>2009-01-23T11:06:00.087+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Creating directory using SSIS</title><content type='html'>Creating a directory/folder at a dynamic path using SSIS sometimes becomes complex job as I feel and can understand by reading questions posted on various SSIS forums, File System task is not good in handling dynamic path&lt;br /&gt;&lt;br /&gt;Here as an example and answer to a question posted on MSDN forum I would demonstrate how we can create a directory of today's date.&lt;br /&gt;&lt;br /&gt;1) Create a variable varDirPath of string datatype&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SWH3UvpLKQI/AAAAAAAAAI0/m_5JdQybVzo/s1600-h/varDirPath.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 114px;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SWH3UvpLKQI/AAAAAAAAAI0/m_5JdQybVzo/s400/varDirPath.jpg" alt="" id="BLOGGER_PHOTO_ID_5287779373268281602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.a) Create a Script task and give varDirPath as ReadWriteVariable&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SWH0W4JB5EI/AAAAAAAAAIk/3j8phXbT96Y/s1600-h/script.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 374px;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SWH0W4JB5EI/AAAAAAAAAIk/3j8phXbT96Y/s400/script.jpg" alt="" id="BLOGGER_PHOTO_ID_5287776111374230594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.b) Use below code to set varDirPath value as the path of directory to be created&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Public Sub Main()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'set dir path&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Dts.Variables("varDirPath").Value = "D:\" + Date.Today.Year.ToString _&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;+ Date.Today.Month.ToString + Date.Today.Day.ToString&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Dts.TaskResult = Dts.Results.Success&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;this will create path like D:\20090115&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3) Use File System Task and configure like below pic:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SWH3Nj_ciyI/AAAAAAAAAIs/hGlPZgJNZ7g/s1600-h/FileSystemTask.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 374px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SWH3Nj_ciyI/AAAAAAAAAIs/hGlPZgJNZ7g/s400/FileSystemTask.jpg" alt="" id="BLOGGER_PHOTO_ID_5287779249881385762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Execute the package&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SWH7py1xchI/AAAAAAAAAI8/11d8fT4xkQI/s1600-h/Execute.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 371px;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SWH7py1xchI/AAAAAAAAAI8/11d8fT4xkQI/s400/Execute.jpg" alt="" id="BLOGGER_PHOTO_ID_5287784132950192658" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-6886934292857313240?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/6886934292857313240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/creating-directory-using-ssis.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6886934292857313240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/6886934292857313240'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/creating-directory-using-ssis.html' title='Creating directory using SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/SWH3UvpLKQI/AAAAAAAAAI0/m_5JdQybVzo/s72-c/varDirPath.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5306427769073423206</id><published>2009-01-02T13:26:00.005+05:30</published><updated>2009-01-02T14:45:37.018+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Query Execution'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Cracking Query Execution - II: Why Actual and Estimated Query Execution Plan may differ</title><content type='html'>Generally there is no difference between Actual Execution plan  and Estimated plan and Query is executed the way Estimated Plan outlines.However, circumstances can arise that can cause Execution Plan to change:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Obsolete Statistics: &lt;/span&gt;&lt;br /&gt;The main cause of difference between the plans is difference between the statistics and the actual data.This generally occurs over time as data is added and deleted. This causes the key values that define the index to change,or their distribution to change.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Estimated Plan becomes Invalid:&lt;/span&gt;&lt;br /&gt;In some instances, SQL Server Engine doesn't even generate Estimated execution plan, like&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CREATE TABLE tblAbc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Col1 INT,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Col2 INT);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;INSERT INTO tblAnd VALUES ( 1,2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will through error as&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Msg 208, Level 16, State 1, Line 6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Invalid object name 'tblAnd'.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;As table tblAbc doesn't exists in database yet, so it cant create a plan for it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;When Parallelism is required:&lt;/span&gt;&lt;br /&gt;When a plan meets a threshold for parallelism two plans are created. Which plan is actually executed is up to the query engine.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5306427769073423206?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5306427769073423206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/cracking-query-execution-ii-why-actual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5306427769073423206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5306427769073423206'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2009/01/cracking-query-execution-ii-why-actual.html' title='Cracking Query Execution - II: Why Actual and Estimated Query Execution Plan may differ'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-2087335418255526476</id><published>2008-12-31T11:34:00.018+05:30</published><updated>2009-01-02T15:00:22.662+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Query Execution'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Cracking Query Execution - I: Query Cycle</title><content type='html'>The very basic idea of designing a database is to store information and Query effectively, I will discuss what a Query is and how it gets executed:&lt;br /&gt;&lt;br /&gt;QUERY: A precise request for information retrieval with database and information systems&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What happens when we submit a query:&lt;/span&gt;&lt;br /&gt;As we submit a query, number of processes in the database engine go to work on it so as to manage the system in such way that retrieve or store a data in a timely a manner as possible, whilst maintaining the integrity of the data.&lt;br /&gt;We can roughly break down these processes into two stages&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A) Processes that occurs in the Relational engine&lt;/span&gt;&lt;br /&gt;In relational engine the query is parsed and then processed by Query Optimizer, which generates an execution plan. This plan is sent (in binary format) to Storage engine.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;B) Processes that occurs in the Storage engine  &lt;/span&gt;&lt;br /&gt;In storage engine process such as locking, index maintenance and transaction occur.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Query Parsing:&lt;/span&gt;&lt;br /&gt;As a SQL Server Engine receives a query,it passes it through a process that checks that the T-SQL is written correctly and is well formed.The output of the parser process is a &lt;span style="font-weight: bold;"&gt;PARSE TREE&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;If the T-SQL is a DML, the Parse tree is passed to a precess called as &lt;span style="font-weight: bold;"&gt;ALGEBRIZER&lt;/span&gt;,  it resolves all the names of various objects like table and columns referred in the query, it also performs type checking and does aggreate binding (determines location of aggregates with in the query). Output of Algebrizer is called as &lt;span style="font-weight: bold;"&gt;QUERY PROCESSOR TREE&lt;/span&gt; or ALEGEBRISER TREE and is passed to Query optimiser&lt;br /&gt;Non DML are not passed to Algebrizer of query optimiser as non-DML cant be optimized (SQL Server doesn't provide many ways of creating a table).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Query Optimizer: &lt;/span&gt;&lt;br /&gt;The optimizer figures out how best to implement the request represented by the T-SQL query you submitted.  It decides if the data can be accessed through indexes, what types of joins to use and much more.  The decisions made by the optimizer are based on what it calculates to be the cost of a given execution plan, in terms of the required CPU processing and I/O, and how fast it will execute.  Hece, this is known as &lt;span style="font-weight: bold;"&gt;cost-based &lt;/span&gt;plan.&lt;br /&gt;&lt;br /&gt;The optimizer will generate and evaluate many plans (unless there is already a cached plan) and, generally speaking, will choose the lowest-cost plan i.e. the plan it thinks will execute the query as fast as possible and use the least amount of resources, CPU and I/O. The calulation of the execution speed is the most important calculation. Sometimes, the optimizer will select a less efficient plan if it thinks ith will take more time to evaluate many plans than to run a less efficient plan.&lt;br /&gt;&lt;br /&gt;Once the optimizer arrives at an execution plan, the estimated execution plan is created and stored in a memory space known as the PLAN CACHE.&lt;br /&gt;Sometimes actual executed plan differs from the estimated execution plan , &lt;a href="http://sqlserversolutions.blogspot.com/2009/01/cracking-query-execution-ii-why-actual.html"&gt;WHY&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Query Execution:&lt;/span&gt;&lt;br /&gt;Once the execution plan is generated, the action switches to the storage engine, where the query is actually executed, according to the plan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-2087335418255526476?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/2087335418255526476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/12/cracking-query-execution-i.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/2087335418255526476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/2087335418255526476'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/12/cracking-query-execution-i.html' title='Cracking Query Execution - I: Query Cycle'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5429505655859293999</id><published>2008-12-24T16:09:00.010+05:30</published><updated>2008-12-30T11:26:17.236+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Numeric Checking in SSIS</title><content type='html'>A post in MSDN forum drew my attention toward missing functionality of IsNumeric()  in SSIS expressions.&lt;br /&gt;&lt;br /&gt;To solve this we can use script task and check of IsNumric()&lt;br /&gt;forexample  I will use following data and table&lt;br /&gt;&lt;br /&gt;--create a test table&lt;br /&gt;create table TEST&lt;br /&gt;(&lt;br /&gt;[id] varchar(20),&lt;br /&gt;[name] varchar(20)&lt;br /&gt;)&lt;br /&gt;--Fill some data&lt;br /&gt;&lt;br /&gt;Insert into TEST values ( 1,'Mike')&lt;br /&gt;Insert into TEST values ( 2 ,'Rahul')&lt;br /&gt;--error data with non numeric id&lt;br /&gt;Insert into TEST values ( '3a' ,'Worngdata')&lt;br /&gt;&lt;br /&gt;Now lets design our package&lt;br /&gt;1) Get data extract in Oledb DataSoruce&lt;br /&gt;2) Create a Script task and specify input column as ID&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SVIUcfrKuEI/AAAAAAAAAHk/ylE4nz4clvI/s1600-h/script1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 391px;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SVIUcfrKuEI/AAAAAAAAAHk/ylE4nz4clvI/s400/script1.jpg" alt="" id="BLOGGER_PHOTO_ID_5283307792630462530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.b) Add a column as IsNumeric of Boolean datatype&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QovaFUn52ys/SVIViuqMSkI/AAAAAAAAAH0/QneKtDp_2sc/s1600-h/script2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 391px;" src="http://3.bp.blogspot.com/_QovaFUn52ys/SVIViuqMSkI/AAAAAAAAAH0/QneKtDp_2sc/s400/script2.jpg" alt="" id="BLOGGER_PHOTO_ID_5283308999243745858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.c) Write below code as Script&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If IsNumeric(Row.id) Then&lt;br /&gt;    Row.IsNumeric = True&lt;br /&gt;Else&lt;br /&gt;    Row.IsNumeric = False&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;3) Use Conditional Split to separate out bad records and valid records&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SVIWOFEP-vI/AAAAAAAAAH8/cRSY--W0JEE/s1600-h/conditional.jpg"&gt;&lt;img style="cursor: pointer; width: 365px; height: 400px;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SVIWOFEP-vI/AAAAAAAAAH8/cRSY--W0JEE/s400/conditional.jpg" alt="" id="BLOGGER_PHOTO_ID_5283309743992994546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Now when we execute the package it will separate out records with non-numeric data&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QovaFUn52ys/SVIXNZ5xFLI/AAAAAAAAAIE/P9y_cjDuimY/s1600-h/result1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 172px;" src="http://3.bp.blogspot.com/_QovaFUn52ys/SVIXNZ5xFLI/AAAAAAAAAIE/P9y_cjDuimY/s400/result1.jpg" alt="" id="BLOGGER_PHOTO_ID_5283310831917929650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Full package&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SVIXxYp05cI/AAAAAAAAAIU/EtHEK7Z_KHs/s1600-h/result2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 237px;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SVIXxYp05cI/AAAAAAAAAIU/EtHEK7Z_KHs/s400/result2.jpg" alt="" id="BLOGGER_PHOTO_ID_5283311450057926082" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5429505655859293999?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5429505655859293999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/12/numeric-checking-in-ssis.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5429505655859293999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5429505655859293999'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/12/numeric-checking-in-ssis.html' title='Numeric Checking in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QovaFUn52ys/SVIUcfrKuEI/AAAAAAAAAHk/ylE4nz4clvI/s72-c/script1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-951943293703864666</id><published>2008-12-23T17:02:00.003+05:30</published><updated>2008-12-23T17:12:34.860+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server Scripts'/><title type='text'>Identify Orphan Users on an instance</title><content type='html'>Many a time when we move our database to new instance, rebuilding server or setting up a backup we need to synchronize user logins with the server&lt;br /&gt;&lt;br /&gt;We can use below script to find out the Orphan Users on the Server&lt;br /&gt;&lt;br /&gt;IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].[usp_ShowOrphanUsers]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)&lt;br /&gt;DROP PROCEDURE [dbo].[usp_ShowOrphanUsers]&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE PROC dbo.usp_ShowOrphanUsers&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;   CREATE TABLE #Results&lt;br /&gt;   ([Database Name] sysname ,&lt;br /&gt;   [Orphaned User] sysname ,&lt;br /&gt;   [Type User] sysname )&lt;br /&gt;&lt;br /&gt;   SET NOCOUNT ON  &lt;br /&gt;&lt;br /&gt;   DECLARE @DBName sysname, @Qry NVARCHAR(4000)&lt;br /&gt;&lt;br /&gt;   SET @Qry = ''&lt;br /&gt;   SET @DBName = ''&lt;br /&gt;&lt;br /&gt;   WHILE @DBName IS NOT NULL&lt;br /&gt;   BEGIN&lt;br /&gt;       SET @DBName =&lt;br /&gt;               (&lt;br /&gt;                   SELECT MIN(name)&lt;br /&gt;                   FROM master..sysdatabases&lt;br /&gt;                   WHERE     name NOT IN&lt;br /&gt;                       ('master', 'model', 'tempdb', 'msdb', 'distribution', 'pubs', 'northwind', 'dba_database')&lt;br /&gt;                       AND DATABASEPROPERTY(name, 'IsOffline') = 0&lt;br /&gt;                       AND DATABASEPROPERTY(name, 'IsSuspect') = 0&lt;br /&gt;                       AND name &gt; @DBName&lt;br /&gt;               )&lt;br /&gt;     &lt;br /&gt;       IF @DBName IS NULL BREAK&lt;br /&gt;&lt;br /&gt;       SET @Qry = '    SELECT ''' + @DBName + ''' AS [Database Name],&lt;br /&gt;               CAST(name AS sysname) COLLATE Latin1_General_CI_AS  AS [Orphaned User],&lt;br /&gt;               [Type User] =&lt;br /&gt;                   CASE isntuser&lt;br /&gt;                       WHEN ''0'' THEN ''SQL User''&lt;br /&gt;                       WHEN ''1'' THEN ''NT User''&lt;br /&gt;                       ELSE ''Not Available''&lt;br /&gt;                   END&lt;br /&gt;               FROM ' + QUOTENAME(@DBName) + '..sysusers su&lt;br /&gt;               WHERE su.islogin = 1&lt;br /&gt;               AND su.name NOT IN (''INFORMATION_SCHEMA'', ''sys'', ''guest'', ''dbo'', ''system_function_schema'')&lt;br /&gt;               AND NOT EXISTS (SELECT 1 FROM master..syslogins sl WHERE su.sid = sl.sid)'&lt;br /&gt;       INSERT INTO #Results&lt;br /&gt;       EXEC master..sp_executesql @Qry&lt;br /&gt;   END&lt;br /&gt;   SELECT *&lt;br /&gt;   FROM #Results&lt;br /&gt;   ORDER BY [Database Name], [Orphaned User]&lt;br /&gt;   IF @@ROWCOUNT = 0&lt;br /&gt;       PRINT 'No orphaned users exist in this server.'&lt;br /&gt;END&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;--Execute the proc&lt;br /&gt;EXEC [dbo].[usp_ShowOrphanUsers]&lt;br /&gt;&lt;br /&gt;"This script is taken from SQL Server Central"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-951943293703864666?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/951943293703864666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/12/identify-orphan-users-on-instance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/951943293703864666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/951943293703864666'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/12/identify-orphan-users-on-instance.html' title='Identify Orphan Users on an instance'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-62504090592680419</id><published>2008-10-31T14:18:00.002+05:30</published><updated>2008-10-31T14:22:17.893+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><title type='text'>New Datatypes in SQL Server 2008</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic;"&gt;SQL Server 2008 has introduced 4 new datatype:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Date and Time&lt;/b&gt;: Four new date and time data types have been added,  making working with time much easier than it ever has in the past. They include:  &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;, &lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;, &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;2&lt;/span&gt;, and &lt;span&gt;&lt;span style="font-variant: small-caps;"&gt;&lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;OFFSET&lt;/span&gt;.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spatial&lt;/b&gt;: Two new spatial data types have been added--&lt;span style="font-variant: small-caps;"&gt;GEOMETRY&lt;/span&gt; and &lt;span style="font-variant: small-caps;"&gt;GEOGRAPHY&lt;/span&gt;--which you can use to natively  store and manipulate location-based information, such as Global Positioning  System (GPS) data.  &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-variant: small-caps;"&gt;HIERARCHYID&lt;/span&gt;&lt;/b&gt;: The &lt;span style="font-variant: small-caps;"&gt;HIERARCHYID&lt;/span&gt; data type is used to enable  database applications to model hierarchical tree structures, such as the  organization chart of a business.  &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-variant: small-caps;"&gt;FILESTREAM&lt;/span&gt;&lt;/b&gt;: &lt;span style="font-variant: small-caps;"&gt;FILESTREAM&lt;/span&gt; is not a data type as such,  but is a variation of the VARBINARY(MAX) data type that allows unstructured data  to be stored in the file system instead of inside the SQL Server database. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Date and Time:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;In SQL Server 2005 and earlier, SQL Server only offered two date and time  data types: &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt; and SMALL&lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;. While they were useful in many  cases, they had a lot of limitations, including:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Both the date value and the time value are part of both of these data types,  and you can’t choose to store one or the other. This often causes a lot of  wasted storage (because you store data you don’t need or want); adds unwanted  complexity to many queries because the data types often had to be converted to a  different form to be useful; and often reduces performance because WHERE clauses  with these data and time data types often had to include functions to convert  them to a more useful form, preventing these queries from using indexes.  &lt;/li&gt;&lt;li&gt;They are not time-zone aware, which often requires extra coding for  time-aware applications.  &lt;/li&gt;&lt;li&gt;Precision is only .333 seconds, which is often not granular enough for some  applications.   &lt;/li&gt;&lt;li&gt;The range of supported dates is not adequate for some applications, and the  range does not match the range of .NET CLR &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt; data type, which requires  additional conversion code.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;To overcome these problems, SQL Server 2008 introduces four new date and time  data types, which include:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;/b&gt;: As you can  imagine, the &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt; data type only  stores a date in the format of &lt;i&gt;YYYY-MM-DD. &lt;/i&gt;It has a range of 0001-01-01  through 9999-12-32, which should be adequate for most business and scientific  applications. The accuracy is 1 day, and it only takes 3 bytes to store the  date.  &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;&lt;/b&gt;: &lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt; is stored in the format:  &lt;i&gt;hh:mm:ss.nnnnnnn&lt;/i&gt;, with a range of 00:00:00.0000000 through  23:59:59:9999999 and is accurate to 100 nanoseconds. Storage depends on the  precision and scale selected, and runs from 3 to 5 bytes.  &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;2&lt;/span&gt;&lt;/b&gt;: &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;2&lt;/span&gt; is very similar to the  older &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt; data type, but has a greater range  and precision. The format is &lt;i&gt;YYYY-MM-DD hh:mm:ss:nnnnnnnm&lt;/i&gt; with a range of  0001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999, and an accuracy  of 100 nanoseconds. Storage depends on the precision and scale selected, and  runs from 6 to 8 bytes.  &lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-variant: small-caps;"&gt;&lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;OFFSET&lt;/span&gt;&lt;/b&gt;: &lt;span style="font-variant: small-caps;"&gt;&lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;OFFSET&lt;/span&gt; is similar to &lt;span style="font-variant: small-caps;"&gt;DATE&lt;/span&gt;&lt;span style="font-variant: small-caps;"&gt;&lt;span style="font-variant: small-caps;"&gt;TIME&lt;/span&gt;2&lt;/span&gt;, but includes additional  information to track the time zone. The format is &lt;i&gt;YYYY-MM-DD  hh:mm:ss[.nnnnnnn] [+|-]hh:mm &lt;/i&gt;with a range of 0001-01-01 00:00:00.0000000  through 0001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999 (in  UTC), and an accuracy of 100 nanoseconds. Storage depends on the precision and  scale selected, and runs from 8 to 10 bytes.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-62504090592680419?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/62504090592680419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/new-datatypes-in-sql-server-2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/62504090592680419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/62504090592680419'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/new-datatypes-in-sql-server-2008.html' title='New Datatypes in SQL Server 2008'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-7607410349750108604</id><published>2008-10-20T17:26:00.014+05:30</published><updated>2010-11-12T12:03:57.409+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Prompting for parameter  in SSIS</title><content type='html'>A question in MSDN forum drew my attention towards the missing functionality of&lt;br /&gt;&lt;div style="color: red; text-align: center;"&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Prompting for parameters in SSIS&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;A question might struck in your mind that if we have it in SSRS than why not in SSIS. Well I am a great fan of Microsoft as they provide alternative for any thing under the sun (Sometimes SUN itself). In this post I would like to demonstrate how we can implement prompt for variable values in SSIS..&lt;br /&gt;&lt;br /&gt;For the implemention, Let me consider a simple table having Name and Email Id.&lt;br /&gt;Through SSIS package we will prompt for Name and accept Name from User.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;CREATE  TABLE [tblSSISPrompt]&lt;br /&gt;(&lt;br /&gt;[Name] varchar(15),&lt;br /&gt;[Email] varchar(50)&lt;br /&gt;)&lt;br /&gt;GO&lt;br /&gt;--Fill table with some data&lt;br /&gt;&lt;br /&gt;INSERT INTO [tblSSISPrompt] VALUES ('Rahul', 'Rahul.Kumar@sqlsvrsol.com')&lt;br /&gt;INSERT INTO [tblSSISPrompt] VALUES  ('Prashant','Prashant.M@sqlsvrsol.com')&lt;br /&gt;INSERT INTO [tblSSISPrompt] VALUES  ('Mark','Mark.W@sqlsvrsol.com')&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;SELECT * FROM [tblSSISPrompt]&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/SPx0ANK1jwI/AAAAAAAAAGI/7b8V9gnZ_L4/s1600-h/sel.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5259206011745832706" src="http://4.bp.blogspot.com/_QovaFUn52ys/SPx0ANK1jwI/AAAAAAAAAGI/7b8V9gnZ_L4/s400/sel.JPG" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now we start with SSIS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A)&lt;/span&gt; Declare two variable&lt;br /&gt;a) SqlStmt to store SQL query&lt;br /&gt;b) Email to get Email from the resultset from Sql query&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/SPx1R7aI9RI/AAAAAAAAAGQ/5k_BxRb3rmo/s1600-h/var.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5259207415727453458" src="http://2.bp.blogspot.com/_QovaFUn52ys/SPx1R7aI9RI/AAAAAAAAAGQ/5k_BxRb3rmo/s400/var.JPG" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;B)&lt;/span&gt; Use Script Task to prompt and prepare SQL query and store in SqlStmt variable&lt;br /&gt;a) Specify SqlStmt as ReadWriteVariables&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QovaFUn52ys/SPx1-g77JMI/AAAAAAAAAGY/0K6D1F51vBI/s1600-h/sript.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5259208181715510466" src="http://4.bp.blogspot.com/_QovaFUn52ys/SPx1-g77JMI/AAAAAAAAAGY/0K6D1F51vBI/s400/sript.JPG" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b) Code for prompt and prepare SQL query&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Public Sub Main()&lt;br /&gt;Dim Name As String&lt;br /&gt;&lt;br /&gt;'Prompt&lt;br /&gt;Name = InputBox("Enter Name", "Name Dialog")&lt;br /&gt;&lt;br /&gt;'Prepare SQL query&lt;br /&gt;Dts.Variables("SqlStmt").Value = _&lt;br /&gt;"SELECT Email FROM tblSSISPrompt WHERE Name = '" + Name + "'"&lt;br /&gt;&lt;br /&gt;'msgbox&lt;br /&gt;MsgBox(Dts.Variables("SqlStmt").Value, , "Query")&lt;br /&gt;&lt;br /&gt;End Sub&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C)&lt;/span&gt; Use Execute SQL Task to execute the query&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/SPx27OjDf3I/AAAAAAAAAGg/ubvOZC7uNgA/s1600-h/sript.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5259209224751382386" src="http://2.bp.blogspot.com/_QovaFUn52ys/SPx27OjDf3I/AAAAAAAAAGg/ubvOZC7uNgA/s400/sript.JPG" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;D)&lt;/span&gt; Execute the Package&lt;br /&gt;a) As you execute the package, it will prompt for Name&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/SPx3iC9aczI/AAAAAAAAAGo/AS1OUXx6Y1c/s1600-h/res1.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5259209891655611186" src="http://1.bp.blogspot.com/_QovaFUn52ys/SPx3iC9aczI/AAAAAAAAAGo/AS1OUXx6Y1c/s400/res1.JPG" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b)  Script will display query in Message box&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_QovaFUn52ys/SPx4Z81jG-I/AAAAAAAAAGw/BAcMI6nnMeE/s1600-h/msg.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5259210852084685794" src="http://1.bp.blogspot.com/_QovaFUn52ys/SPx4Z81jG-I/AAAAAAAAAGw/BAcMI6nnMeE/s400/msg.JPG" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;c) Finally Execute SQL Task will execute the query&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_QovaFUn52ys/SPx40tvtK0I/AAAAAAAAAG4/Yss8fYl9ucA/s1600-h/fre.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5259211311890115394" src="http://2.bp.blogspot.com/_QovaFUn52ys/SPx40tvtK0I/AAAAAAAAAG4/Yss8fYl9ucA/s400/fre.JPG" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Congrats!!! thats Prompting for parameters in SSIS&lt;/blockquote&gt;If you want to do the same thing in C#, read first comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-7607410349750108604?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/7607410349750108604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/prompting-for-parameter-in-ssis.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7607410349750108604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7607410349750108604'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/prompting-for-parameter-in-ssis.html' title='Prompting for parameter  in SSIS'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QovaFUn52ys/SPx0ANK1jwI/AAAAAAAAAGI/7b8V9gnZ_L4/s72-c/sel.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-4794982977398081452</id><published>2008-10-15T16:56:00.010+05:30</published><updated>2008-10-16T14:12:09.518+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Zip and unzip files in a folder</title><content type='html'>Many a time we need to zip or unzip more then one file present in a folder. SSIS provides a easy way to handle this.&lt;br /&gt;&lt;br /&gt;For my example I am using 7-zip though we have many other compress software like (pkzip or winzip)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Steps to zip/unzip files&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A)&lt;/span&gt; Declare a variable FileName as string datatype&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SPXVBW2LsXI/AAAAAAAAAFY/bfvG3jP2-J8/s1600-h/var1.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SPXVBW2LsXI/AAAAAAAAAFY/bfvG3jP2-J8/s400/var1.JPG" alt="" id="BLOGGER_PHOTO_ID_5257342359314346354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;B) &lt;/span&gt;Use ForEach loop to loop through the files in the folder and map file names to FileName variable&lt;br /&gt;a) Provide folder name inEnumerator configuration&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QovaFUn52ys/SPXVfBdDO4I/AAAAAAAAAFg/xRC-4pauSAQ/s1600-h/fo1.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_QovaFUn52ys/SPXVfBdDO4I/AAAAAAAAAFg/xRC-4pauSAQ/s400/fo1.JPG" alt="" id="BLOGGER_PHOTO_ID_5257342868967865218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b) map FileName Variable&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SPXWElxOfRI/AAAAAAAAAFo/wa3_CrlYFK0/s1600-h/fo2.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SPXWElxOfRI/AAAAAAAAAFo/wa3_CrlYFK0/s400/fo2.JPG" alt="" id="BLOGGER_PHOTO_ID_5257343514371325202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C)&lt;/span&gt; Use Execute Process task to zip/unzip to individual files&lt;br /&gt;a) Browse to Exe of 7z in Executable&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SPXYJVfZ83I/AAAAAAAAAFw/zK_jYTcc6U4/s1600-h/ex1.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SPXYJVfZ83I/AAAAAAAAAFw/zK_jYTcc6U4/s400/ex1.JPG" alt="" id="BLOGGER_PHOTO_ID_5257345794924213106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b) Use expression to configure the argument&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_QovaFUn52ys/SPXYfTZujgI/AAAAAAAAAF4/7MDhW-c05ZQ/s1600-h/ex2.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_QovaFUn52ys/SPXYfTZujgI/AAAAAAAAAF4/7MDhW-c05ZQ/s400/ex2.JPG" alt="" id="BLOGGER_PHOTO_ID_5257346172320648706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;D)&lt;/span&gt; Execute the package&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SPXZC5dRJJI/AAAAAAAAAGA/cUh7eTz5-z4/s1600-h/re.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SPXZC5dRJJI/AAAAAAAAAGA/cUh7eTz5-z4/s400/re.JPG" alt="" id="BLOGGER_PHOTO_ID_5257346783831467154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Use the files........&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-4794982977398081452?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/4794982977398081452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/zip-and-unzip-files-in-folder.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4794982977398081452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/4794982977398081452'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/zip-and-unzip-files-in-folder.html' title='Zip and unzip files in a folder'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QovaFUn52ys/SPXVBW2LsXI/AAAAAAAAAFY/bfvG3jP2-J8/s72-c/var1.JPG' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-5784615386655737449</id><published>2008-10-15T13:33:00.010+05:30</published><updated>2008-10-15T14:19:59.008+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><title type='text'>Returning numeric value in Execute SQL task</title><content type='html'>Yesterday night a question on MSDN fourm drew my attention towards a wired but ture fact that SSIS does not accept numeric value as double in Execute SQL task.&lt;br /&gt;&lt;div style="text-align: center; font-style: italic;"&gt;So how do we use our numeric value in Execute SQL Task&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;SSIS considers the numeric values as string when they are returned from Execute SQL task, so to use that value we have to follow two steps&lt;br /&gt;&lt;br /&gt;1) Map the value to a String or Object datatype variable&lt;br /&gt;2) Convert this value to double and store in other variable&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Let me take an example to show how it works&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I will consider below table for the example and extract maximum value of Num column&lt;br /&gt;CREATE TABLE tblAbc&lt;br /&gt;(&lt;br /&gt;[Id] INT IDENTITY (1,1),&lt;br /&gt;[Num] NUMERIC(10,4)&lt;br /&gt;)&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;INSERT INTO tblAbc VALUES (123.23)&lt;br /&gt;INSERT INTO tblAbc VALUES (555.23)&lt;br /&gt;GO&lt;br /&gt;--query we will use to extract max of Num&lt;br /&gt;SELECT  Max(Num)as Num FROM tblAbc&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now its implementation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A)&lt;/span&gt; Declare two variables 1) objNum as object and 2) dblNum as double datatype&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SPWmLU4URlI/AAAAAAAAAE4/Bses555qmwQ/s1600-h/var.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SPWmLU4URlI/AAAAAAAAAE4/Bses555qmwQ/s400/var.JPG" alt="" id="BLOGGER_PHOTO_ID_5257290853538612818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;B)&lt;/span&gt;  Use Execute SQL task to extract numeric value and map it to objNum variable&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SPWniqVPYfI/AAAAAAAAAFA/_4WvEBPBhtM/s1600-h/map.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SPWniqVPYfI/AAAAAAAAAFA/_4WvEBPBhtM/s400/map.JPG" alt="" id="BLOGGER_PHOTO_ID_5257292353945690610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;map result to objNum variable&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_QovaFUn52ys/SPWnvydjTDI/AAAAAAAAAFI/q7IubjNx-Gk/s1600-h/asd.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_QovaFUn52ys/SPWnvydjTDI/AAAAAAAAAFI/q7IubjNx-Gk/s400/asd.JPG" alt="" id="BLOGGER_PHOTO_ID_5257292579466333234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C)&lt;/span&gt; Use script task to convert objNum value into double and assign it to dblNum variable&lt;br /&gt;a) specify&lt;br /&gt;      Readonlyvariable  as ObjNum&lt;br /&gt;      Readwritevariable as dblNum&lt;br /&gt;&lt;br /&gt;b) Write below code as script &lt;br /&gt;&lt;blockquote&gt;Dts.Variables("dblNum").Value = CDbl(Dts.Variables("objNum").Value&lt;br /&gt;MsgBox(Dts.Variables("dblNum").Value, , "dblNum")&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;D)&lt;/span&gt; Excute the package&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SPWpfsrLduI/AAAAAAAAAFQ/U9P3bvRCcP8/s1600-h/resu.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SPWpfsrLduI/AAAAAAAAAFQ/U9P3bvRCcP8/s400/resu.JPG" alt="" id="BLOGGER_PHOTO_ID_5257294502058227426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we have dblNum having our numeric value and can use it for any calculation purpose&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-5784615386655737449?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/5784615386655737449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/returning-numeric-value-in-execute-sql.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5784615386655737449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/5784615386655737449'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/returning-numeric-value-in-execute-sql.html' title='Returning numeric value in Execute SQL task'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/SPWmLU4URlI/AAAAAAAAAE4/Bses555qmwQ/s72-c/var.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-8479143127674781891</id><published>2008-10-14T16:19:00.005+05:30</published><updated>2011-06-16T10:25:13.624+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Difference between Stored Proc and User-defined Functions</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Today morning my close friend Prashanth (DotNet expert)  asked difference between Stored Proc and  Functions . So I am dedicating this post to him, also today is bithday of beautiful Buddu, his girlfriend.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Difference betweem Stored Proc and User-defined Functions&lt;/blockquote&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Stored Procedure have pre-compiled execuction plan where as functions do not.&lt;/li&gt;&lt;li&gt;Functions are used for computations where as procedures are mainly used for performing business logic.&lt;/li&gt;&lt;li&gt; Functions can only have 'in' parameter where as SP can have both 'in' and 'out' parameters.&lt;/li&gt;&lt;li&gt;Function does not allow DML (insert, update, delete) queries on an object where as SP allows.&lt;/li&gt;&lt;li&gt;Functions can be used inline where as SP can't be.&lt;/li&gt;&lt;li&gt;Stored Procedure can retun more than one value at a time while funtion returns only one value at a time.&lt;/li&gt;&lt;li&gt;Functions MUST return a value, procedures need not be.&lt;/li&gt;&lt;/ul&gt;Please leave your comments..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-8479143127674781891?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/8479143127674781891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/difference-between-stored-proc-and-user.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8479143127674781891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/8479143127674781891'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/difference-between-stored-proc-and-user.html' title='Difference between Stored Proc and User-defined Functions'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-7084747114647880093</id><published>2008-10-14T11:06:00.010+05:30</published><updated>2008-10-15T10:36:08.395+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Functions</title><content type='html'>With my personal experience of SQL Server, I believe Function (User defined functions) are under utilized then their potential so I thought of writing this post in complete honor of UDFs.&lt;br /&gt;&lt;br /&gt;Microsoft SQL Server provides three programmable objects&lt;br /&gt;a) User defined Functions b) Stored Procedure c) Triggers&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;" Functions are pre-prepared pieces of code that may accept parameters, and always return a value"&lt;/blockquote&gt;&lt;br /&gt;UDFs support the creation of rich programming logic, including looping, flow control, decision making and branching.&lt;br /&gt;UDFs can be divided into two types based on the value they return&lt;br /&gt;a) Scaler functions b)Table-valued functions&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A) Scaler functions:&lt;/span&gt; Scalar functions accept 0 or more input parameters and return a single scalar value.&lt;br /&gt;You use the CREATE FUNCTION Transact-SQL statement to create a function. The general syntax of the statement is as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE FUNCTION [ schema_name. ] function_name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ = default ] }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ ,...n ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURNS return_data_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ WITH &lt;function_option&gt; [ ,...n ] ]&lt;/function_option&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ AS ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function_body&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN scalar_expression&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END [ ; ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;function_option&gt;::=&lt;/function_option&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ ENCRYPTION ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;| [ SCHEMABINDING ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;| [ EXECUTE_AS_Clause ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Example&lt;/span&gt; from AdventureWorks database&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE FUNCTION [dbo].[ufnGetStock](@ProductID [int])&lt;br /&gt;RETURNS [int]&lt;br /&gt;AS&lt;br /&gt;-- Returns the stock level for the product. This function is used internally only&lt;br /&gt;BEGIN&lt;br /&gt;DECLARE @ret int;&lt;br /&gt;&lt;br /&gt;SELECT @ret = SUM(p.[Quantity])&lt;br /&gt;FROM [Production].[ProductInventory] p&lt;br /&gt;WHERE p.[ProductID] = @ProductID&lt;br /&gt;  AND p.[LocationID] = '6'; -- Only look at inventory in the misc storage&lt;br /&gt;&lt;br /&gt;IF (@ret IS NULL)&lt;br /&gt;  SET @ret = 0&lt;br /&gt;&lt;br /&gt;RETURN @ret&lt;br /&gt;END;&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;--Execute&lt;br /&gt;SELECT&lt;br /&gt;p.[ProductID]&lt;br /&gt;,p.[Name]&lt;br /&gt;, dbo.ufnGetStock(p.ProductID) as [Stock]&lt;br /&gt;FROM Production.Product p;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Result&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QovaFUn52ys/SPRqUPIelLI/AAAAAAAAAEw/mCuOwOlphjY/s1600-h/res.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_QovaFUn52ys/SPRqUPIelLI/AAAAAAAAAEw/mCuOwOlphjY/s400/res.JPG" alt="" id="BLOGGER_PHOTO_ID_5256943560940229810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;B) Table-Valued Functions: &lt;/span&gt;The only difference in table-valued functions is that they return a table as output. Therefore, they are generally used in the FROM clause of a SELECT statement and possibly joined to other tables or views.&lt;br /&gt;&lt;br /&gt;Syntax&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE FUNCTION [ schema_name. ] function_name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ = default ] }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ ,...n ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURNS @return_variable TABLE &lt;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ WITH &lt;function_option&gt; [ ,...n ] ]&lt;/function_option&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[ AS ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function_body&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END [ ; ]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Example&lt;/span&gt; from AdventureWorks :&lt;span style="font-style: italic;"&gt;&lt;br /&gt;CREATE FUNCTION [dbo].[ufnGetContactInfo] (@ContactID int)&lt;br /&gt;RETURNS @retContactInformation TABLE&lt;br /&gt;(&lt;br /&gt;-- Columns returned by the function&lt;br /&gt;[ContactID] int PRIMARY KEY NOT NULL,&lt;br /&gt;[FirstName] [nvarchar](50) NULL,&lt;br /&gt;[LastName] [nvarchar](50) NULL,&lt;br /&gt;[JobTitle] [nvarchar](50) NULL,&lt;br /&gt;[Email]    [nvarchar] (150) Null&lt;br /&gt;)&lt;br /&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;IF @ContactID IS NOT NULL&lt;br /&gt;BEGIN&lt;br /&gt;   INSERT @retContactInformation&lt;br /&gt;   SELECT&lt;br /&gt;      c.[ContactID]&lt;br /&gt;     ,c.[FirstName]&lt;br /&gt;     ,c.[LastName]&lt;br /&gt;     ,e.[Title] AS [JobTitle]&lt;br /&gt;     ,c.[EmailAddress]&lt;br /&gt;  FROM [HumanResources].[Employee] e&lt;br /&gt;  INNER JOIN [Person].[Contact] c&lt;br /&gt;  ON c.[ContactID] = e.[ContactID]&lt;br /&gt;  WHERE c.[ContactID]= @ContactID;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;RETURN;&lt;br /&gt;END;&lt;br /&gt;GO&lt;br /&gt;select * from ufnGetContactInfo(1209)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Result&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/RAHUL%7E2.KUM/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_QovaFUn52ys/SPRnoufnZyI/AAAAAAAAAEo/hW38SmKLB1A/s1600-h/result.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_QovaFUn52ys/SPRnoufnZyI/AAAAAAAAAEo/hW38SmKLB1A/s400/result.JPG" alt="" id="BLOGGER_PHOTO_ID_5256940614421276450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;C) Restrictions on UDFs&lt;/span&gt;&lt;br /&gt;Although we can execute virtually any valid batch of code with in function, but still they do have some restrictions:&lt;br /&gt;Most significant is you &lt;span style="font-weight: bold;"&gt;cannot use a function to change the state of any object&lt;/span&gt; in a database or the database itself.Therefore,you cannot insert, update, or delete data in tables, nor can you create, alter, or drop objects in the database. However, you can create one or more table variables and issue INSERT, UPDATE, and DELETE statements against the table variable&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please leave comment...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-7084747114647880093?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/7084747114647880093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/functions.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7084747114647880093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/7084747114647880093'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/functions.html' title='Functions'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QovaFUn52ys/SPRqUPIelLI/AAAAAAAAAEw/mCuOwOlphjY/s72-c/res.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-3427683709391399719</id><published>2008-10-09T16:34:00.000+05:30</published><updated>2008-10-13T13:14:39.853+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Views'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Views - the other face</title><content type='html'>&lt;span style=";font-family:arial;font-size:100%;"  &gt;To put it in a simple way : A view is a SELECT statement that has a name and is stored in Microsoft SQL Server.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Views act as virtual tables to provide several benefits.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;a) &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;font-family:arial;font-size:100%;"  &gt;Re-usability&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; : A view gives developers a standardized way to execute queries, enabling them to write certain common queries once as views and then include the views in application code so that all applications use the same version of a query.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;b) &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:arial;font-size:100%;"  &gt;Security&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; : A view provides a level of security by giving users access to just a subset of data contained in the base tables that the view is built over and can give users a more friendly, logical view of data in a database.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;c) &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:arial;font-size:100%;"  &gt;Performance&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; : a view with indexes created on it can provide dramatic performance improvements, especially for certain types of complex queries.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;We can categorize views  as :&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;a) regular views,    b) updateable views,                       c) indexed views.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:arial;font-size:100%;"  &gt;A) Syntax of view &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:100%;" &gt;creation  &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;font-size:100%;"  &gt;CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]&lt;br /&gt;[ WITH &lt;view_attribute&gt; [ ,...n ] ]&lt;br /&gt;AS select_statement [ ; ]&lt;br /&gt;[ WITH CHECK OPTION ]&lt;br /&gt;&lt;view_attribute&gt; ::=&lt;br /&gt;{&lt;br /&gt;[ ENCRYPTION ]&lt;br /&gt;[ SCHEMABINDING ]&lt;br /&gt;[ VIEW_METADATA ] }&lt;/view_attribute&gt;&lt;/view_attribute&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;ENCRYPTION : Should View be encrypted&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;SCHEMABINDING : will not allow you to drop a table, view or function reference by this view without dropping the view&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;VIEW_METADATA : returns metadata about a view to client-side data access libraries.&lt;br /&gt;&lt;br /&gt;Select statement can be of any complexity as long as it is a valid query with following exceptions&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;should not have COMPUTE or COMPUTE BY clause&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;should not have&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; INTO keyword&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;should not have&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; OPTION clause&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;should not &lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;reference a temporary table or table variable&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;should not have&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; ORDER BY clause unless it also specifies the TOP operator&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example&lt;/span&gt; of a view can be on AdventureWorks database&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE VIEW [vwEmployee]&lt;br /&gt;AS&lt;br /&gt;SELECT&lt;br /&gt;e.[EmployeeID]&lt;br /&gt;,c.[FirstName]&lt;br /&gt;,c.[MiddleName]&lt;br /&gt;,c.[LastName]&lt;br /&gt;,e.[Title] AS [JobTitle]&lt;br /&gt;,c.[Phone]&lt;br /&gt;,c.[EmailAddress]&lt;br /&gt;FROM [HumanResources].[Employee] e&lt;br /&gt;INNER JOIN [Person].[Contact] c&lt;br /&gt;ON c.[ContactID] = e.[ContactID]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;B) Modifying Data Through Views (UPDATEBLE VIEW)&lt;br /&gt;&lt;/span&gt;Although views allows you to update data with some exception but it will be best practice if we use INSTEAD triggers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Exception for data modification &lt;/span&gt;&lt;span style="font-style: italic;"&gt; through VIEWS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span&gt;All changes must&lt;/span&gt;&lt;span&gt; directly reference column, not derivations of a column&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; View definition cannot contain GROUPBY or DISTINCT clause&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; You cannot modify columns that are derived through aggregate functions (AVG,COUNT,  SUM,MIN,SUBSTRING)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; You cannot reference columns generated by using operators such as union, crossjoin, and intersect.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt; You cannot use TOP when you specify WITH CHECK OPTION&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;Example:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;UPDATE [vwEmployee ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SET [Phone] ='123-256-1685'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE [employeeID] =1&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;C) INDEXED VIEW&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;An indexed view, also called a materialized view, causes SQL Server to execute the SELECT statement in the view definition. SQL Server then builds a clustered index on the view’s results, and stores the data and index within the database. As you change data in the base tables, SQL Server propagates these changes to the indexed view. If the result of the view could change from one execution to another or could change if different query options were set, the entire set of data SQL Server calculated and stored would be invalidated. Therefore, all the operators or functions that can cause varying results are disallowed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Restrictions for index views&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;View should be Schema bound&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;The SELECT statement cannot reference other views.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt; All functions must be deterministic. For example, you cannot use getdate() because every time it is executed, it returns a different date result.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;AVG, MIN, MAX, and STDEV are not allowed.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Example to create index on above view,&lt;br /&gt;We will need to have it schema bound&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ALTER VIEW [vwEmployee]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WITH &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SCHEMABINDING&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SELECT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;e.[EmployeeID]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,c.[FirstName]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,c.[MiddleName]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,c.[LastName]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,e.[Title] AS [JobTitle]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,c.[Phone]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,c.[EmailAddress]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FROM [HumanResources].[Employee] e&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;INNER JOIN [Person].[Contact] c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ON c.[ContactID] = e.[ContactID]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now we can create index as&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE UNIQUE CLUSTERED INDEX [IX_vwEmployee_EmpID] ON [vwEmployee]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    [EmployeeID] ASC&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-3427683709391399719?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/3427683709391399719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/views-other-look.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/3427683709391399719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/3427683709391399719'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/views-other-look.html' title='Views - the other face'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8460659668410577616.post-1438721034765714905</id><published>2008-10-09T15:47:00.000+05:30</published><updated>2008-10-13T11:42:46.636+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Welcome</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Welcome to my blog which is solely devoted to SQL Server.&lt;br /&gt;&lt;br /&gt;Good Luck and Cheers&lt;br /&gt;Rahul Kumar&lt;br /&gt;MCTS - SQL Server 2005&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8460659668410577616-1438721034765714905?l=sqlserversolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sqlserversolutions.blogspot.com/feeds/1438721034765714905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/welcome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1438721034765714905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8460659668410577616/posts/default/1438721034765714905'/><link rel='alternate' type='text/html' href='http://sqlserversolutions.blogspot.com/2008/10/welcome.html' title='Welcome'/><author><name>Rahul Kumar</name><uri>http://www.blogger.com/profile/01539891813340172117</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://4.bp.blogspot.com/_QovaFUn52ys/SO3jIivmlaI/AAAAAAAAAD8/bsSEEEE58XI/S220/DSC00023.JPG'/></author><thr:total>0</thr:total></entry></feed>
