<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Jon Shaulis</title><link>https://jonshaulis.com/</link><description>Recent content in Home on Jon Shaulis</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 14 Mar 2026 00:00:00 -0800</lastBuildDate><atom:link href="https://jonshaulis.com/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://jonshaulis.com/about/</link><pubDate>Sat, 14 Mar 2026 00:00:00 -0800</pubDate><guid>https://jonshaulis.com/about/</guid><description>&lt;p&gt;I build software and data products that solve real business problems, with an emphasis on reliable delivery and maintainable systems.&lt;/p&gt;
&lt;p&gt;Over the last decade-plus, I&amp;rsquo;ve worked across consulting, government, insurance, and commercial teams, partnering with engineering and product organizations to move ideas into production. If you want more detail on my background, the full timeline is available on the &lt;a href="https://jonshaulis.com/experience/"&gt;Experience&lt;/a&gt; page.&lt;/p&gt;</description></item><item><title>Contact</title><link>https://jonshaulis.com/contact/</link><pubDate>Sat, 14 Mar 2026 00:00:00 -0800</pubDate><guid>https://jonshaulis.com/contact/</guid><description>&lt;p&gt;The best way to connect is through the social channels below.&lt;/p&gt;
&lt;p&gt;I no longer publish a site contact form due to persistent spam, so direct social messaging is the preferred path.&lt;/p&gt;</description></item><item><title>Experience</title><link>https://jonshaulis.com/experience/</link><pubDate>Sat, 14 Mar 2026 00:00:00 -0800</pubDate><guid>https://jonshaulis.com/experience/</guid><description/></item><item><title>Hurray! I passed my 70-767 and earned my MCSE!</title><link>https://jonshaulis.com/posts/hurray-i-passed-my-70-767-and-earned-my-mcse/</link><pubDate>Wed, 16 Dec 2020 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/hurray-i-passed-my-70-767-and-earned-my-mcse/</guid><description>&lt;p&gt;Passing the 70-767 Implementing a Data Warehouse exam has been a goal of mine for a while now, and I finally achieved that on 11/30/2020! The exam is going to be retired soon (January 31st, 2021), so this was cutting it close. And since the exam is going to be retired in 62 days of starting this post, I’m not going to post in my usual format for passing an exam. If you do have questions, please feel free to leave them in the comments. (Note: I do not plan on breaking the Microsoft NDA I signed in the exam, so any content in the comments will adhere to the NDA or will be removed.)&lt;/p&gt;</description></item><item><title>Hooray! I earned my Scaled Agilist (SAFe 5) badge!</title><link>https://jonshaulis.com/posts/hooray-i-earned-my-scaled-agilist-safe-5-badge/</link><pubDate>Mon, 12 Oct 2020 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/hooray-i-earned-my-scaled-agilist-safe-5-badge/</guid><description>&lt;p&gt;On 10/6/2020, I took the Scaled Agile Framework 5 (SAFe 5) (Scaled Agilist – Leading SAFe) exam and passed! I want to thank my company SAIC for sponsoring me for this exam as it can be difficult and pricey to obtain. (This varies based on experience.) While I’m sure you are here to read about the exam and tips I have on it, I think it’s also important to go into what SAFe is and why you would want this certification.&lt;/p&gt;</description></item><item><title>Studying for the 70-767 to earn the MCSE</title><link>https://jonshaulis.com/posts/studying-for-the-70-767-to-earn-the-mcse/</link><pubDate>Mon, 25 May 2020 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/studying-for-the-70-767-to-earn-the-mcse/</guid><description>&lt;p&gt;I really only planned on writing about the 70-767 in one post rather than two, but I thought this post may help other people while I continually study for my 70-767 exam. &lt;a href="https://www.microsoft.com/en-us/learning/community-blog-post.aspx?BlogId=8&amp;amp;Id=375282"&gt;Microsoft is retiring the 70-767 and many other exams on January 31 2021. &lt;/a&gt;This is significant for several reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The exams were originally set to be retired by June 30 2020&lt;/li&gt;
&lt;li&gt;You will not be able to achieve an MCSA or MCSE after the dates&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/en-us/learning/community-blog-post.aspx?BlogId=8&amp;amp;Id=375159"&gt;Microsoft is changing how they design the certifications to be role-based involving Azure technology&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I’ve included a read-only copy of my OneNote study book. I’d recommend making a copy of it in your own OneNote, that way you can take notes and use the checkbox features. The only purchased material I am using for this study is the 70-767 exam guide and the Kimball Data Warehouse Toolkit book.&lt;/p&gt;</description></item><item><title>T-SQL Tuesday #122 – Imposter Syndrome wrap up</title><link>https://jonshaulis.com/posts/t-sql-tuesday-122-imposter-syndrome-wrap-up/</link><pubDate>Mon, 20 Jan 2020 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/t-sql-tuesday-122-imposter-syndrome-wrap-up/</guid><description>&lt;p&gt;I want to thank everyone who participated in &lt;a href="https://jonshaulis.com/posts/t-sql-tuesday-122-imposter-syndrome/"&gt;this month’s #TSQL2SDAY! &lt;/a&gt;There are new folks starting their journey towards a new career every day and I believe that these stories can honestly help many individuals. Thank you, Steve Jones – (&lt;a href="https://voiceofthedba.com/"&gt;b&lt;/a&gt;|&lt;a href="https://twitter.com/way0utwest"&gt;t&lt;/a&gt;) for letting me host this month and thank you Adam Machanic for starting this blog party back in 2009.&lt;/p&gt;
&lt;p&gt;Overall, we had 27 individuals post or share their Imposter Syndrome stories and thoughts. I had a lot of great reading to do this week and weekend.&lt;/p&gt;</description></item><item><title>T-SQL Tuesday #122 – Imposter Syndrome</title><link>https://jonshaulis.com/posts/t-sql-tuesday-122-imposter-syndrome/</link><pubDate>Tue, 07 Jan 2020 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/t-sql-tuesday-122-imposter-syndrome/</guid><description>&lt;p&gt;As we enter the new year, I’m sure many of us are setting goals, resolutions, or perhaps beginning new challenges. Change can often be terrifying, but that’s how we grow. With this in mind, the topic I’d like us to write about this month is “Imposter Syndrome”.&lt;/p&gt;
&lt;p&gt;Imposter syndrome isn’t a topic I’ve seen addressed before via T-SQL Tuesday and this is an issue &lt;a href="https://www.google.com/search?q=imposter+syndrome+sql&amp;amp;oq=IMPOSTER&amp;amp;aqs=chrome.0.69i59l2j0j69i57j0j69i60l3.1826j0j4&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8"&gt;I’ve commonly seen in the IT industry&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>How to Fix SQL Database Error 8942</title><link>https://jonshaulis.com/posts/how-to-fix-sql-database-error-8942/</link><pubDate>Thu, 12 Dec 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/how-to-fix-sql-database-error-8942/</guid><description>&lt;h2 id="summary"&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;In this article, we will solve the SQL Database error 8942 in different ways and, I will tell you the best way for solving this error. The error is:&lt;/p&gt;
&lt;p&gt;“Server: Msg 8942, Level 16, State 1 Table error: Object ID O_ID, index ID I_ID, page P_ID, Test (TEST) failed. Slot S_ID, offset 0xADDRESS overlaps with the prior row.”.&lt;/p&gt;
&lt;h3 id="reasons-behind-this-error"&gt;&lt;strong&gt;Reasons behind this error:&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;It is recommended to keep the offset of the next slot equal to or greater than the previous one. If the offset slot S_ID is not greater than or equal to the previous slot, then the chances of this error are high.&lt;/li&gt;
&lt;li&gt;Hardware malfunctioning can also lead to table structure corruption.&lt;/li&gt;
&lt;li&gt;Forced closure of the SQL Server in the middle of an ongoing process is also harmful to the database.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="solutions"&gt;&lt;strong&gt;Solutions&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Restore Database from Backup File&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Future goals and content</title><link>https://jonshaulis.com/posts/future-goals-and-content/</link><pubDate>Tue, 10 Dec 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/future-goals-and-content/</guid><description>&lt;p&gt;As we approach the new year, I’d like to take a moment to state my current professional goals and what the content on my site is going to look like going forward.&lt;/p&gt;
&lt;p&gt;I like to show my constant involvement in education with my blog, but this isn’t the only way I learn or keep my brain active outside work. I still:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Watch tutorials&lt;/li&gt;
&lt;li&gt;Work on proof of concepts&lt;/li&gt;
&lt;li&gt;Read books&lt;/li&gt;
&lt;li&gt;Study for certifications&lt;/li&gt;
&lt;li&gt;Read articles on trends&lt;/li&gt;
&lt;li&gt;Network with folks at meetups&lt;/li&gt;
&lt;li&gt;Attend conferences&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What I haven’t been able to do as much however is:&lt;/p&gt;</description></item><item><title>Hurray! I earned my CDMP!</title><link>https://jonshaulis.com/posts/hurray-i-earned-my-cdmp/</link><pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/hurray-i-earned-my-cdmp/</guid><description>&lt;p&gt;On 11/10/2019, I earned my CDMP (Certified Data Management Professional) certification! This certificate comes from an organization called DAMA which &lt;a href="https://jonshaulis.com/posts/what-is-dama/"&gt;I’ve recently written about&lt;/a&gt;. Today’s post is more about the preparation and experience of taking the Data Management Fundamentals Exam. I would recommend starting by reading out what DAMA is and circle back here if you are unfamiliar with it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contents&lt;/strong&gt; &lt;a href="#"&gt;hide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="#Update_912020"&gt; 1 Update: 9/1/2020 &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="#Starting_the_test"&gt; 2 Starting the test &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="#What_I_wish_they_would_change_about_the_test"&gt; 3 What I wish they would change about the test: &lt;/a&gt;&lt;/p&gt;</description></item><item><title>T-SQL Tuesday #120 What were you thinking?</title><link>https://jonshaulis.com/posts/t-sql-tuesday-120-what-were-you-thinking/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/t-sql-tuesday-120-what-were-you-thinking/</guid><description>&lt;p&gt;&lt;a href="https://blog.waynesheffield.com/wayne/archive/2019/11/t-sql-tuesday-120-what-were-you-thinking/"&gt;Thank you Wayne for hosting this month’s T-SQL Tuesday!&lt;/a&gt; Wayne &lt;a href="https://blog.waynesheffield.com/wayne/archive/2018/11/what-were-you-thinking-hidden-relationship/"&gt;shared last year a story&lt;/a&gt; where he had to reverse engineer a complex hierarchy pattern within a table. The developers appeared to do this to obfuscate how the software operated. This left him asking, “What were you thinking?” So this month, we are discussing stories that left you asking that same question.&lt;/p&gt;
&lt;p&gt;During my introduction to a new company, we were running through the processes, duties, systems, and everything else you would expect when starting a new job. Overall, it was a basic induction into a new company.&lt;/p&gt;</description></item><item><title>Lessons from conferences</title><link>https://jonshaulis.com/posts/lessons-from-stories/</link><pubDate>Tue, 29 Oct 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/lessons-from-stories/</guid><description>&lt;p&gt;This month I’ve attended &lt;a href="https://www.sqlsaturday.com/908/eventhome.aspx"&gt;SQL Saturday in Denver&lt;/a&gt; along with the &lt;a href="https://www.sqlsaturday.com/908/Sessions/Details.aspx?sid=97979"&gt;Pre-Con event featuring Steve Jones and Kendra Little&lt;/a&gt; who discuss continuous integration and development. I’ve also attended the &lt;a href="https://www.teradata.com/Events/Universe"&gt;Teradata Universe&lt;/a&gt; conference in Denver, so it’s been a very busy month. Besides trying to catch up on email and work between sessions, I’ve been trying to summarize material into educational and actionable items for my customers.&lt;/p&gt;
&lt;p&gt;I would like to share with you three sayings and some examples around them that I heard at these conferences. I think these phrases have a lot of insight to them and I hope you can take something productive away from this.&lt;/p&gt;</description></item><item><title>T-SQL Tuesday #119 Changing my mind</title><link>https://jonshaulis.com/posts/t-sql-tuesday-119-changing-my-mind/</link><pubDate>Tue, 08 Oct 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/t-sql-tuesday-119-changing-my-mind/</guid><description>&lt;p&gt;&lt;a href="http://workingwithdevs.com/tsql2sday-119-changing-your-mind/"&gt;Thank you Alex Yates for this month’s topic! &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Something I’ve changed my mind on recently is working on contracting projects instead of performing work directly for a company. Very recently I had a (good) problem of choosing between a few different job roles and companies. The choice was not easy and two years ago I told myself I’d never do contract work again. I’m not talking about starting an S-Corp or an LLC but working for a company that contracts your work out to another company. I have also in the past changed my mind about how I update rows in critical systems and whether you can ROLLBACK a TRUNCATE statement (in SQL Server).&lt;/p&gt;</description></item><item><title>What is DAMA?</title><link>https://jonshaulis.com/posts/what-is-dama/</link><pubDate>Tue, 24 Sep 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/what-is-dama/</guid><description>&lt;p&gt;&lt;a href="https://dama.org/"&gt;DAMA is the Data Management Association International&lt;/a&gt; which is an association of data professionals. They have curated a certification program, framework, and documentation when it comes to database. There are many frameworks out there that you can use when dealing with data architecture:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DAMA&lt;/li&gt;
&lt;li&gt;DCAM&lt;/li&gt;
&lt;li&gt;CMMI&lt;/li&gt;
&lt;li&gt;IBM&lt;/li&gt;
&lt;li&gt;Stanford&lt;/li&gt;
&lt;li&gt;Gartner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’m not going to go deep into the others or their differences right now, but here’s a link from &lt;a href="https://datacrossroads.nl/2018/12/16/data-management-maturity-models-a-comparative-analysis/"&gt;datacrossroads &lt;/a&gt;that talks about them all briefly. So, what exactly is the framework? Well, it is essentially a high-level guide to help obtain or work towards Data Governance while enhancing your company’s data maturity.&lt;/p&gt;</description></item><item><title>Upcoming blog content</title><link>https://jonshaulis.com/posts/upcoming-blog-content/</link><pubDate>Fri, 13 Sep 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/upcoming-blog-content/</guid><description>&lt;p&gt;A lot of the content on my website is a mix of technical and conceptual. Over the next few months to probably the end of the year, I’m going to focus on more conceptual articles. The majority of them will cover my experience and time spent learning and working on certifications.&lt;/p&gt;
&lt;p&gt;My goal is to achieve my CDMP (Certified Data Management Professionals) Associate certification and my MCSE (Microsoft Certified Solutions Expert) in Data Management and Analytics by the end of the year. These goals are relatively intensive in coordination with my new(ish) job that I accepted in June. Due to the intensity, I’ve pushed the work back on some technical articles and presentations I’ve been working on. So in order to keep up with frequent postings, I’ll be creating those two series of articles related to obtaining certifications.&lt;/p&gt;</description></item><item><title>T-SQL Tuesday #118 My fantasy SQL features</title><link>https://jonshaulis.com/posts/t-sql-tuesday-118-my-fantasy-sql-features/</link><pubDate>Tue, 10 Sep 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/t-sql-tuesday-118-my-fantasy-sql-features/</guid><description>&lt;p&gt;&lt;a href="https://www.kevinrchant.com/2019/09/03/t-sql-tuesday-118-your-fantasy-sql-feature/"&gt;&lt;img
src="https://jonshaulis.com/images/wp-content/2019/09/TSQL2sDay150x150.jpg"
alt="T-SQL Tuesday #118" class="content-image" srcset="https://jonshaulis.com/images/wp-content/2019/09/TSQL2sDay150x150.jpg 150w" sizes="(min-width: 1180px) 760px, (min-width: 860px) 82vw, 96vw"loading="lazy"
decoding="async" width="150" height="150"&gt;&lt;/a&gt;T-SQL Tuesday #118&lt;/p&gt;
&lt;p&gt;&lt;a href="https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.kevinrchant.com%2F2019%2F09%2F03%2Ft-sql-tuesday-118-your-fantasy-sql-feature%2F&amp;amp;data=02%7C01%7C%7C523ce7f3ce4e4a892c9108d735248e30%7Ced5b36e701ee4ebc867ee03cfa0d4697%7C0%7C1%7C637036303431210059&amp;amp;sdata=9OsVc9r8GycFk15XFrB4EsI4I3X2hcJ8jItzw%2FQDcrg%3D&amp;amp;reserved=0"&gt;Thank you Kevin for hosting this month’s T-SQL Tuesday!&lt;/a&gt; It’s an interesting topic to reflect on features we wish we saw in SQL Server. I’m excited to read some of the other ideas and maybe we’ll see one or two get pushed out in the future!&lt;/p&gt;
&lt;p&gt;I have three features I’d love to see from SQL Server. Two of these mostly exist already, but they are not easy to utilize. I wish so badly that SQL Server could generate smart Entity Relation Diagrams (ERD) &lt;strong&gt;and&lt;/strong&gt; documentation. Really, I wish it could create the artifacts the way Redgate does. If I had a third feature to wish for while knowing it would be unrealistic, but I’d love if they had a feature to change the culture of a workplace.&lt;/p&gt;</description></item><item><title>Develop your career – Brand yourself!</title><link>https://jonshaulis.com/posts/develop-your-career-brand-yourself/</link><pubDate>Tue, 27 Aug 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/develop-your-career-brand-yourself/</guid><description>&lt;p&gt;This post should really be titled “Obtaining interviews – Building your portfolio”, but I honestly think the current title is better. (Both are still true!) Now, a lot of people are going to tell me that they don’t need to make themselves a brand to land a great job. I’m going to say that you’re right, but I’m also going to say that it’s easier when you do.&lt;/p&gt;
&lt;h2 id="building-the-brand"&gt;Building the “Brand”&lt;/h2&gt;
&lt;p&gt;Before we get into the portfolio which is a large piece of this, I wanted to describe what a “Brand” is. Branding to me &lt;strong&gt;can be as simple&lt;/strong&gt; as “leaving an impression on someone”. That’s it.&lt;/p&gt;</description></item><item><title>Whiteboarding in interviews</title><link>https://jonshaulis.com/posts/whiteboarding-in-interviews/</link><pubDate>Tue, 13 Aug 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/whiteboarding-in-interviews/</guid><description>&lt;p&gt;&lt;img
src="https://jonshaulis.com/images/wp-content/2019/08/20190704_085246_hu_3f3460c203a4db4b.jpg"
alt="NYC viewpoint from Ellis Island." class="content-image" srcset="https://jonshaulis.com/images/wp-content/2019/08/20190704_085246_hu_3f3460c203a4db4b.jpg 360w, https://jonshaulis.com/images/wp-content/2019/08/20190704_085246.jpg 370w" sizes="(min-width: 1180px) 760px, (min-width: 860px) 82vw, 96vw"loading="lazy"
decoding="async" width="370" height="207"&gt;NYC viewpoint from Ellis Island.&lt;/p&gt;
&lt;p&gt;A long time ago, I was asked to perform a programming function (FizzBuzz) on a whiteboard during an interview with T-SQL. I was able to get the theory behind it, but I am pretty poor at memorizing syntax. I’d rather spend my time studying concepts, theory, and technology. Indexes and cursors are two great examples. I don’t think it really matters if you don’t memorize how to write those by hand, it’s more valuable to understand how they work instead.&lt;/p&gt;</description></item><item><title>Verify access to many SQL Server instances</title><link>https://jonshaulis.com/posts/verify-access-to-many-sql-server-instances/</link><pubDate>Tue, 30 Jul 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/verify-access-to-many-sql-server-instances/</guid><description>&lt;p&gt;There may come a day where you need to verify you have access to connect to a SQL Server instance. Perhaps you need to verify this access for a hundred or maybe even a thousand servers. Doing this by hand is not great and you’re going to want to capture what you did and did not have access to. This PowerShell script will help you accomplish that.&lt;/p&gt;
&lt;p&gt;I took the majority of the script from &lt;a href="https://www.sqlshack.com/connecting-powershell-to-sql-server/"&gt;SQL Shack&lt;/a&gt; which was written by &lt;a href="https://www.sqlshack.com/author/shawn-melton/"&gt;Shawn Melton&lt;/a&gt;, so thank you for saving me a lot of the leg work Shawn! The rest of the tweaking I did was to create files / overwrite files, append a try-catch, and make the script easily executable with variables.&lt;/p&gt;</description></item><item><title>Get notified when a user with administrative privileges logs into your SQL Server</title><link>https://jonshaulis.com/posts/get-notified-when-a-user-with-administrative-privileges-logs-into-your-sql-server/</link><pubDate>Tue, 09 Jul 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/get-notified-when-a-user-with-administrative-privileges-logs-into-your-sql-server/</guid><description>&lt;p&gt;I was helping someone set up some monitoring in their database and they were asking about being notified when someone with administrative privileges logs into SQL Server. While many of you know that I try to use the right tool for the right job, some may cringe when I say triggers can help out in this scenario.&lt;/p&gt;
&lt;p&gt;Now, there are other methods here but the goal was to be notified when someone logs into your SQL Server with administrative privileges. Triggers will consistently fire when this event occurs and allows you to perform an action based on this event.&lt;/p&gt;</description></item><item><title>Permission was denied on the object ‘master_properties’, database ‘SSISDB’, schema ‘internal’.</title><link>https://jonshaulis.com/posts/permission-was-denied-on-the-object-master_properties-database-ssisdb-schema-internal/</link><pubDate>Tue, 25 Jun 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/permission-was-denied-on-the-object-master_properties-database-ssisdb-schema-internal/</guid><description>&lt;p&gt;I ran into an interesting issue where all DDL and DML statements were being denied on my SSISDB, but specifically on my Internal schema. Here’s a few example error messages I saw:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Description: The SELECT permission was denied on the object ‘master_properties’, database ‘SSISDB’, schema ‘internal’. The UPDATE permission was denied on the object ‘operations’, database ‘SSISDB’, schema ‘internal’. The EXECUTE permission was denied on the object ‘insert_operation’, database ‘SSISDB’, schema ‘internal’.&lt;/p&gt;</description></item><item><title>Alert when SQL Server jobs fail</title><link>https://jonshaulis.com/posts/alert-when-sql-server-jobs-fail/</link><pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/alert-when-sql-server-jobs-fail/</guid><description>&lt;p&gt;I would always recommend an enterprise monitoring solution for your important SQL Servers. There may be some that are less important though. You can always configure alerts at an individual job level, you can create triggers or extended events to notify you, or even use base alerts in SQL Server. If you need a quick and dirty solution to throw into place temporarily though, I like this option.&lt;/p&gt;
&lt;p&gt;Here we have a T-SQL statement that we can either create as a stored procedure or just run as T-SQL in a job step. It looks back over the last 10 minutes and looks for job failures. I would recommend scheduling this T-SQL to run every 5 minutes, you will get duplicate entries for a short period of time, but ideally, you shouldn’t get any failures anyway right? Plus once you’re notified, you can turn this off while you work on it or you can specify in the where clause to remove this job until fixed.&lt;/p&gt;</description></item><item><title>Pass multiple values to case when expression</title><link>https://jonshaulis.com/posts/pass-multiple-values-to-case-when-expression/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/pass-multiple-values-to-case-when-expression/</guid><description>&lt;p&gt;There may be a time when you want to pass multiple values to a CASE WHEN expression. Here’s an example, take this simple data set below:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Test&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;UserID&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Approval&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Test&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Reject&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Approve&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;test2&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Approve&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Reject&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Test&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img
src="https://jonshaulis.com/images/wp-content/2019/05/2019-05-04_9-26-30.png"
alt="" class="content-image" srcset="https://jonshaulis.com/images/wp-content/2019/05/2019-05-04_9-26-30.png 155w" sizes="(min-width: 1180px) 760px, (min-width: 860px) 82vw, 96vw"loading="lazy"
decoding="async" width="155" height="162"&gt;Our base data set we will use as an example.&lt;/p&gt;</description></item><item><title>T-SQL Tuesday #114 Puzzle Party</title><link>https://jonshaulis.com/posts/t-sql-tuesday-114-puzzle-party/</link><pubDate>Tue, 14 May 2019 00:00:00 +0000</pubDate><guid>https://jonshaulis.com/posts/t-sql-tuesday-114-puzzle-party/</guid><description>&lt;p&gt;&lt;a href="https://matthewmcgiffen.com/2019/05/07/t-sql-tuesday-114-puzzle-party/"&gt;This months T-SQL Tuesday comes from Matthew McGiffen&lt;/a&gt; who has given us the topic of “Puzzles”, thank you for a great topic!&lt;/p&gt;
&lt;p&gt;Puzzles can be fun or frustrating, but I like them because it can be a great way to showcase who you are and how you work. For example, I was given a puzzle from a company that was interested in me but wanted to know how I approached specific problems. They gave me a simple SQL query and three word problems to go along with it. My reply back illustrated how I approach problems, document findings, performance test, and also work to obtain business requirements.&lt;/p&gt;</description></item></channel></rss>