IT Nota

  • Home
  • How To
  • .NET
  • WordPress
  • Contact

How to Add Custom Logging to SSIS Package

This post will demonstrate one way to add custom logging to SSIS Package. This is still considered one of the better practice that comes in handy when we need to troubleshoot SSIS packages and track progress.

There’s no better way to explain the concept other than giving a simple case example on how to add it to a real SSIS package.

For starter, the package in this example does a simple data load from LDAP table to a SQL Server table with some minimal check done with a Script Component.

Setup Global Variables for Logging

Before we do anything else, it’s recommended to setup a few global variables that we can use to keep track of the log variables.

Setup global variables for the log folder and filename with a prefix of gv for Global Variable. The use of prefix is very handy since all those global variables will be sorted nicely and will be easy to find during troubleshooting.

SSIS Global Variables setup
*One of the global variable is made up with an expression to dynamically name the log file according to today’s date.

@[Log::gv_RootPath] + "\\" +  @[Log::gv_LogDir] + "\\" + REPLACE(@[Log::gv_LogFileName], ".log", "") + "-" + SUBSTRING((DT_STR, 50, 1252) GETDATE(), 1, 10) + ".log"

Setup Log File Connection Manager

We are going to write the log to a text file, so create a new connection manager by selecting New Flat File Connection… and name it CM_FF_DST_Log.

Add new Flat File Connection Manager for SSIS Logging

It’s not too important what you want to name the file, because we want to use a dynamic file name based on the date that we’ve already setup with gv_LogFile global variable. Once, it’s setup you can do a right-click on the CM_FF_DST_Log and check on the Properties.

Expand the Expressions and click on the ellipsis in ConnectionString, an Expression Builder window will be opened.

Expand the Variables and Parameters and double-click on the Log::gv_LogFile so it will go to the Expression: box and click OK.

SSIS Connection Manager Properties Expression Builder

Now, when you double-click on the CM_FF_DST_Log connection manager, the log filename will be dynamically populated according to today’s date (see File: below). You can close the window by clicking OK or Cancel as we do not need to modify this setup further.

SSIS File Connection Manager Editor Create File for Logging

Enable SSIS Logging

We finished the connection manager for the log file, but we still need to enable SSIS Logging and associate that with the log connection manager. In order to do this, go to the top menu and click on SSIS and select Logging… as shown below.

SSIS Logging menu

You will next see a new Configure SSIS Logs window. Make sure all checkboxes under the Containers are checked. We also need to make sure that on the right pane of that window, under Details we check at least OnError, OnTaskFailed, and OnWarning.

Important: Make sure this step is done for each container listed on the left side (yes, it’s tedious, but fortunately you only need to set this up once per project).

SSIS Configure SSIS Logs Details

Go to the Providers and Logs, now we want to setup the log provider to use the flat file connection manager CM_FF_DST_Log. If you setup the connection manager correctly, CM_FF_DST_Log should be available on the Configuration drop-down list. This part also needs to be done for each container.

SSIS configure logs with Flat File Connection Managers as the provider

Once this setup is complete, we’re ready to add our log in SSIS workflow.

Write the Log

Try to put the tasks within containers for each task you want to add log to.

SSIS Package Database Load

If you double-click on the SCR Log Start and click on the Edit Script…, here’s the C# script contained in the task:

SCR Log Start

public void Main()
{
  Dts.Log("Package starting...", 99, null);

  foreach(Variable v in Dts.Variables)
  {
    Dts.Log("Name: " + v.Name, 99, null);
    Dts.Log("Value: " + v.Value.ToString(), 99, null);
  }
 
  Dts.TaskResult = (int)ScriptResults.Success;
}

Data Flow Counters

Under the Data Flow tab, you can see that from each data source, there’s a Row Count component that is attached to it. In this process, the values from the Row Count component will be passed on to the global variables we setup. In this example, they are gvCNT_LDAPRowCount and gvCNT_LDAPRowCountBlanks.

