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.

  • 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

  • Some Thoughts on Leadership

    The purpose of leading is not to be out front. Being out front is simply where good leaders find themselves. “Front” is merely a location, it conveys no authority. And it is possible to find oneself out front and not be a leader.

    The goal of a leader should not be to serve oneself, it should be to serve others. “Which others, Andy?” I’m glad you asked. Everyone who crosses your path. This is what is meant by the terms servant leadership. It comes from an idea found in the Bible where Jesus told his disciples leaders place others ahead of themselves and serve everyone.

    Who, Not Where, You Are

    Leaders serve others. By doing so, they inspire others. You can seek leaders by searching for titles but all you will find is holders of titles who may or may not be leaders. How do you identify leaders? Search for followers. People naturally follow leaders; titles are optional.

    But Leaders Are Out Front

    Leadership is not a location, it is not a position; leadership is a role. Yes, leaders are seen as “first” by others. Part of effective leadership is correcting the misperceptions that the leader is “better.” Leaders perform a role on the team or in the organization. Expressed hierarchically, leaders are on the same level as team members performing other roles. Part of the leader’s role is to interface with outsiders and coordinate team activities and facilitate individual activities of team members. These responsibilities are often (and easily) confused with being in charge and dictating the work of the team and telling each individual what to do, but that’s not the true nature of leadership.

    Leaders either lead or they do not. If a leader chooses to not lead that doesn’t make them a non-leader, it simply means they are not exercising their gift or performing their role.

    Born or Built?

    Are leaders born to lead or trained to lead? The short answer is “yes.” Leaders are born with some of the skills and talents of a leader. Leaders learn how to apply their skills and gain experience over time. Some leaders are born with more and some learn more, but all are born with some skill and learn from there. In either case, leadership grows.

    Desire?

    Some see the desire to lead as an automatic disqualifier for leadership – especially servant leadership. I disagree. I think desire is not necessarily an indication that one should be a leader. In and of itself, desire is not enough to make a leader effective. But certainly the inverse holds: if one is born with leadership skills and abilities and has learned more about leadership, it is natural for that person to desire to lead. After all, we all desire to be good at what we do; and if one is good at leadership it is to be expected that one will want to lead.

    Learn more:

    Managing Geeks 

    :{>

  • Getting Started with SSIS: SSDT-BI

    SNAG-0023

    SQL Server Data Tools – Business Intelligence (SSDT-BI) is a rich Integrated Development Environment (IDE). It is a version of Microsoft Visual Studio, and you can tell by looking at the title bar when you open SSDT-BI. Click on the image to enlarge and you will see “Microsoft Visual Studio” right there in the title bar.

    If the Start Page does not display, you can open it by clicking View—>Start Page. There are several useful links here. Once you begin developing SSIS projects, the list of Recent Projects will populate, providing a handy way to open the last thing you were working on. There are also links to help you get started developing using the Visual Studio Shell (Integrated) IDE.

    Let’s build an SSIS project!

     

    Click the New Project link on the Start Page to open the New Project window:

    SNAG-0025

    Click to enlarge the image and you will see several project templates listed beneath the Business Intelligence virtual folder. For SSIS development, select the template named “Integration Services Project”. In the Name textbox, type a name for your project: LoadStageDatabase. Note the solution is also named LoadStageDatabase. When you enter a name for your SSIS project, SSDT-BI automatically copies the Project name to the Solution name. You can decouple the Project and Solution names by typing in the Solution name textbox. Click the Ok button to create the SSIS project and solution:

    SNAG-0026

    Package.dtsx is created along with the project and solution. The Getting Started window also opened providing links to articles to help you get started developing SSIS packages. Feel free to click these links to learn more about SSIS development.

    Click the Save button to save your SSIS project.

    You’ve just created an SSIS project!

    Learn more:
    Watch the video!
    Linchpin People Blog: SSIS
    Stairway to Integration Services
    Test your knowledge

  • Testing

    It’s 2015 and we still have no flying cars. (Dear Doc Brown, we still need roads. Love, Andy) On a similar note, we’ve suffered through another year of software breaches and empty promises to fix the issues behind them. Brian Kelley (Blog | @kbriankelley) was right, We Don’t Care About Data and IT Security.

    Part of the issue is testing. Do you test for security?

    Estimation

    I am often asked, “Andy, how long will it take to test this solution?” My response is, “About as long as it takes to develop the solution.” Project managers love me. Well, not so much. It’s not their fault, the blame lies with unrealistic expectations and the response is usually along the lines of, “Will adding people to this project shorten the development cycle?” to which I respond, “I have nine women, can I get a baby in one month?”

    So what happens? The testing cycle is compressed from weeks or months into a few days or a week. And we wonder why there are security leaks? and why the software doesn’t perform?

    Results

    Please join me on this asymptote for a little hyperbole…

    If we flew airplanes like we manage software projects the plane would take off, fly to the destination at altitude, and nose-dive into the runway. From 30,000 feet to 0 feet in a straight line; straight down. The results of such a trip match what we see in software development.

    When people talk to me about software projects like Healthcare.gov, they act as though this is a fluke. It isn’t a fluke; this is how software is developed in the mid-20-teens. Stakeholders say they want quality, but what they mean when they say “quality” is that they want to hit a deadline. Please do not misunderstand me: deadlines are important for a host of legitimate and good and right reasons, but they are no good for software security and solutions testing.

    Developers vs. Estimation

    Stakeholders (rightly) question the estimates of developers because most developers stink at estimation. One of two things must be true, though:

    1. Developers are liars or idiots or pig-heads who will not or cannot or refuse to produce useful estimates; or
    2. The work is inestimable.

    The answer is 2.

    Solutions

    This is not an easy problem to solve. “Why is that, Andy?” I’m glad you asked. The definition of stupid is doing the same thing over and over again and expecting different results. Here are some things to change if you want different (or even better) outcomes to your software development projects:

    • Realistic expectations.  If software is inestimable, how much time should be spent trying to produce an estimate? Let’s see… doing the math here… carrying the one… I get precisely 0 hours. Stakeholders know what they want and – usually – when they want it. Start there, add what developers know, and walk away from this 15-minute meeting with the expectation that work will begin and you will meet again tomorrow to see how much work has been accomplished.
    • Authority. The developers have none, the stakeholders have it all. Scrum places responsibility for development in the hands of developers and equips them with the necessary authority to make decisions about the features that are implemented in each sprint. If developers lack the authority to remove features from the sprint, you are not practicing Scrum. Period.
    • Communication. Scrum supports daily communications between developers and stakeholders. Stakeholders are not allowed to speak during the 15-minute stand-up meetings. If stakeholders are talking, you are not practicing Scrum. If stakeholders are not in attendance, you are not practicing Scrum. (Do you sense a pattern here?)
    • Time. Testing and development take time. The biggest mistake in software estimation is planning for nothing to go wrong. Plan for everything to fail (at least once) and then succeed.
    • Money. If you believe software development and testing are expensive, you should see the price tag for a data breach. Enough said.

    Conclusion

    Evidence-based management provides vital feedback. Learn to apply EBS in your organization; it’s the most effective way to improve software estimation.

  • Presenting in Richmond and Charlotte this month!

    I am honored to present at the Richmond SQL Server User Group 15 Jan 2015!

    I am honored to be presenting at the Charlotte SQL Server User Group 21 Jan 2015!

    If you will be in either area on those evenings, please stop by!

     :{>

     

  • Getting Started with SSIS: Get the Software and Tools

    People often ask me for tips on getting started with SSIS. My advice is always the same: Get a copy of SQL Server Developer Edition. At the time of this writing, the current version of SQL Server is SQL Server 2014. If you work in an organization that uses SQL Server, you may be able to obtain a copy of SQL Server 2014 Developer Edition from your organization. If not, I highly recommend purchasing your own copy.

    SQL Server 2014 Developer Edition is available at Amazon.com for about $50 USD. Developer Edition has all the features of Enterprise Edition, only the End User License Agreement is different – you cannot use Developer Edition to operate a Production instance.

    You can begin using SQL Server 2014 for free by downloading the 180-day Evaluation Edition.

    Once you have an edition of SQL Server installed, you will need SQL Server Data Tools – Business Intelligence (SSDT-BI) to develop SSIS packages. SSDT-BI is no longer included with the SQL Server installation media. The current version at the time of this writing is SSDT-BI 2013 and you can download it here.

    Once the relational engine and development tools are installed, you are ready to begin working with SSIS!

    Learn more:
    Watch the video!
    Linchpin People Blog: SSIS
    Stairway to Integration Services
    Test your knowledge

    :{>

  • It’s That Time of Year to Think About Your Career

    If you work with SQL Server (or want to work with SQL Server), this is a good time of the year to think about your career. Why? It’s the holiday season and you should have some time off… unless you have a Crappy Job.

    You can use some of this time to advance your knowledge about SQL Server, especially the new version: SQL Server 2014. How? You can download a free 180-day version here. That version will carry you through the holidays and then some. Install it, poke around some, search for online tutorials (there are some good tutorials available at the Microsoft MSDN site), and learn!

    o<:{>

  • A Biml Case Study

    Business Intelligence Markup Language (Biml) is a SQL Server Integration Services (SSIS) design patterns engine.

    A Story of Productivity

    A while back I was contacted by a client experiencing a familiar issue. The Production SQL Server instance was experiencing performance issues due to conflicts between customers and enterprise reporting needs. They contacted a friend who contacted me. When we spoke they asked, “Can you help?” “Yes,” I replied, “I can help.”

    We scheduled a three-day visit. On Day 1 I installed a Linchpin People SSIS Framework and gathered information about the Production databases. The Framework facilitates execution and logging and supports my preference of building a single SSIS package per table. I counted over 700 tables in over 30 databases. I determined an incremental load pattern would serve the customer best for their largest and most active tables. For the smaller tables, a truncate-and-load – whack ‘n’ load – pattern would suffice.

    I fired up Mist, the Biml development environment from Varigence, and started customizing our version of a staging application.

    I need to pause here and let you know that it takes me about an hour to build and test a typical truncate-and-load SSIS package, and two hours to build and test a typical incremental load SSIS package. I was looking at roughly 4.5 months of work with these tables.

    I spent Days 2 and 3 building and deploying SSIS packages using Mist. In the 16 hours that comprised these days, I completed building over 700 SSIS packages, loaded the Framework execution metadata (I used Biml to auto-generate approximately 25,000 lines of T-SQL at approximately 2,000 lines of code per second…), and performed a test load of Production data to the new enterprise reporting instance of SQL Server. When I ran the numbers, I did not do the work of 100 SSIS developers.

    Only 50.

    You can do this, too.

    How?

    Biml and Mist are the secrets to my productivity. I not only drastically cut development time and effort, I improved code quality. SSIS packages are generated from tried-and-true templates. If one executes my tests successfully, then all the SSIS packages will execute my tests successfully.

    Learn Biml NOW!

    Would you like to multiply your SSIS productivity while improving code quality? Tim Mitchell and Reeves Smith are delivering an excellent one-day workshop titled Getting Started With Biml 5 Dec 2014 in Vienna, Virginia. The cost for this event is only $129.

    Details:

    For ETL developers, Biml (Business Intelligence Markup Language) is a game changer. This is a great new tool for Microsoft business intelligence developers who want to make the most of their development efforts. In short, it’s an XML-based language that will allow you to programmatically create SSIS packages. Even better, it can be enhanced with VB.NET or C# scripting to create BimlScript, which allows you to dynamically build and modify a few, dozens, or even hundreds of packages with minimal effort. Best of all, you don’t need budget approval – if you already have Visual Studio, you can use Biml and BimlScript for free!
    In this full-day presentation, we’ll introduce you to dynamic package generation through Biml. Business intelligence consultants Tim Mitchell and Reeves Smith will walk you through the essentials of Biml – getting started, syntax, and common uses – followed by dozens of design patterns to improve your efficiency as an ETL developer.

    Among the topics that we’ll cover:

    • Overview of Biml – What is it? Where do I use it?
    • Introduction to Biml syntax
    • Biml in the Visual Studio environment
    • Introduction to BimlScript syntax
    • Dynamic package generation with BimlScript
    • Metadata management with Biml
    • Create a simple staging package project with dozens of packages in less than an hour
    • Package (re)generation
    • Source control
    • Common design patterns for Biml in the enterprise
    • Taking Biml to the next level with Mist

    By the end of this full-day presentation, you should be equipped to get started immediately using Biml. It’s a revolutionary technology, and we hope that you’ll be as excited about Biml as we are.

    Register today!

    :{>

  • Some Thoughts on Event Speaker Selection

    I write this from the perspective of experience. I’ve helped organize dozens of events over the past ten years. Feel free to take the parts of this advice that help and discard the parts that don’t. Enjoy!

    Planning an event is hard work. If you’ve never volunteered to help your local User Group or SQL Saturday, I encourage you to get involved. You will work hard and put a lot into it. But I promise you will get more out of it than you put in.

    Every organizer is free to organize their event in whatever way works for them. Different organizers have different goals. Not all goals align and not all goals are compatible. And that’s as it should be. It’s important to have a goal, though. Don’t go into organizing an event without priorities. Perhaps your priorities will include providing a forum for first-time presenters to speak. Perhaps your priorities will include facilitating well-known technologists presenting deep-dive topics. These priorities are mutually exclusive but many other priorities are not. (There’s no rule against mutually exclusive priorities…)

    Thought 1: Set some priorities.

    You may decide to host an open call for presenters. You may decide to invite presenters to deliver certain content. Either is fine. SQL Saturdays and the PASS Summit host open calls for presentations. Each year a number of first-time presenters are selected to present at SQL Saturdays and the PASS Summit. I think this is awesome! In fact, I’ve long encouraged the PASS Summit organizers to include more first-time presenters. Although I doubt I was the only person who made this recommendation, I’m very pleased that there are more first-time presenters than ever at PASS Summit events.

    Growing first-time presenters is good for the community. Will they make mistakes? Probably. I did. Allowing first-timers to get up there and take a shot is an investment in the future of the community.

    Thought 2: If you’re hosting an open call for presentations, set aside some slots for first-time presenters.

    Speaker selection is hard, especially when there are more speakers than available speaking slots. As an organizer, priorities can help here. When I organized events, they grew in popularity to the point where we had more speakers than slots. Our selection committee decided to award a single slot to as many speakers as possible, and promised those not awarded a priority at the next event. Some speakers (few, thankfully) were unwilling to present unless they received multiple sessions. Those speakers were rarely accommodated at events for which I volunteered. While I understand the desire of a speaker to maximize the value of their travel and time, the event is about more than any one speaker.

    It is impossible to please everyone. Are you bored? Do you like a good fight? Tune into Twitter the day after PASS Summit session selections are announced. You will be sure to catch disappointment and complaints (sometimes from me!). It’s simply impossible to award everyone who submits an abstract a session. It gets even more complicated when the (non-trivial) amount of money PASS Summit pre-conference sessions generate are added to the mix.

    The fact someone complains doesn’t mean you did a bad job. It means someone doesn’t like the way you did your job. And since most organizers are volunteers, you don’t have to worry about losing any (more) money. While listening to complaints about the free hours you poured into this volunteer effort stinks to high heaven, please realize this is part of the job. If you are the type of individual who doesn’t tolerate complaints well, please do not do this to yourself!

    Thought 3: Realize someone is going to complain.

    Some of the complaints will be valid. If you select only your friends or only people who fall into this category or that, you can expect legitimate complaints. If you have more submissions than slots and you select some speakers for multiple presentations while not selecting other speakers, again, expect complaints. Ethics come into play here as well. If you select yourself, be prepared to defend your selection – especially if selecting yourself means not selecting someone else, there’s money involved (like the PASS Summit pre-conferences), you have a non-trivial personal relationship with the person selected, or some combination thereof. Remember, you don’t have to be wrong to appear wrong, and all that’s required to breach ethics is the appearance of misconduct. It’s usually best to simply pick someone else.

    Again, priorities can help. Be aware of the perceptions of your choices. People are lousy at reading minds, so publicly communicating your priorities in advance will diffuse mounds of misperceptions. Privately communicating with those not selected will help as well. It sounds trivial – especially when dealing with an experienced, national- or international-level speaker – to drop them a note saying, “We didn’t select you this time but we appreciate your submission and promise to give your submission priority consideration next year.” But it helps. Failure to communicate is a devastating leadership flaw, volunteer or no.

    The best response to legitimate complaints is to admit your mistake, apologize for it, and work to correct it – immediately and / or in the future.

    Thought 4: Respond to valid complaints.

    These are a few bullets I hope will help everyone managing or considering organizing an event. Thank you, event organizers, for all you do for our community!

    :{>

More Posts Next page »

This Blog

Syndication

News

<!--Become a SQLPeople Person!

--> Source Control 2.0 from Red Gate

<!--

--> Follow me on

My Company


Other Blog

Check out my personal blog...
http://andyleonard.me

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

Contact Me

Twitter: @AndyLeonard
Email: andy.leonard@gmail.com

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