THE SQL Server Blog Spot on the Web

Welcome to SQLblog.com - The SQL Server blog spot on the web Sign in | |
in Search

Andy Leonard

Andy Leonard is CSO of Linchpin People and SQLPeople, an SSIS Trainer, Consultant, and developer; a Business Intelligence Markup Language (Biml) developer; SQL Server database and data warehouse developer, community mentor, engineer, and farmer. He is a co-author of SQL Server Integration Services Design Patterns and Managing Geeks - A Journey of Leading by Doing, and author of the Stairway to Integration Services.

  • A Cool SSIS Catalog Visualization

  • Social Media and Me

    Earlier this month, I decided to take a break from Twitter and Facebook. A couple of you noticed (I’m ok, Mom. Really!) so I decided to share this post.

    I continue to post updates about articles, blog posts, and presentations at LinkedIn, and I’m (obviously) still blogging. I encourage everyone interested in the goings-on at Linchpin People to follow us on Twitter, Facebook, and LinkedIn.

    :{>

  • Secure Connections Management in SSIS, Part 1

    SQL Server Integration Services (SSIS) is built to move data. SSIS ships with features to support the secure transmission of data. In this series, my goal is to promote awareness of these features and advocate for their use.

    SSIS Connection Managers

    Let’s begin by examining ways to connect to a database – any database – using SSIS. SSIS connectivity is provider-driven. To connect to a database (or almost* any resource), SSIS developers use Connection Managers.

    * Some exceptions: SSIS developers can use the Script Task and Script Component to connect to resources via the .Net Framework. Custom tasks and components can “reach” from within SSIS to outside resources. The Raw File Source and Raw File Destination access the file system from within the Data Flow Task without using a Connection Manager.

    Configure an SSIS Connection Manager

    There’s no better way to learn than by doing, so please follow along if you have SSIS installed and available. Create an SSIS solution. Note that I am using SSIS 2014 for my screenshots, but I will endeavor to point out differences in versions of SSIS (I have experience with all released versions of SSIS). Once the solution is created, right-click in the Connection Managers tab and click “New OLE DB Connection…” as shown in Figure 1:

    SSISCM_1_1
    Figure 1

    Clicking “New OLE DB Connection…” opens the Configure OLE DB Connection Manager window, shown in Figure 2:

    SSISCM_1_2
    Figure 2

    If you have not configured OLE DB connections, your Data Connections list will be empty. I have configured a handful of OLE DB connections on my demo virtual machine. They are listed in the Data Connections listbox in Figure 2.

    Click the “New…” button to configure a new OLE DB connection. Clicking the “New…” button opens the Connection Manager editor, shown in Figure 3:

    SSISCM_1_3
    Figure 3

    If you click the Provider dropdown, you can see there are several OLE DB providers available to SSIS, as shown in Figure 4:

    SSISCM_1_4
    Figure 4

    If your workstation has other OLE DB providers installed, such as providers for Oracle or DB2, those providers will also appear in this dropdown list. For the purposes of this exercise, let’s stick with the SQL Server Native Client.

    Enter the name of a SQL Server instance in the “Server name” combobox, or click the dropdown and select a name from the available SQL Server instances, as shown in Figure 5:

    SSISCM_1_5
    Figure 5

    The “Log on to the server” groupbox is located beneath the “Server name” combobox. This is a common first encounter with data security in SSIS. There are two options:

    • Use Windows Authentication
    • Use SQL Server Authentication

    There are several reasons why Windows Authentication is considered better and more secure than SQL Server Authentication. Windows Authentication uses Security ID’s (SIDs) instead of username / password combinations. Active Directory manages domain access when a user logs on. SQL Server permissions are granted based upon SIDs. There are several caveats to using Windows Authentication making Windows Authentication a good, but not perfect, solution for all use cases.

    Note: I am not a security expert. I know some security experts and their advice to me has always been, “Use Windows Authentication whenever and wherever possible.” I share their advice with you.

    In the combobox labeled “Select or enter a database name,” do exactly that (select or enter a database name) as shown in Figure 6:

    SSISCM_1_6
    Figure 6

    Click the OK button to close the Connection Manager editor and return to the Configure OLE DB Connection Manager window, as shown in Figure 7:

    SSISCM_1_7
    Figure 7

    Click the OK button to close the Configure OLE DB Connection Manager window and return to your SSIS package. Note a shiny, new Connection Manager, as shown in Figure 8:

    SSISCM_1_8
    Figure 8

    Using Windows Authentication for SSIS connection managers is your first best practice for developing secure SSIS packages.

    Learn more:
    Advanced SSIS Training with Tim Mitchell and Andy Leonard in Dallas, TX 9-11 Mar 2015
    Watch the Video
    Test your knowledge
    Linchpin People Blog: SSIS
    Stairway to Integration Services

    SSIS2014DesignPatterns200

  • What’s the Number One Attribute of Awesome Email?

    Brevity.

    :{>

    Learn more:

    Managing-Geeks-Cover-2003

  • SSIS Catalog Environments– Step 20 of the Stairway to Integration Services!

  • Consulting 101: Viewing the Field

    It’s important for a consultant to be able jump into a situation and quickly evaluate and assess the dynamics involved, in order to serve the client efficiently and effectively and economically. While a lot of people dislike military metaphors, there are a lot of good lessons to learn from military thinking. This is one area where military lessons can help, in my opinion.

    In his book, The Face of Battle, John Keegan writes about a skill:

    “…best described by the French word formation, aims if not to close his mind to unorthodox or difficult ideas, at least to stop it down to a fairly short focal length, to exclude from his field of vision everything that is irrelevant to his professional function, and to define all that he ought to see in a highly formal manner.”

    The general idea, fleshed out later in the book, is to view the current situation tactically, assessing the threat level of each component or “sub-situation” in terms of responses to potential actions of these actors. Formation is about prioritization with a bias for action. If you’ve read The Alchemist you know “beginner’s luck” is really a combination of the inevitability of opportunity combined with a bias for action.

    The ability to conduct a fast and accurate assessment of a situation is an important consulting skill.

    :{>

    Learn more:

    Managing-Geeks-Cover-2003

    Managing Geeks is available at Amazon in paperback and Kindle editions!

  • Interpreting Communication

    One important thing about which to be self-aware is how you interpret communication.

    Communication is a two-phase commit. The first part lies with the person communicating. She has an idea she wishes to communicate, and she communicates it – in writing or verbally. The second part is with the person (or people) to whom the communication is directed. He has just read her email or is listening to her speak and must now interpret what he’s read or heard.

    If all goes well, both parties agree on the message content and move forward. But if all does not go well?

    Misunderstanding

    Misunderstanding is one of the things that can go poorly in communication. Misunderstanding includes not hearing someone well enough, or misinterpreting what was said or written. This is one of the reasons businesses execute contracts: to make certain all parties understand their roles, responsibilities, and rewards. Agreeing in writing mitigates the opportunity for misunderstanding.

    Under-Communication

    When people in the know withhold information from others or partially deliver information, misinterpretation can ensue. Leaders should first consider the amount of information they desire to convey and then think about how to convey that information before delivering the message.

    Not communicating falls into the category of under-communication. One trait of effective leadership is communicating, period.

    Over-Communication

    It’s also possible to share “too much information.” In business, especially, everyone does not need to know everything. In fact, sharing too much in a volatile or otherwise developing circumstance con lead to confusion as information ages and becomes stale. Leaders should strive to communicate developing information to those who need to know and an after-the-fact summary to those who may be interested.

    Misinterpretation Ownership

    Who owns a misinterpretation? Returning to the example of she-said-he-heard, both parties own any misinterpretation. There are practices available to facilitate communication. Active listening is one technique whereby a listener speaks a paraphrase of what they heard back to the speaker. The speaker gets to hear what the listener thought they heard and can correct any misinterpretation or mis-speaking. Body language and vocal queues can be observed to make certain the message has been properly interpreted. This works well for voice conversations, but what about written communications?

    A challenging communication issue arises when one communicates in writing – via email, for example – and receives no response or a delayed response. How does a listener interpret no reply? One can assume the worst, that the listener is being dismissed or worse, completely ignored. This is often not the case, though. Thomas LaRock (blog | @SqlRockstar) offers trenchant advice on this scenario (and many similar scenarios) in his post titled What is Your McGuffin? What is Tom’s advice? “Assume good intentions.” Is, “I am being ignored” a good intention? Nope. How about, “I am being dismissed?” Not a chance.

    Is it possible leadership is failing to communicate because they are busy with stuff they consider a higher priority? Yep. Is it possible leadership is disorganized or has forgotten? Absolutely – especially if they’re leading a startup or opportunities for growth are regularly appearing.  But does that mean your idea is not important? Personally, I think that’s a stretch.

    The Key

    Regardless of how you interpret the actions – or inactions – of those with whom you communicate, the key is tolerance. If you are a leader, you should strive to communicate better and at the proper frequency – not too much or too little – and you must tolerate the interpretations of those with whom you communicate. If you are not a leader, you should also try to communicate more effectively. Leaders and non-leaders would do well to exercise Mr. LaRock’s excellent advice: Assume good intentions.

    :{>

  • Executing SSIS: Run SSIS Packages in the SSIS Catalog via Stored Procedure

    In my article titled A Custom Execution Method – Level 19 of the Stairway to Integration Services posted at SQL Server Central, I created a stored procedure to execute SSIS packages stored in the SSIS Catalog. Really, all I did was build a rudimentary wrapper for the stored procedures used by the SSIS Catalog to execute packages. To learn more about what I did, and why and how I did it, please read the article. It’s good. I promise. Would I lie?

    One benefit: the SSIS Catalog does not (easily) facilitate code re-use. If you want to execute the same package in multiple SSIS Catalog projects, the Execute Package Task is going to force you to import those packages into your existing project. What happens if you update this package later? You have to update every copy of the package… and then redeploy – and test – each project. Or, you can use an Execute SQL Task to call this stored procedure, and execute any SSIS package. In any project. In any folder.

    The Transact-SQL script that follows adds a stored procedure to the “custom” schema (please create the custom schema first) to the SSISDB database (the database used by the SSIS Catalog). It creates an intent-to-execute, configures the intent-to-execute, and then executes the SSIS package.

    Use SSISDB
    go

    print 'Custom.execute_catalog_package stored procedure'

    If Exists(Select s.name + '.' + p.name
              From   sys.procedures p
                     Join sys.schemas s
                       On s.schema_id = p.schema_id
              Where  s.name = 'custom'
                     And p.name = 'execute_catalog_package')
      begin
          print ' - Dropping custom.execute_catalog_package' 
          Drop Procedure custom.execute_catalog_package 
          print ' - Custom.execute_catalog_package dropped'
      end

    print ' - Creating custom.execute_catalog_package'
    go

    Create Procedure custom.execute_catalog_package
     
     @package_name    nvarchar(260),
      @folder_name     nvarchar(128),
      @project_name    nvarchar(128),
      @use32bitruntime bit = false,
      @reference_id    bigint = NULL,
      @logging_level   varchar(11) = 'Basic'
    As
      begin
          -- create an Intent-to-Execute
          declare @execution_id bigint

          exec [SSISDB].[catalog].[create_execution]
            @package_name=@package_name,
            @execution_id=@execution_id output,
            @folder_name=@folder_name,
            @project_name=@project_name,
            @use32bitruntime=@use32bitruntime,
            @reference_id=@reference_id

          -- Decode and configure the Logging Level
          declare @var0 smallint = Case
              When Upper(@logging_level) = 'NONE' Then 0
              When Upper(@logging_level) = 'PERFORMANCE' Then 2
              When Upper(@logging_level) = 'VERBOSE' Then 3
              Else 1 -- Basic
            End

          exec [SSISDB].[catalog].[set_execution_parameter_value]
            @execution_id,
            @object_type=50,
            @parameter_name=N'LOGGING_LEVEL',
            @parameter_value=@var0

          -- Start the execution
          exec [SSISDB].[catalog].[start_execution]
            @execution_id

          -- Return the execution_id
          Select @execution_id As execution_id
      end

    go

    print ' - Custom.execute_catalog_package created.'
    go 

    Use this handy stored procedure to execute SSIS packages via T-SQL, regardless of which SSIS Catalog folder and project contain the packages.

    Learn more:
    Advanced SSIS Training with Tim Mitchell and Andy Leonard in Dallas, TX 9-11 Mar 2015
    Watch the Video
    Get the Script
    Linchpin People Blog: SSIS
    Stairway to Integration Services

    SSIS2014DesignPatterns200

    :{>

  • Self-Awareness – Feedback

    Self-awareness is an important trait. I believe it is especially important for consultants.

    For each of us, there is some gap between reality and what we perceive. I believe one measure of humility (or pride) is this self-awareness delta. I also believe we can narrow this gap by engaging in exercises in intentional awareness. Which exercises?

    Seeking Feedback

    Asking others is a way of actively seeking feedback. I believe this requires confidence and thick skin, especially when the feedback we receive is negative.

    Listen to the Feedback

    This is especially true and simultaneously especially difficult of the negative feedback. You can choose to ignore negative feedback from mostly negative people. But consider that negative people are going to key on your (and everyone’s) faults, so don’t completely ignore their feedback.

    Consider the value of de-constructive criticism. One aspect of constructive criticism is that it’s communicated in a neutral manner, perhaps similar to coaching. News flash: not everyone is a coach. That doesn’t disqualify them from providing accurate – and perhaps useful – criticism.

    Apply Feedback

    I don’t know about you, but I don’t like hearing criticism. My initial reaction is not, “Awesome! Now I know where I can improve!” I doubt I will ever feel that way, but I think I should.

    I welcome your thoughts about self-awareness and feedback.

    :{>

  • Managing Geeks Now Available for the Kindle!

    Managing Geeks Cover 200

    Managing Geeks – A Journey of Leading by Doing is now available at Amazon in paperback and Kindle editions!

    Many people have expressed interest in obtaining an electronic copy of Managing Geeks. I’m sorry it took this long, but it is finally available. On a related note, I now know a lot more about self-publishing.

    The book is based on a 57-part blog series right here at SQLBlog.com. Started in 2009, the series is titled Managing Technical Teams. That was going to be the title of the book until our excellent editor, Karen Forster (LinkedIn), worked through the material. You should read “worked through the material” to mean “made the writing coherent and flow.” Karen is awesome. When Karen reached the post titled Human Doings, she wrote this comment:

    We might want to consider making this the introduction to the book. It captures what I think the book is about...
    In fact, something along the lines of ‘Human Doing: What You
    Are Makes You a Good Manager’ might be the germ of a new title. It needs work, but it could be a start.

    (Did I mention Karen is awesome?)

    Tim Radney (Blog | @tradney) is also awesome. Tim led the publishing effort at Linchpin Press. You could say Tim launched Linchpin Press, even – he and John Sterrett (Blog | @johnsterrett) co-authored the first book published, SQL Server 2014 Backup and Recovery. Tim’s brother, Todd Radney of Yesterday’s Photography, provided the cover art for SQL Server 2014 Backup and Recovery and Managing Geeks. Tim and Karen led us through the publishing process, and Linchpin Press was born!

    Thank you, Karen and Tim, for all your hard work. The results speak for themselves!

    :{>

  • A Custom Execution Method – Level 19 of the Stairway to Integration Services!

  • Administering SSIS: Security-related SSIS Questions

    I credit my friend and brother, Chris Yates (Blog | @YatesSQL), for inspiring me to write this post with his (excellent) post: Reports in SSIS.

    If I had a nickel for each time I’ve been asked, “What permissions are required for SSIS?” I would have a lot of nickels.

    It’s a fair question with an unfair answer, “It depends.”

    “It Depends on What?”

    Here are some considerations:

    • SSIS Execution
      • Who has permission to execute SSIS packages?
    • SSIS Administration
      • Who has permission to deploy, delete, import, and export SSIS packages?
      • Who has permissions to view SSIS Catalog reports?
    • SSIS Authentication
      • To which databases will SSIS packages need to connect?
    • SSIS Authorization
      • What functions will SSIS packages need to exercise once connected to resources?
    • SSIS Encryption
      • Is there a reason to encrypt the logic contained in the SSIS package?
    • SSIS Obfuscation
      • Does the SSIS package contain proprietary logic or intellectual property (IP)?
    • SSIS Maintenance and Revision
      • Who is authorized to update SSIS packages?
    • SSIS Testing
      • What is the process for testing SSIS packages?
      • Who performs SSIS package tests?

    These are some, but not all, considerations surrounding enterprise Data Integration Lifecycle Management (DILM) DevOps. A more detailed version of this list may be found in my post DevOps, Data Integration Lifecycle Management (DILM), and SSIS Security over on the Linchpin People Blog, which includes a link to download the full checklist in Word format.

    Learn more:
    Watch the Video
    DevOps, Data Integration Lifecycle Management (DILM), and SSIS Security
    Advanced SSIS Training with Tim Mitchell and Andy Leonard in Dallas, TX 9-11 Mar 2015
    Linchpin People Blog: SSIS
    Stairway to Integration Services

    SSIS2014DesignPatterns200

    :{>

  • Administering SSIS: Parsing SSIS Catalog Messages for Lookups

    "The SSIS Catalog is a database and an application." - Andy Leonard, circa 2015

    If there’s one thing I want you to get from this post, it’s this: The SSIS Catalog is a database and an application. While it’s a pretty cool database and application, it isn’t anything different from the databases and applications you support every day. As such, you can query and extend the database just like any other.

    One of the coolest features of the SSIS Catalog is the logging. You can select between four options:

    1. None
    2. Basic (the default)
    3. Performance
    4. Verbose

    The text of log messages are stored in the SSISDB database, in the internal.operation_messages table. The catalog.operation_messages view queries the internal_messages table.

    To parse a message string contained in the SSIS Catalog, I can use a T-SQL script similar to the one shown below. It will grab messages generated by the Lookup transformation from the catalog.operation_messages view and display some useful metrics. If I want to isolate the results to one execution of one SSIS package, I supply a value for the @operation_id parameter. If @operation_id is NULL (as shown below), all LookUp transformation messages will be parsed.

    This script does not account for NULLs,  division by zero, or partial data. It provides some handy metrics you will want to monitor as part of your enterprise Data Integration Lifecycle Management (DILM).

    Use SSISDB
    Go

    declare @LookupStringBeginsWith varchar(100) = 'The Lookup processed '
    declare @LookupStringBeginsWithSearchString varchar(100) = '%' + @LookupStringBeginsWith + '%'
    declare @ProcessingTimeString varchar(100) = 'The processing time was '
    declare @ProcessingTimeSearchString varchar(100) = '%' + @ProcessingTimeString + '%'
    declare @CacheUsedString varchar(100) = 'The cache used '
    declare @CacheUsedSearchString varchar(100) = '%' + @CacheUsedString + '%'
    declare @operation_id bigint = NULL

    Select
      operation_id
    , Substring(message,
                (PatIndex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1 ),
                 (
                  (CharIndex(' ',
                             message,
                             PatIndex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1))
                  -
                  (Patindex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1)
                 )
                ) As LookupRowsCount
    , Substring(message,
                (PatIndex(@ProcessingTimeSearchString, message) + Len(@ProcessingTimeString) + 1 ),
                 (
                  (CharIndex(' ',
                             message,
                             PatIndex(@ProcessingTimeSearchString, message) + Len(@ProcessingTimeString) + 1))
                  -
                  (PatIndex(@ProcessingTimeSearchString, message)+ Len(@ProcessingTimeString) + 1 )
                  )
                 ) As LookupProcessingTime
    , Convert(
              bigint,
              Substring(message, (Patindex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1 ),
                        (
                         (
                           Charindex(' ',
                                     message,
                                     Patindex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1)
                          )
                         -
                          (Patindex(@LookupStringBeginsWithSearchString, message)+ Len(@LookupStringBeginsWith) + 1 )
                         )
                       )
             )
              /
             Convert(Numeric(3, 3),
                     Substring(message,
                               (
                                Patindex(@ProcessingTimeSearchString, message) + Len(@ProcessingTimeString) + 1),
                               (
                                (Charindex(' ',
                                           message,
                                           Patindex(@ProcessingTimeSearchString, message) + Len(@ProcessingTimeString) + 1
                                          )
                                )
                                 -
                                (
                                 Patindex(@ProcessingTimeSearchString, message) + Len(@ProcessingTimeString) + 1
                                )
                               )
                              )
                    ) As LookupRowsPerSecond
    , Substring(message,
                (
                 Patindex(@CacheUsedSearchString, message) + Len(@CacheUsedString) + 1 ),
                 (
                  (Charindex(' ',
                             message,
                             Patindex(@CacheUsedSearchString, message) + Len(@CacheUsedString) + 1
                            )
                 )
                  -
                 (
                  Patindex(@CacheUsedSearchString, message) + Len(@CacheUsedString) + 1
                 )
                )
               ) As LookupBytesUsed
    , Convert(bigint, Substring(message,
                                (
                                 Patindex(@CacheUsedSearchString, message) + Len(@CacheUsedString) + 1 ),
                                (
                                 (
                                  Charindex(' ',
                                            message,
                                            Patindex(@CacheUsedSearchString, message) + Len(@CacheUsedString) + 1
                                           )
                                 )
                                  -
                                 (
                                  Patindex(@CacheUsedSearchString, message) + Len(@CacheUsedString) + 1
                                 )
                                )
                               )
             )
            /
             Convert(bigint,
                     Substring(message,
                               (
                                Patindex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1 ),
                                (
                                 (Charindex(' ',
                                            message,
                                            Patindex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1
                                           )
                                 )
                                -
                                 (
                                  Patindex(@LookupStringBeginsWithSearchString, message) + Len(@LookupStringBeginsWith) + 1
                                 )
                                )
                               )
                    ) As LookupBytesPerRow
    From catalog.operation_messages
    Where message_source_type = 60 -- Data Flow Task
      And message Like @LookupStringBeginsWithSearchString
      And operation_id = Coalesce(@operation_id, operation_id)

    While this is not production-ready code, you may be able to use it to glean insight into SSIS performance metrics and to learn more about SSIS Catalog internals.

    Enjoy!

    Learn more:
    Watch the Video
    Advanced SSIS Training with Tim Mitchell and Andy Leonard in Dallas, TX 9-11 Mar 2015
    Linchpin People Blog: SSIS
    Stairway to Integration Services
    Test your knowledge

    :{>

  • When Wronged…

    My lovely bride and I visited Paris last year for SQL Saturday 323. We stuck around a few days to do touristy stuff and we learned a lot about the history of France. While reading about an uprising in the late 1800’s, Christy stumbled upon the story of l'affaire Dreyfus (the Dreyfus Affair).

    In 1894 Captain Alfred Dreyfus was convicted of treason and sentenced to the Devil’s Island penal colony in French Guiana. It was later learned Dreyfus was innocent and another person was actually guilty of the crime for which Dreyfus was being punished. A trial was held against the other fellow but crucial evidence was suppressed and Dreyfus remained imprisoned for this crime he did not commit. After five years at Devil’s Island, Dreyfus received another trial and was again convicted. But he was subsequently pardoned and set free.

    The Dreyfus Affair is considered a textbook case of public opinion winning over justice and popular social bias – prejudice against Jews (Dreyfus was of Alsatian Jewish descent) – skewing principles of state.

    It took years, but Dreyfus was exonerated. In 1906, he returned to the French Army as a major. He was forced to resign in 1907, but served as a reserve officer during World War I.

    The Dreyfus Affair impacts France even today. I find many parts of this story fascinating. I was first (and most) struck by the fact that Dreyfus did not quit.  He was determined to survive Devil’s Island, which he documented in Five Years of My Life, 1894-1899. After pardon, he was not satisfied until he had been exonerated. And after that, he sought reinstatement back into the French Army.

    That’s the lesson I take from Col. Dreyfus today: When wronged, don’t quit.

    Are people wronged today? Does it happen in our field of database technology? Yep and yep. Has this happened to you? It’s happened to me. My advice: You may not be exonerated, at least not officially, but I encourage you to learn from your “affair.” You will likely learn lessons about yourself as some character traits – strengths and weaknesses – are only revealed when tested. Learn those things. And move forward in your newfound knowledge with strength.

    :{>

  • Getting Started with SSIS: Renaming Your First Package

    When you create an SSIS Project using SQL Server Data Tools – Business Intelligence (SSDT-BI), a new, empty SSIS package is added to the project. It is named “Package.dtsx.” One of the first things you want to do is rename this package, providing a more descriptive and more unique name. To rename the package, right-click the package name (Package.dtsx) in Solution Explorer and then click Rename.

    GSwS1stPkg_1

    Solution Explorer is a treeview control. Once you click Rename, the Package.dtsx node in the treeview switches into edit mode, allowing you to edit the name of the node. The name of the package – “Package” in this case – is selected, but not the extension (“dtsx”):

    GSwS1stPkg_2

    You can now type the new package name – I typed “StageTemperature”:

    GSwS1stPkg_3

    When you press the Enter key, the package is renamed:

    GSwS1stPkg_4

    It is possible to change the Name property of the SSIS package in the Properties Window. Do not change the Name property of the SSIS Package in the Properties Window.

    GSwS1stPkg_5

    Always rename the SSIS package in the Solution Explorer using the method described above.

    Congratulations! You just renamed an SSIS package!

    Learn more:
    Linchpin People Blog: SSIS
    Stairway to Integration Services
    Test your knowledge

More Posts Next page »

This Blog

Syndication

News

Source Control 2.0 from Red Gate

My Company


Blog Roll


Check out the Linchpin People Blog...
Linchpin People Blog

Contact Me

Archives

Powered by Community Server (Commercial Edition), by Telligent Systems
  Privacy Statement