SSIS Row Count Component to Global Variable

And we include a detailed count of each count and grand total in a Script Task called SCR LDAP Row Counts. Just make sure we also include the global variables in the ReadOnlyVariables like so, then click on the Edit Script….

SSIS Assign to Global Variables with Script Task

Add the calculation logic and write to the log.

public void Main()
{
  // Get LDAP row count with sAMAccountName row counts
  int rowLDAPCount = (int)Dts.Variables["CNT::gvCNT_LDAPRowCount"].Value;
 
  // Get LDAP row count that are blank
  int rowLDAPBlanks = (int)Dts.Variables["CNT::gvCNT_LDAPRowCountBlanks"].Value;
 
  // Total rows
  int rowTotalLDAPCount = 0;
  rowTotalLDAPCount = rowLDAPCount + rowLDAPBlanks;
 
  // Log if LDAP has no records.
  if (rowTotalLDAPCount > 0)
  {
    Dts.Log(String.Format(" Total records with NT ID accounts: {0}", rowLDAPCount.ToString("###,###,###")), 99, null);
    Dts.Log(String.Format(" Total records without NT ID accounts: {0}", rowLDAPBlanks.ToString("###,###,###")), 99, null);
    Dts.Log(String.Format(" Total records from LDAP source: {0}", rowTotalLDAPCount.ToString("###,###,###")), 99, null);
  } else
  {
    Dts.Log(String.Format(" No record is found in LDAP source. {0}", rowTotalLDAPCount.ToString("###,###,###")), 99, null);
  }
  
  Dts.TaskResult = (int)ScriptResults.Success;
}

At the end of the process flow, just add another script SCR Log Finish to indicate the end of the logging session after the package run.

SCR Log Finish

public void Main()
{
  Dts.Log("~ Log Cleanup Package completed. ~", 99, null);
 
  Dts.TaskResult = (int)ScriptResults.Success;
}

So what does the log file look like? Here’s an example what’s reported. It’s probably easier to read if you look at the raw file instead.

#Fields: event,computer,operator,source,sourceid,executionid,starttime,endtime,datacode,databytes,message
PackageStart,ITNOTA-SERVER,ITNOTA\UserId,SSIS-ITNota,{GUID1},{MACHINEGUID},3/5/2019 3:40:08 AM,3/5/2019 3:40:08 AM,0,0x,Beginning of package execution.

User:ScriptTaskLogEntry,ITNOTA-SERVER,ITNOTA\UserId,SCR_LogStart,{GUID2},{MACHINEGUID},3/5/2019 3:40:08 AM,3/5/2019 3:40:08 AM,99,(null),Package starting...
User:ScriptTaskLogEntry,ITNOTA-SERVER,ITNOTA\UserId,SCR LDAP Row Counts,{GUID3},{MACHINEGUID},3/5/2019 3:41:07 AM,3/5/2019 3:41:07 AM,99,(null), Total records with NT ID accounts: 11,236
User:ScriptTaskLogEntry,ITNOTA-SERVER,ITNOTA\UserId,SCR LDAP Row Counts,{GUID3},{MACHINEGUID},3/5/2019 3:41:07 AM,3/5/2019 3:41:07 AM,99,(null), Total records without NT ID accounts: 10,009
User:ScriptTaskLogEntry,ITNOTA-SERVER,ITNOTA\UserId,SCR LDAP Row Counts,{GUID3},{MACHINEGUID},3/5/2019 3:41:07 AM,3/5/2019 3:41:07 AM,99,(null), Total records from LDAP source: 21,245
User:ScriptTaskLogEntry,ITNOTA-SERVER,ITNOTA\UserId,SCR Log Finish,{GUID4},{MACHINEGUID},3/5/2019 3:41:07 AM,3/5/2019 3:41:07 AM,99,(null),~ Log Cleanup Package completed. ~
PackageEnd,ITNOTA-SERVER,ITNOTA\UserId,SSIS-ITNota,{GUID1},{MACHINEGUID},3/5/2019 3:41:07 AM,3/5/2019 3:41:07 AM,0,0x,End of package execution.

That’s all there is to it to add a custom logging to SSIS package.

This may look like a lot of work initially, but as your SSIS package grows in complexity it will save you so much time in diagnosis and troubleshooting that you will thank yourself later.

Hope it helps.

Further Reading

SSIS Best Practice with Naming Conventions
How to Create SSIS Package in Visual Studio 2017
How to Build SSIS Package for Different SQL Server Version with Visual Studio 2017 and SSDT

March 7, 2019 Filed Under: How To Tagged With: ETL, Microsoft, SSIS

How to Create SSIS Package in Visual Studio 2017

This posting will show you how to create an SSIS package using the legacy Package Deployment Model in Visual Studio 2017.

Please be sure before you do anything that you have SQL Server Data Tools for Visual Studio 2017 installed. You can find the SSDT download link below. Install it within the instance of your Visual Studio instead of creating a new one. With SSDT, you will be able to design and deploy any integration services package with the same ease as you would develop an application in Visual Studio.

  1. From the top menu, go to File, and select New and Project.Visual Studio 2017 New Project Menu 
  2. Under New Project window, select Business Intelligence, Integration Services and Integration Services Project.Enter the name of your project (e.g., SSIS-ITNota) and select a folder where you want to save the project (e.g., C:\Users\ITNota) and click OK.SSIS Business Intelligence New Integration Services Project 
  3. As we are using a package deployment model, we need to convert the project before we’re doing anything else. Under Solution Explorer, right-click on the project and click on Convert to Package Deployment Model.SSIS Convert to Package Deployment Model setting 
  4. You will see a dialog box with the message below. Just click OK to proceed.
            This will change the project to use the package deployment model. You
            cannot perform this conversion if you are using any features unique to
            the project deployment model, such as parameters.
     
            Before conversion, all packages in this project will be checked for
            compatibility with the package deployment model. This may take
            several minutes if the project contains many packages.
     
            Click OK to proceed.
    

     

    SSIS Convert to Package Deployment Model dialog box

    If you do the conversion in the beginning of your project (recommended), you should see your project and package passed the conversion. Click OK to complete the conversion.

    SSIS Convert to Package Deployment Model Passed

    You should see that after the project’s name there’s an extra note that indicates it’s a package deployment model after the conversion is complete.

     

  5. Here are the highlights of the differences between Project Deployment Model and Package Deployment Model side-by-side.SSIS side-by-side comparison between Project and Package Deployment Model 
  6. Rename Packages.dtsx to something more meaningful for your project.SSIS rename Default.dtsx 

This should be enough to get you started with creating an SSIS package with Visual Studio 2017.

If you need to deploy your SSIS package to a different version of SQL Server, make sure you set the TargetServerVersion to the SQL Server version on your host server.

And check this post to avoid one of the most common mistake that developers make when deploying the package to production.

For a more elaborate explanation, Microsoft has designed a great Integration Services tutorials on how to create an ETL package and deploy it, which you can find at the bottom of this post.

Download

SSDT Download for Visual Studio 2017

Further Reading

SSIS Best Practice with Naming Conventions
How to Build SSIS Package for Different SQL Server Version with Visual Studio 2017 and SSDT
How to Add Custom Logging to SSIS Package
Integration Services Tutorials
Create a Project and Basic Package with SSIS
Deploy Integration Services (SSIS) Projects and Packages
Legacy Package Deployment (SSIS)
Gotcha in Executing SSIS from DTExec Command Line
How to Fix Failed to Decrypt Protected XML Node Error in SSIS

November 28, 2018 Filed Under: How To Tagged With: ETL, Microsoft, SSIS

How to Build SSIS Package for Different SQL Server Version with Visual Studio 2017 and SSDT

After deploying an SSIS package built with Visual Studio 2017, we encountered a surprise when running it via a Command Prompt:

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
 
C:\Windows\system32>"D:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe" /File "D:\PROG\bin\SSIS_Extract.dtsx" /Conf "D:\PROG\bin\SSIS_Extract.dtsConfig"
Microsoft (R) SQL Server Execute Package Utility
Version 11.0.2100.60 for 64-bit
Copyright (C) Microsoft Corporation. All rights reserved.
 
Started:  5:04:56 PM
Error: 2018-11-26 17:04:56.20
   Code: 0xC001700A
   Source: SSIS_Extract
   Description: The version number in the package is not valid. The version number cannot be greater than current version number.
End Error
Error: 2018-11-26 17:04:56.20
   Code: 0xC0016020
   Source: SSIS_Extract
   Description: Package migration from version 8 to version 6 failed with error
0xC001700A "The version number in the package is not valid. The version number cannot be greater than current version number.".
End Error
Error: 2018-11-26 17:04:56.21
   Code: 0xC0010018
   Source: SSIS_Extract
   Description: Error loading value "<DTS:Property xmlns:DTS="www.microsoft.com/
SqlServer/Dts" DTS:Name="PackageFormatVersion">8</DTS:Property>" from node "DTS:
Property".
End Error
Could not load package "D:\PROG\bin\SSIS_Extract.dtsx" because of error 0xC0010014.
Description: The package failed to load due to error 0xC0010014 "One or more error occurred. There should be more specific errors preceding this one that explains the details of the errors. This message is used as a return value from functions that encounter errors.". This occurs when CPackage::LoadFromXML fails.
Source: SSIS_Extract
Started:  5:04:56 PM
Finished: 5:04:56 PM
Elapsed:  0.203 seconds
 
C:\Windows\system32>

Pay attention to this section of error message:

Description: Package migration from version 8 to version 6 failed with error
0xC001700A "The version number in the package is not valid. The version number cannot be greater than current version number.".

What’s the real problem? It turns out that the SQL Server version in the production server is older than the version of the tool. The package was built with SSIS designer for Visual Studio 2017 (version 8), however the target database is SQL Server 2012 (version 6). So what do we need to do?

In the past, we needed to install an older version of Business Intelligence Development Studio that matches the SQL Server version we’re targeting. Because of this, many developers still have the habit of having several versions of Visual Studio installed on their machines just to handle every version of SSIS package. Fortunately with the newer of Visual Studio with SSDT, we can target the latest SQL Server (2017) down to 2012.

How do we target an older version of SQL Server?

Before we begin with the steps, make sure your Visual Studio 2017 has the SQL Server Data Tools installed. Otherwise, check the SSDT download at the bottom of this post.

How to target a specific version of SQL Server in SSIS

  1. In your project (e.g., Temp1), right-click on the project name and click Properties (or press Alt-Enter).

    SSIS Project Properties

  2. Once the Property Page is opened, click on the Configuration Properties and check the TargetServerVersion.

    SSIS Project Configuration Properties TargetServerVersion SQL Server

  3. Click on the drop-down list and select the correct SQL Server version on the machine where you want to deploy your SSIS package and click OK.

  4. Rebuild your SSIS package and re-deploy the package.

This time you will be able to run the package without any problems.

Update 2 May 2019: Since the posting of this article, apparently Microsoft removed support for SQL Server 2012 in SSDT version 15.8.1, but added it back in version 15.9.0. Check your SSDT version if you don’t see an option to target SQL Server 2012.

Make sure you pay attention to the notes marked as Important. For example, before installing SSDT for Visual Studio 2017 (15.9.1), you need to uninstall Analysis Services Projects and Reporting Services Projects from Tools, Extensions and Updates and close all Visual Studio instances.

Download

SSDT for VS 2017 Installer

Further Reading

How to Create SSIS Package in Visual Studio 2017
SQL Server Data Tools
Download and install SQL Server Data Tools (SSDT) for Visual Studio
How to Add Custom Logging to SSIS Package

November 27, 2018 Filed Under: How To Tagged With: ETL, Microsoft, SQL Server, SSIS

Configuring Asset Manager Connector in HP Connect-IT

In a Connect-It scenario, typically Asset Manager (AM) connector is used either as a source or destination of data flow. In most cases, AM connector simply works without too many changes from the default settings. But if you receive a System error 126, make sure the “dynamic library to use” is manually specified.

On the AM connector, open the connector configuration wizard by right-click on the box and select Configure connector…
HP Connect-It Configure Connector

In the connection parameters, set the Asset Manager server, login and password.
HP Connect-It Define Connection Parameters

Click on the Test button to see if we get any connections. If it’s unsuccessful with system error 126, the following message will be displayed:

-System error 126: The specified module could not be found..
-Module 'Acapi': Unable to load dynamic library (aamapi93.dll, aamapi52.dll... aamapi30.dll)'
-Connection test unsuccessful

HP Connect-It Database Connection Test Fail

Close the error message dialog box and click Next > button and populate the Dynamic library to use textbox with this path:

C:\Program Files (x86)\HPAsset Manager 9.31\en\bin\aamapi93.dll

HP Connect-It Advanced Configuration Dynamic Library

Go back to the previous screen, re-run the Test and you should see a message that says “Successful connection test.”

May 14, 2013 Filed Under: How To Tagged With: Connect-It, ETL, HP Asset Manager

Replicate Oracle Data to SQL Server

Background

HP Asset Manager SaaS data need to be transferred across customer’s internal network without too much impact on the bandwidth between the two VPNs. The agreed solution is to replicate data in Oracle to a Microsoft SQL Server database in a local network. Any new records will be inserted into the new database while existing ones will be updated.

The steps below are the quick way to setup an upsert (update and insert) SSIS package that will replicate content of a table in one database platform to another based on the last modified date on a scheduled interval. While the example is very specific, the concept can easily be adopted for other purposes.

The assumption is all Data Sources are already setup including Oracle Data Provider.

In this example, SSIS is created to transfer data from amPortfolio table, which is one of the most active tables in HP Asset Manager.

One table called QueryTime was setup just initially, this table is used to store the time of when the last query was pulled for that particular table.

CREATE TABLE QueryTime (
	Id INT IDENTITY(1,1) NOT NULL,
	TableName NVARCHAR(20) NOT NULL,
	QueryTimestamp DATETIME NOT NULL,
	
	CONSTRAINT PK_QueryTimeId PRIMARY KEY NONCLUSTERED (Id)
)

Steps

  1. Create a new DTSX package (i.e., Portfolio.dtsx). Since this will be deployed using Package Configurations, the ProtectionLevel in Properties needs to be set to DontSaveSensitive.

    SSIS Package Properties

  2. Create two variables qTimestamp and sqlPortfolio with DateTime and String data type respectively. The qTimestamp is to store the value pulled from the QueryTime table and sqlPortfolio is used to store the dynamic Oracle SQL in order to pull records since the last query timestamp.

    SSIS Setup Variables

    The initial value of sqlPortfolio in essence is a simple select statement from the amPortfolio table in the Oracle DB.

    SELECT * FROM AMPORTFOLIO

    Except with all the fields listed out, which is the better way to query.

  3. From the Toolbox, drag Execute SQL Task, Script Task, Data Flow Task, and another Execute SQL Task (1) to the Control Flow and connect the boxes by dragging the green line in the order shown below.

    SSIS Control Flow

  4. Double-click the first Execute SQL Task to open its editor. In the General section, change the Name to “Get Last QueryTime.” Select the Connection, set the ResultSet to Single row, and input the following SQLStatement to get the last query time.

    	SELECT QueryTimestamp 
        	FROM dbo.QueryTime
    	WHERE (TableName = 'AMPORTFOLIO')

    SSIS SQL Task Editor: General

  5. Still on the same active window, click on Result Set and on the right box, type in “QueryTimestamp” under the column Result Name and under Variable Name, choose the variable User::qTimestamp. Basically we take the value from column QueryTimestamp and store it in qTimestamp variable.

    SSIS SQL Task Editor: Result Set
    Click OK.

  6. Click once on the text “Script Task” and change the name to “Compose Oracle SQL” just to make it more meaningful. Double-click on the box to open the editor. In ReadOnlyVariables, if you click on the empty textbox, there should be an ellipsis (…) button. Click on the ellipsis, and select User::qTimestamp variable. Do the same for ReadWriteVariables but use variable User::sqlPortfolio this time.

    SSIS Script Task Editor

  7. Click on Edit Script… and place the code in the Main() function.

           public void Main()
           {
               string sqlCmd = string.Empty;
               string sqlPortfolio = Dts.Variables["sqlPortfolio"]
               						    .Value.ToString();
               DateTime dTimeStamp = Convert.ToDateTime(
               						   Dts.Variables["qTimestamp"]
               						      .Value);
               string timeStamp = null;
    
               if (!string.IsNullOrEmpty(dTimeStamp.ToString()))            
                 timeStamp = dTimeStamp.ToString("yyyy-MM-dd HH:mm:ss");            
               else            
                 timeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
               sqlCmd = string.Format("{0} WHERE TO_CHAR(DTLASTMODIF, 'YYYY-MM-DD HH24:MI:SS') >= '{1}' ORDER BY LPORTFOLIOITEMID",
               						   sqlPortfolio, timeStamp);
    
               // Store Oracle SQL in User:sqlPortfolio variable
               Dts.Variables["sqlPortfolio"].Value = sqlCmd;
               
               Dts.TaskResult = (int)ScriptResults.Success;
           }

    Close the window and click OK.

  8. Double-click on Data Flow Task or just click on the Data Flow tab.

  9. Open the Toolbox and from Data Flow Sources, drag OLE DB Source into the Data Flow designer surface and name it amPortfolio to reflect the table name it’s pulling data from.

  10. Open the Source Editor and select the OLE DB connection manager. Data access mode: is set to SQL command from variable and for Variable name select User::sqlPortfolio, and click OK.

  11. Next, from the Toolbox, under Data Flow Transformations drag Lookup to the surface. Open the editor and set it according to these settings:

    General

    Cache mode: Full cache
    Connection type: OLE DB connection manager
    Specify how to handle rows with no matching entries: Redirect rows to no match output

    Connection

    OLE DB connection manager: Connection to the destination database.
    Use results of an SQL query: with the following SQL statement:

    		SELECT LPORTFOLIOITEMID 
    			FROM PortfolioItem 
    		ORDER BY LPORTFOLIOITEMID

    Columns

    Drag the LPORTFOLIOITEMID from Available Input Columns on the left box to the Available Lookup Columns on the right and click OK.

    SSIS Lookup Transformation Editor

  12. Drag OLE DB Destination, name it Insert and drag OLE DB Command and name it Update.

  13. From the Lookup box, drag the green line arrow to Insert and a dialog box will pop up. Select the Lookup No Match Output from the drop down list and click OK.

    SSIS Input Output Selection

  14. Click on the Lookup box again and drag a new green line arrow to Update, and it will automatically assign the Lookup Match Output to it as shown on the picture below.

    SSIS Data Flow

  15. Double-click Insert and set Data access mode to Table or view and select the corresponding destination table from the drop-down list for Name of the table or the view. If the table does not exist yet, you can click on the button New… and SSIS will guess the table schema based on the source table.

    The auto-generated schema is generally accurate, except the table name itself, so make sure you review the SQL first before you commit by clicking OK. In this case, the table name was changed from [Insert] to [PortfolioItem].

    SSIS OLE DB Create Table Modification

    SSIS OLE DB Destination Editor

    After the correct table is selected, click OK.

  16. Double-click the Update and use the following settings:

    Connection Managers

    Select the Connection Manager from the drop-down list.

    SSIS Advanced Editor for Update

    Component Properties

    SqlCommand
    Click on the ellipsis and input an update SQL command (shortened in this example) below:

    	UPDATE [dbo].[PortfolioItem]
     	SET [BCREATEDONTHEFLY] = ?
           ,[DTLASTMODIF] = ?
           ,[ASSETTAG] = ?
    	WHERE [LPORTFOLIOITEMID] = ?

    Column Mappings

    This is the most tedious part of the setup. All the question mark in the SQL Update statement is translated into Param_# (i.e., Param_0, Param_1, Param_3, etc.) on the Destination Column. The order of the fields in the SQL statement determines the sequential number of the Param_#. So in this case, [BTCREATEDONTHEFLY] maps to Param_0 and the last field in the statement [LPORTFOLIOITEMID] is mapped to the last field in the Destination Column (i.e, Param_68). It’s crucial that you don’t miss a field or transpose the order.

    Once this part is done, click OK.

  17. Go back to the Control Flow tab and double-click on the last Execute SQL Task (Update QueryTime). This time we just need to store the new timestamp to the QueryTime table based on the latest record processed.

    SSIS Execute SQL Editor Update Query

    On the SQLStatement use the following SQL statement:

    	UPDATE dbo.QueryTime
    	SET QueryTimestamp = (SELECT MAX(DTLASTMODIF) AS Expr1
    						  FROM dbo.PortfolioItem)
    	WHERE (TableName = 'AMPORTFOLIO')

    Click OK.

Build the package and it should be ready to deploy. The final Control Flow should look like this.
SSIS Control Flow Final

Caveat

  • In order to get the package setup quickly, QueryTime table must have an initial value, at least with a table name (i.e., AMPORTFOLIO). To include all records initially, just put in 1900-01-01 and the date will be updated after the first run.

    INSERT INTO QueryTime (TableName, QuertyTimestamp)
    VALUES ('AMPORTFOLIO', '')
  • If the database has a large volume of tables, this solution might not be practical.

Further Reading

How to Create SSIS Package in Visual Studio 2017
How to Build SSIS Package for Different SQL Server Version with Visual Studio 2017 and SSDT

May 1, 2013 Filed Under: Database Tagged With: ETL, SSIS

« Previous Page
Next Page »
Buy me a coffee Support this site
Buy Me a Coffee?

Categories

  • .NET
  • Coding
  • Cybersecurity
  • Database
  • How To
  • Internet
  • Multimedia
  • Photography
  • Programming
  • Resources
  • Review
  • Tips and Tricks
  • Uncategorized
  • Use Case
  • WordPress
  • Writing

Recent Posts

  • How to View Stored Procedure Code in SQL Server
  • How to Find a String in SQL Server Stored Procedures
  • How to Remove Cached Credentials without Rebooting Windows
  • ESP Work Automation: Empowering Enterprises with Streamlined Workflows and Operational Efficiency
  • How to Search for a String in All Tables in a Database

Recent Posts

  • How to View Stored Procedure Code in SQL Server
  • How to Find a String in SQL Server Stored Procedures
  • How to Remove Cached Credentials without Rebooting Windows
  • ESP Work Automation: Empowering Enterprises with Streamlined Workflows and Operational Efficiency
  • How to Search for a String in All Tables in a Database

Tags

.NET .NET Core AdSense ASP.NET Cdonts Dll Classic ASP Code Editor ETL FSharp Genesis Framework Git Google HP Asset Manager HTML5 Hugo IIS Information Security Internet Internet Information Services iOS JAMStack Linux macOS Microsoft Microsoft SQL Server MVC PHP PowerShell Python Simple Mail Transfer Protocol Smtp Server SQL SQL Server SSIS SSMS SSRS Sublime Text Visual Studio Visual Studio Code VPN Windows Windows 8 Windows 10 Windows 2012 Windows Server

Copyright © 2011-2025 IT Nota. All rights reserved. Terms of Use | Privacy Policy | Disclosure