<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>LittleKendra.com</title>
	<atom:link href="http://littlekendra.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://littlekendra.com</link>
	<description>Database development and operations</description>
	<lastBuildDate>Fri, 23 Apr 2021 16:47:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.7.1</generator>
<site xmlns="com-wordpress:feed-additions:1">105976249</site>	<item>
		<title>Help Me Not Be Selected to Speak at the Dativerse Virtual Conference</title>
		<link>https://littlekendra.com/2021/04/22/help-me-not-be-selected-to-speak-at-the-dativerse-virtual-conference/</link>
					<comments>https://littlekendra.com/2021/04/22/help-me-not-be-selected-to-speak-at-the-dativerse-virtual-conference/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 22 Apr 2021 16:23:03 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73389</guid>

					<description><![CDATA[A call for speakers is open for the very first edition of the Dativerse conference, which will be held on August 13, 2021: http://dativerse.io/ Here&#8217;s an overview of the event from the Dativerse call for speakers: I&#8217;ve submitted a session, but I&#8217;ve mostly done that because I want LOTS of people to submit sessions. I...]]></description>
										<content:encoded><![CDATA[
<p>A call for speakers is  open for the very first edition of the Dativerse conference, which will be held on August 13, 2021: <a href="http://dativerse.io/" target="_blank" rel="noreferrer noopener">http://dativerse.io/</a></p>



<p>Here&#8217;s an overview of the event from the <a rel="noreferrer noopener" href="https://sessionize.com/dativerse" target="_blank">Dativerse call for speakers</a>:</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container">
<div class="wp-block-columns">
<div class="wp-block-column" style="flex-basis:25%">
<p>Dativerse is a new event in the Microsoft Data Platform space. Our session selection criterias are easy&#8230;</p>
</div>



<div class="wp-block-column" style="flex-basis:25%">
<ol><li>Your session must be related to the Microsoft Data Platform</li><li>You contribute to the diversity of the Microsoft Data Platform</li></ol>
</div>



<div class="wp-block-column" style="flex-basis:25%">
<p>We try to elevate those that are usually underrepresented at conferences due to their race, gender, sexual orientation, location or any other reason.</p>
</div>



<div class="wp-block-column" style="flex-basis:25%">
<p>We aim to create a safe environment for everyone and welcome seasoned speakers and newcomers alike. Should you require a mentor, we will make sure you will get all the help you&#8217;ll need to deliver your session!</p>
</div>
</div>
</div></div>



<p>I&#8217;ve submitted a session, but I&#8217;ve mostly done that because I want LOTS of people to submit sessions. I can now say, &#8220;I submitted a session and I think lots of others should, too.&#8221;</p>



<p>Here&#8217;s why I&#8217;d love for many others to submit: I am a white, cisgender woman who is married to a man. I&#8217;m also at a point in my career where I&#8217;ve established a strong network. While we have a long way to go to reach gender equality in tech, I also recognize that I am relatively privileged due to my race, orientation, social background, and my connections. I feel it&#8217;s important for me at this time in my life to get better at helping others rise up.</p>



<p>I&#8217;ve also found in my life that the most exciting and productive teams I&#8217;ve worked on  have had team members from a very diverse mix of backgrounds, experiences, and preferences. I strongly believe that having a more diverse, open, and welcoming community is good for everyone who is part of that community.</p>



<p>So I would absolutely love it if you helped spread the word far and wide about this event, and encourage others from a rainbow of backgrounds to apply. My hope is that there will be so many sessions submitted from people of diverse backgrounds that my session is not chosen, and I can support the event in another capacity. </p>



<p>Please share and encourage others see if <a rel="noreferrer noopener" href="https://sessionize.com/dativerse" target="_blank">Dativerse</a> is a good fit for them at this point in their career.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2021/04/22/help-me-not-be-selected-to-speak-at-the-dativerse-virtual-conference/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73389</post-id>	</item>
		<item>
		<title>Free Virtual Event: Mental Health and Awareness Day on May 7th</title>
		<link>https://littlekendra.com/2021/04/21/free-virtual-event-mental-health-and-awareness-day-on-may-7th/</link>
					<comments>https://littlekendra.com/2021/04/21/free-virtual-event-mental-health-and-awareness-day-on-may-7th/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 21 Apr 2021 11:57:09 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73380</guid>

					<description><![CDATA[I&#8217;ll be giving a 10 minute lightning talk at the upcoming Mental Health and Wellness day event on May 7, 2021, hosted by the Data Platform WIT group. My session is &#8220;Maintaining Balance while Re-Training in a new Professional Area&#8221;. It begins at 1:10 PM GMT / 9:10 AM Eastern. I am inspired to talk...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright size-large"><a ref="magnificPopup" href="https://i2.wp.com/littlekendra.com/wp-content/uploads/2021/04/fig-21-04-2021_11-55-32.jpg?ssl=1"><img loading="lazy" width="300" height="300" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2021/04/fig-21-04-2021_11-55-32.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-73382" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2021/04/fig-21-04-2021_11-55-32.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2021/04/fig-21-04-2021_11-55-32.jpg?resize=150%2C150&amp;ssl=1 150w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2021/04/fig-21-04-2021_11-55-32.jpg?resize=100%2C100&amp;ssl=1 100w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></a></figure></div>



<p>I&#8217;ll be giving a 10 minute lightning talk at the upcoming <a href="https://www.meetup.com/data-platform-wit/events/277595027">Mental Health and Wellness day event</a> on May 7, 2021, hosted by the Data Platform WIT group. </p>



<p>My session is &#8220;Maintaining Balance while Re-Training in a new Professional Area&#8221;. It begins at 1:10 PM GMT / 9:10 AM Eastern.</p>



<p>I am inspired to talk on this topic because I&#8217;ve shifted my career a few times: </p>



<ul><li>From Tech Support to Database Administrator</li><li>Then to consultant and small business owner</li><li>Then to Developer Advocate</li><li>And now I&#8217;ve moved into a Product Manager role</li></ul>



<p>These kinds of career shifts are common and healthy in the modern workplace.  Moving into a new role often requires quite a bit of new learning at a fast pace, though, and for some of us this can be quite stressful. I&#8217;ll share the top lessons that I&#8217;ve learned to set myself up for success and protect my health when taking on a new professional challenge.</p>



<p>If you can&#8217;t join me live, I believe my session will be recorded and made available on YouTube afterwards if the technical stars align. </p>



<p>There&#8217;s many more  great sessions in the lineup&#8211; more info over on the <a href="https://www.meetup.com/data-platform-wit/events/277595027">Mental Health and Wellness day event</a> page.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2021/04/21/free-virtual-event-mental-health-and-awareness-day-on-may-7th/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73380</post-id>	</item>
		<item>
		<title>Ten Ideas to Improve Online Tech Conferences</title>
		<link>https://littlekendra.com/2020/11/18/ten-ideas-to-improve-online-tech-conferences/</link>
					<comments>https://littlekendra.com/2020/11/18/ten-ideas-to-improve-online-tech-conferences/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 18 Nov 2020 14:06:30 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73348</guid>

					<description><![CDATA[Virtual conferences can be a lot more awesome. Here's some ideas how.]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright size-large is-resized"><a href="https://unsplash.com/photos/gXsJ9Ywb5as"><img loading="lazy" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/11/samantha-borges-gXsJ9Ywb5as-unsplash.jpg?resize=360%2C240&#038;ssl=1" alt="" class="wp-image-73350" width="360" height="240" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/11/samantha-borges-gXsJ9Ywb5as-unsplash.jpg?w=720&amp;ssl=1 720w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/11/samantha-borges-gXsJ9Ywb5as-unsplash.jpg?resize=300%2C200&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/11/samantha-borges-gXsJ9Ywb5as-unsplash.jpg?resize=100%2C67&amp;ssl=1 100w" sizes="(max-width: 360px) 100vw, 360px" data-recalc-dims="1" /></a></figure></div>



<p>Amid the global pandemic, online tech conferences have had a natural surge in popularity. I&#8217;ve attended quite a few of these in 2020 across several technical areas (database tech, DevOps, privacy, tech research). The conferences have been both large and small, both free and paid, and have been held across a few different regions and time zones. </p>



<p>Many things have gone well. Organizations who are used to doing in-person events have worked hard to quickly adapt to online platforms, and I&#8217;ve seen some fantastic content. This is terrific!</p>



<p>But there are a few critical things that <em>haven&#8217;t</em> adapted well in the transition to online events. I&#8217;ve seen some major problems occur consistently across <em>all </em>these tech conferences. This isn&#8217;t due to laziness or lack of trying &#8212; it&#8217;s simply that some patterns that work at physical events don&#8217;t work well at online events. </p>



<p>We are learning as we go.</p>



<p>With creativity we can massively improve the experience of online events &#8212; and that&#8217;s really worth doing! Please help brainstorm and share your own ideas about how to make online conferences more awesome.</p>



<h2>Why it matters: if you care about inclusivity, improving online conferences is VERY important</h2>



<p>My favorite thing about online conferences is that they are generally <em>far</em> more accessible and open than in-person events. </p>



<p>Travel and hotel costs for in-person events are often significant, and only those who are already in quite Senior roles typically have the benefit of these being paid by their employer. Ticket prices for in-person conferences are also generally higher, and less privileged community members similarly have a more difficult time getting these funded, often needing to pay out of their own pockets.</p>



<p>I also believe that low cost and free online events may create more open communities, as there is relatively low risk for someone new to the community to try out the event for a short time. Online spaces may feel safer for members of marginalized groups in terms of testing the waters to find out what a community is all about. This can result into bringing fresh ideas and many new people into the community, both in terms of those who are new to working in tech and in terms of those who specialize in other areas. </p>



<p>For these reasons, even if we are able to get back to in-person events quite soon, I have hopes that online tech events will continue to be a stronger presence than they were prior to the COVID-19 pandemic. </p>



<p>To do this, we need to solve some important problems about funding community and professional conferences, as well as improve the participant experience.</p>



<h2>Problem 1: Sponsors are isolated because Expo Halls don&#8217;t work online</h2>



<p>Most community and professional tech events, both free and paid, rely on sponsors to lower costs for attendees. Platforms for online events and staff to help organize and carry out the event cost real money, so this is still incredibly relevant for online events. </p>



<p>I&#8217;ve seen event after event attempt to replicate the &#8216;Vendor Expo Hall&#8217; of an in-person tech conference. And at event after event, I have seen minimal to no engagement &#8212; I&#8217;ve yet to see or hear about &#8216;Vendor Booths&#8217; working in an online format. After all, there&#8217;s no good online way to replicate the ways that  events have made the Vendor Expo Hall more fun at physical events: free toys and swag, tasty food and drinks, games and magicians and entertainment which can take place right next to personal, real-world conversations. </p>



<p>Here are some things I&#8217;ve seen which didn&#8217;t work well. If you&#8217;re going to try them, change them up a bit to avoid known pitfalls:</p>



<ul><li><strong>Vendor happy hours at the very end of the day</strong> &#8211; an in-person happy hour sponsored by a vendor with refreshments served works well sometimes at physical events &#8212; often at these, attendees prefer to relax with others rather than return to an empty hotel room or sit in traffic during a busy commute time. At virtual events, everyone has screen fatigue, there&#8217;s no refreshments, and only one person can talk at a time. Plus, attendees would probably rather be spending the evening with their families. <ul><li><strong>Idea</strong>: work more of the events suggested below into the &#8216;daytime&#8217; conference schedule itself.</li></ul></li><li><strong>Vendor lunchtime hours when you provide competing entertainment</strong> &#8211; It&#8217;s great to provide lunchtime entertainment. But if you&#8217;re not otherwise working sponsors into your event schedule, don&#8217;t ask them to compete with paid entertainment at lunch. <ul><li><strong>Idea</strong>: bring them <em>into</em> the lunch entertainment in some ways (and also work them into the event schedule in other ways). </li></ul></li><li><strong>&#8220;Visit a vendor booth&#8221; scavenger hunts &#8211; </strong>I&#8217;ve seen some conferences do simple code scavenger hunts to try to keep the sponsorship &#8220;exhibit&#8221; area in their platform from being a dead zone. I&#8217;ve yet to see or hear about this working, unfortunately. Some attendees snag the codes and leave, many ignore it altogether. <ul><li><strong>Idea</strong>: make the contests more about meaningful interactions. More on this below.</li></ul></li></ul>



<h2>Problem 2: Conference participants have a hard time making meaningful connections</h2>



<p>I&#8217;ve been part of conferences which have worked on building engagement in quite a few ways, which is great &#8212; but none have been great at helping participants create meaningful connections with speakers, each other, and sponsors. Here&#8217;s what I&#8217;ve seen tried:</p>



<ul><li><strong>&#8220;Chat roulette&#8221; style platform features</strong>: Several online conference platforms have decided that attendees want to experience the most stressful parts of online dating in a technical conference, and offer people the chance to be paired up with a random stranger for a few minutes on a video call. I haven&#8217;t seen this work well: attendees don&#8217;t seem tempted to join, and the platforms often seem to be error prone and not great at managing this. <ul><li><strong>Idea</strong>: I have some suggestions for regular small-group gatherings and interactive workshops below &#8212; and there are ways to work sponsors into this as well!</li></ul></li><li><strong>Slack/Discord chat accompanyments</strong>: Several online conferences have offered (or attendees have created) social spaces where people can chat along with the event. While I think these can be a great back-channel for some and these can fill some needs for Q&amp;A, for many these are overwhelming. They also become insanely busy very quickly if the conference drives a lot of people to them. So while they fill some needs, they don&#8217;t help most people feel like they made meaningful connections. <ul><li><strong>Idea</strong>: keep evolving this model, but don&#8217;t rely on it for meaningful engagement.</li></ul></li><li><strong>Presenter Q&amp;A during a &#8216;live replay&#8217; of a pre-recorded session</strong>: I personally really like this model as a presenter &#8212; it&#8217;s nice to know my session is safely pre-recorded and to be present to live chat with attendees in a text box. However, for many attendees it is hard to follow both a live chat window and a pre-recorded session that goes on simultaneously! While one may get a question answered, one leaves the session feeling a bit frazzled &#8212; rather the opposite of having a meaningful connection. <ul><li><strong>Idea</strong>: Continue leveraging pre-recorded sessions if that helps you ensure a more consistent experience for your attendees, but allow time in your schedule for live Q&amp;A after the session with the presenter, ideally with a webcam. They can recap chat that happened in the session, answer new questions, and reflect on how their session connects with other sessions at the conference. </li><li><strong>Another lesson learned</strong>: for your speakers, it&#8217;s critical to set expectations very early (such as in the call for sessions itself) about whether pre-recording will be needed, and what due dates and expectations you have for recording quality. </li></ul></li></ul>



<h2>Problem 3: Conference participants suffer from screen exhaustion and Painfully. Long. Days.</h2>



<p>Most conferences have kept similar time frames and flow of sessions as they&#8217;ve moved into online events. However, the attendee experience is different: there&#8217;s no physical movement between sessions. There&#8217;s no change of scenery. And it&#8217;s often even harder for participants to disconnect fully from their work: they end up checking emails frantically during breaks, in early mornings, and in evenings.</p>



<p><strong>Ideas</strong>: Mixing up &#8220;types&#8221; of sessions between more passive learning and interactive sessions will help a bit (but not do the whole job)</p>



<ul><li>Experimenting with different &#8220;tempos&#8221; for online event days is important for conference organizers. </li></ul>



<ul><li>Experiment with more partial-day events rather than only full-day sessions. Could an online platform even allow you to have an event across more than one week?</li></ul>



<p><strong>Part of this is mindset for the organizers</strong>: resist the urge to believe that the selling point of your conference is a relentless bombardment of information across multiple tracks. Focus on maximizing the value participants will take away instead, which means helping them absorb information and have some time away from the conference screen.</p>



<p>Those are the three biggest problems I&#8217;ve seen. </p>



<p>Now for the fun part: ideas on how to make this more sustainable, more rewarding for participants, and more awesome!</p>



<h2>Ten ideas to make online conferences more awesome</h2>



<p>These are numbered, but not ranked.</p>



<p><strong>1.</strong> <strong>More Birds-of-a-Feather Chats, and Work In Your Sponsors</strong> &#8211; One thing I&#8217;ve seen that worked very well was mixing regular time periods into the conference schedule where conference attendees were invited to join live small-group discussions led by a moderator. Multiple discussions on different topics were live at each time. These were held in a format that allowed attendees to share webcams and microphones. Moderators came prepared with a list of questions and topics to spark the discussion. </p>



<p>This helps attendees have time for more meaningful engagements. The difference in format between this and a more passive learning session provides a needed change of pace. And you also have the option of inviting your vendors to participate in these, particularly the topics which are related to their mission and areas of interest. (This doesn&#8217;t necessarily mean doing demos or selling products, but rather being part of the discussion.)</p>



<p><strong>2. Workshops, some Sponsored </strong>&#8211; I&#8217;m not going to lie, workshops ain&#8217;t easy to do well, whether in-person or online. But these are absolutely worth experimenting on, as when they are great they are <em>amazing</em> for your participants. Some notes:</p>



<ul><li>Since this is hard, allow plenty of planning time, start with shorter workshops with fewer tech requirements, and do pilots first to find your groove. Build on your experience across subsequent events.</li><li>A key to a good workshop is scoping and selecting the right topics. Don&#8217;t fall into the trap of thinking tech workshops need to be all about how an engineer performs a technical task while they follow along in a cloud environment: that&#8217;s super hard mode! Start with &#8220;softer&#8221; topics around professional development or making strategies to effect change in the modern work environment.</li><li>I am personally a fan of the<a rel="noreferrer noopener" href="https://ajsmart.com/ldj" target="_blank"> Lightning Decision Jam workshop format</a>, which can work well online with access to resources like <a rel="noreferrer noopener" href="https://www.mural.co/" target="_blank">Mural </a>. A great thing about this format is that it utilizes non-verbal communication effectively, and there&#8217;s a lot of folks who aren&#8217;t a fan of talking to a bunch of strangers in a video call. Find some formats you can suggest to your workshop organizers, but allow them to be creative. </li><li>For effective workshops, you need a way to limit the number of people in the workshops, which may require pre-registration to pull off. It also helps to have some volunteers available to switch workshops and balance out the groups if you have some which are low on numbers.</li></ul>



<p><strong>3. Commercial Contests </strong>&#8211; I know, especially for paid conferences, attendees may not love the idea of seeing sponsor commercials as part of the main conference track. But what if you gamified this for your sponsors, and added a contest for your attendees related to it? This could be <em>really fun</em>.</p>



<ul><li>Keep the commercials short &#8211; 90 seconds to 2 minutes</li><li>Play the commercials live and reveal them throughout the conference, have an emcee announce them and reference the contest each time</li><li>Have multiple categories people can vote on &#8212; funniest, best production quality, most thought provoking, most educational, most charming, etc.</li><li>Open the voting at a specific time in the conference once they&#8217;ve all been launched, have a YouTube channel where attendees can watch them again in case they missed any</li><li>Encourage vendors to add a URL at the end of their video or to appear at the bottom of the screen the whole time for lead generation purposes</li></ul>



<p><strong>4. Prizes for Meaningful Engagement </strong>&#8211; As I mentioned above, I&#8217;ve seen simple scavenger hunts fail miserably. Just &#8220;visiting&#8221; a vendor booth in an online world doesn&#8217;t make for engagement with the vendor. Why not change the contest up? Your conference platform needs to provide <em>some</em> way of interacting with sponsors, whether it&#8217;s by chat room, video chat, or even email options. Ideas to hype throughout your conference to encourage engagement:</p>



<ul><li><strong>&#8220;Best question&#8221; contest</strong>:  allow each sponsor to nominate up to <em>N</em> (whatever number is appropriate for your scale) people who asked the best questions for a prize draw. The winner draw can be done and announced at the end of the conference.</li><li><strong>Sponsor trivia contest</strong>: create a trivia game where all the questions are about your sponsors and how their offerings relate to your attendees and their pain points. Source the trivia facts from your sponsors ahead of time, and if you&#8217;re doing a booth leverage things in their written materials and live demos. Have good prizes! Emphasize how valuable it is for the conference for contestants to share their email addresses and pain points with sponsors (but have a way for them to specify their contact preferences clearly, as noted below). This is a great &#8220;late in your day&#8221; session option for near the close of your event. Platforms like <a rel="noreferrer noopener" href="https://kahoot.it/" target="_blank">https://kahoot.it/</a> can make the trivia fun. (Note: do some test runs and allow for latency between the game and your viewers.)</li><li><strong>Focus groups, with prizes for attending</strong>: Have time slots for 20-30 minute focus group interviews run by your sponsors. Give a small prize (gift cards, stickers sent by mail, etc.) to attendees to who participate in at least <em>N</em> number of focus groups. </li></ul>



<p><strong>5. Help Vendors Learn <em>and</em> Create Leads </strong>&#8211; Why would vendors want to sponsor community and professional events when they can run their own online events at a pretty low cost and gather all the leads they want? The answer is that vendors want to find new potential customers <em>and </em>to learn about where customers are going in the marketplace. </p>



<p>In other words, conferences can work to help vendors with both short term and longer term goals. Successful vendors understand that building their brand over time is important. They understand that learning about potential customers, their pain points, their perspectives, their goals, is key to their survival. Ideas:</p>



<ul><li><strong>Vendor surveys</strong>: Offer options for vendors to link attendees to relatively short (5 minute) surveys asking attendees about their pain points, interests, goals, etc. A contest for attendees who complete surveys is a potential encouragement for this one if you have interest from a good amount of vendors.</li><li><strong>Vendor focus groups</strong>: See the &#8220;workshop&#8221; section above for more info on this. A focus group can feel more approachable / less intrusive for an attendee, as it&#8217;s clear that the point is to help the vendor by sharing experience and that the attendee may not necessarily be ready to buy a product.</li><li><strong>Lead generation is still important</strong>. Don&#8217;t skip this! <em>Do</em> still work on building and improving the ways in which you encourage attendees to share their contact information with vendors when it&#8217;s beneficial for both parties. But add value around that wherever you can.</li><li><strong>Showcase free training resources from sponsors which employees can use after the event</strong>: Many vendors have free online resources which can be very valuable for attendees (whether or not they are a customer of that vendor). This is everything from YouTube Channels to whitepapers to online courses. Ask your vendor if they have these, and showcase them for your conference participants in multiple ways throughout the conference &#8212; be it on banner adds, downloadable lists of resources, short video clips on the main stage, etc.</li></ul>



<p><strong>6. Ideas to Overcome &#8220;Awkward Chat Room&#8221; Experiences </strong>&#8211; I know quite a few folks who <em>hate</em> awkward silences in online meetings. It makes their skin crawl. I know others who feel very shy at speaking up in an online session. Others who can&#8217;t stand turning on webcams. </p>



<p>And then there&#8217;s the problem of having 12 people in a video room, and everyone starts talking at once, then apologizing. There&#8217;s That Person who can&#8217;t help dominating the discussion. There&#8217;s so many ways that things can get awkward.</p>



<p>And also, let&#8217;s face it, video calls get <em>super boring</em> real fast these days. Ideas to make it more interesting:</p>



<ul><li><strong>Provide non-verbal ways to participate</strong>: Apps like <a href="https://www.polleverywhere.com/">Poll Everywhere</a> break up the monotony and allow people to give non-verbal feedback that is immediately visible to the group online (as long as the person hosting the polls/surveys are screen sharing). <ul><li>Other apps like <a rel="noreferrer noopener" href="https://www.mural.co/" target="_blank">Mural </a>also provide ways to do this, but have fewer controls if you are worried about spammers or rogue feedback in more open events. (Poll Everywhere has some moderation abilities on free text style questions, and you can also stick to other question types if needed.)</li></ul></li><li><strong>Use Breakout Rooms, if you can</strong>: If you&#8217;ve got a larger group, apps like <a rel="noreferrer noopener" href="https://support.zoom.us/hc/en-us/articles/206476093-Enabling-breakout-rooms" target="_blank">Zoom </a>let you split folks into smaller breakout rooms for certain periods of time. This is useful for some workshop formats and focus groups. </li><li><strong>Plan a game or activity</strong>: If you&#8217;re doing something like vendor chats or happy hours, I think a planned activity of some sort is really helpful. Relying on the guests who show up to provide the topics of conversation is often the cause of the awkwardness. </li></ul>



<p><strong>7. Pre-Recorded Sessions, Live Q&amp;A After</strong> &#8211; Many conference organizers like to have some or all the sessions at an online event available in a recording ahead of time. This helps them ensure that the show will go on, no matter what technical problems ensue. (See my note above about the importance of mentioning your recording requirements when you do your call for speakers.)</p>



<p>I understand the appeal of pre-recorded sessions at a very personal level, having had my home internet stop working completely on the first day of a three day conference recently. I was working off a series of not-great-bandwidth cellular devices until it was repaired by line crews outside my home EXACTLY as the conference ended on the last day. My sessions were 100% saved by the fact that I&#8217;d pre-recorded them.</p>



<p>But as I mention above, it&#8217;s a huge challenge for attendees to multi-task and learn at the same time. I&#8217;ve yet to see a platform where a presenter could pause a pre-recorded session to handle a question live. Instead, chat and Q&amp;A flows past while the session marches forward.</p>



<p>Part of the solution longer term involves explaining this challenge to conference platforms, and asking them for ideas to solve it. In the meantime, adjust your session timings accordingly! </p>



<ul><li>If you want to do pre-recorded sessions in 40 minute timeslots, ask presenters to do 30 minute sessions and be available for the session and a live Q&amp;A spot in the 10 minutes after the session. </li><li>Allow webcam in the live period if you can. </li><li>Encourage presenters to come prepared with a couple of things to discuss if Q&amp;A is slow, such as how their session relates to others at the conference, how attendees can learn more, the most common misunderstandings on the topic, etc.</li></ul>



<p><strong>8. Shorter Days, Longer Events</strong> &#8211; I know event organizers are used to going flat out for a few days and then wrapping everything up. That makes sense when people need to travel to attend your event. But the game is very different with online events, and it&#8217;s time to change tempos. </p>



<p>In teaching online courses over the years prior to the pandemic, I learned that shorter sessions spread across more days helped attendees learn more:</p>



<ul><li>They were able to take care of the most urgent things in their workplace in the hours that they weren&#8217;t in class</li><li>They were able to absorb things by spreading learning out over more time</li><li>They were able to literally &#8220;sleep on things&#8221; &#8212; several reported having woken up understanding something more clearly!</li></ul>



<p>This is going to be a big mindset change for organizers in terms of marketing. Conference organizers are used to advertising on being the &#8220;biggest&#8221; conference with the most concurrent sessions. But with this approach, attendees leave your event feeling burnt out and strangely lonely. Will that bring them back?</p>



<p>A key part of improving attendee experience in online conferences will be experimentation with both session formats and conference timing. Think about how to help your attendees have the best experiences with new scheduling patterns.</p>



<p><strong>9. Plan Carefully for Multi-Timezone Events</strong> &#8211; Timezones are hard, y&#8217;all. They&#8217;re hard when planning an event, and they&#8217;re hard when attending an event.</p>



<p>If you are an event organizer and are evaluating an online platform, a critical thing to evaluate is how the platform presents times to people who may be watching from different timezones. How easy is it for people to understand when sessions begin and end? <em>It needs to be super easy.</em></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/11/image.png?resize=624%2C280&#038;ssl=1" alt="" class="wp-image-73351" width="624" height="280" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/11/image.png?w=832&amp;ssl=1 832w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/11/image.png?resize=300%2C134&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/11/image.png?resize=100%2C45&amp;ssl=1 100w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/11/image.png?resize=768%2C344&amp;ssl=1 768w" sizes="(max-width: 624px) 100vw, 624px" data-recalc-dims="1" /><figcaption>Assume that the group of people who enjoy time zone math does not at all overlap with the group of people attending your event.</figcaption></figure>



<p>Depending on what technology you have to work with, you may not have a &#8220;perfect&#8221; option as an organizer. But do your best to try to provide whatever workarounds you can to make your attendees from different time zones feel at home. And express how important this is to the people who make virtual event platforms, please. This is a courtesy your guests will notice!</p>



<p><strong>10. Be Clear &#8212; But Not Paranoid or Greedy &#8212; About Vendor Sessions </strong>&#8211; This is a funny one, because it&#8217;s more of an issue in some tech circles than in others. In both DevOps and Privacy themed conferences, it&#8217;s fairly normal for vendors to give sessions which feature how their products work. The sessions are typically clearly labeled so you know what you&#8217;re going to see. It&#8217;s not a big deal.</p>



<p>This is a good model for others to embrace. Offer sponsoring vendors the chance to give sessions explaining how their solutions give value. Clearly label the sessions so that attendees know what to expect and can choose accordingly. </p>



<p>This model actually works better in an online conference format than it does in an in-person one. Your sponsors will be highly aware of how easy it is to quietly and quickly leave an online session which is dull or generally unhelpful! There is none of the awkwardness of stepping through a row of people in a physical room to keep people there. The online format means that vendors need to bring relevance and value in these sessions, which is great for both attendees and conference organizers.</p>



<h2>This is just the beginning</h2>



<p>This is only ten ideas. There are many more! What we need is creativity.</p>



<p>I&#8217;d love to see tweets, blog posts, and LinkedIn articles about what you think will make online conferences more sustainable and better experiences. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/11/18/ten-ideas-to-improve-online-tech-conferences/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73348</post-id>	</item>
		<item>
		<title>Coping with the Pandemic (T-SQL Tuesday #132)</title>
		<link>https://littlekendra.com/2020/11/10/coping-with-the-pandemic-t-sql-tuesday-132/</link>
					<comments>https://littlekendra.com/2020/11/10/coping-with-the-pandemic-t-sql-tuesday-132/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 10 Nov 2020 17:01:47 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73345</guid>

					<description><![CDATA[This post is part of the monthly TSQLTuesday blog event. This month&#8217;s topic is from Taiob Ali (b&#124;t). Taiob asks how are we coping amid the pandemic. I have two thoughts overall about how well I&#8217;m coping Thought 1: Wow this is rough Thought 2: I am incredibly lucky and privileged, and it&#8217;s still rough...]]></description>
										<content:encoded><![CDATA[
<p><em>This post is part of the monthly <a rel="noreferrer noopener" href="http://tsqltuesday.com/" target="_blank">TSQLTuesday </a>blog event. This month&#8217;s topic is from Taiob Ali (<a href="https://sqlworldwide.com/">b</a>|<a href="https://twitter.com/SqlWorldWide">t</a>). Taiob <a href="https://sqlworldwide.com/t-sql-tuesday-132-how-are-you-coping-with-pandemic/" target="_blank" rel="noreferrer noopener">asks how are we coping amid the pandemic</a>.</em></p>



<div class="wp-block-image"><figure class="alignright size-large is-resized"><a href="https://sqlworldwide.com/t-sql-tuesday-132-how-are-you-coping-with-pandemic/"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2017/09/tsql2sday-logo.jpg?resize=225%2C225&#038;ssl=1" alt="" class="wp-image-5896" width="225" height="225" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2017/09/tsql2sday-logo.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2017/09/tsql2sday-logo.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 225px) 100vw, 225px" data-recalc-dims="1" /></a></figure></div>



<h2>I have two thoughts overall about how well I&#8217;m coping</h2>



<p>Thought 1: Wow this is rough</p>



<p>Thought 2: I am incredibly lucky and privileged, and it&#8217;s <em>still</em> rough</p>



<h2>My pandemic story started with an intercontinental move</h2>



<p>At the beginning of March 2020, I moved with my husband and two dogs from Portland, Oregon to Cambridge, England. The virus was in the news at that point, but we had no idea how it would spread and how the world would change.</p>



<p>After nearly ten years of working at home, my intention in moving was that I&#8217;d begin to work from the Cambridge office for my employer, Redgate. I&#8217;d also periodically travel to visit customers in the UK and Europe.</p>



<p>Things didn&#8217;t work out exactly as we&#8217;d planned, of course: I worked in the Redgate office for exactly two weeks before the UK went into the first lockdown. I&#8217;ve been working from home ever since &#8212; at first from a small rental house (which we&#8217;d thought we wouldn&#8217;t spend all that much time in awake, haha) and now from a more comfortable home which we were very lucky to find and move to after the first lockdown let up.</p>



<h2>Looking back, I was lonely as hell for the first few months</h2>



<p>I was very happy to have my job and my husband and dogs with me, but I felt very homesick, stressed, and incredibly lonely throughout spring and summer.</p>



<p>But almost <em>everyone </em>was lonely. When I talked to friends at home and mentioned I was homesick, some mentioned that they also felt homesick&#8211; and they hadn&#8217;t gone anywhere. Everywhere, we were out of place, and worried about safety and health.</p>



<p>To soothe my stress and worry, I relied on habits that don&#8217;t scale well: eating sweets, making cocktails, not moving much, and not setting many goals for myself. I was grateful to have a job and that my family was OK, even if they were far away. But I didn&#8217;t want to work on myself.</p>



<h2>6+ months into the COVID 19 pandemic, I&#8217;ve made some changes</h2>



<p>Over time, I began feeling more and more sluggish, down, and anxious. I realized that I could work on good habits and help myself feel better, even while the pandemic continued. </p>



<p>In early September I began working on eating better. &#8220;Eating better&#8221; looks radically different for different folks &#8212; for <em>me</em>, from experience the key to eating better is to largely eliminate processed sugar from my diet. If I avoid processed sugar most of the time, I begin enjoying vegetables more and generally make better decisions about what to eat, when to eat, and how much to eat.</p>



<p>I also largely stopped drinking alcohol.</p>



<p>I know. This post is a drag. WHAT IS A PANDEMIC WITHOUT ALCOHOL?</p>



<p>Well, for me, it&#8217;s a pandemic where I make better daily decisions about my health. I haven&#8217;t stopped drinking entirely &#8212;  I think it&#8217;s OK for me to occasionally have a glass of wine when there&#8217;s cause for celebration. But &#8220;occasionally&#8221; is once every two weeks or less often. I try to avoid alcohol altogether if I&#8217;m feeling stressed or sad. </p>



<div class="wp-block-image is-style-default"><figure class="alignright size-large"><img loading="lazy" width="319" height="319" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/11/my-workout-coach-freyja.jpeg?resize=319%2C319&#038;ssl=1" alt="" class="wp-image-73346" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/11/my-workout-coach-freyja.jpeg?w=319&amp;ssl=1 319w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/11/my-workout-coach-freyja.jpeg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/11/my-workout-coach-freyja.jpeg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/11/my-workout-coach-freyja.jpeg?resize=100%2C100&amp;ssl=1 100w" sizes="(max-width: 319px) 100vw, 319px" data-recalc-dims="1" /><figcaption>With my cycling coach, Freyja</figcaption></figure></div>



<p>Two weeks ago, I got an indoor cycle for the house and have started up daily spin workouts. I&#8217;m also challenging myself to do a bit of beginner yoga and to hold a plank pose once a day for however long I can manage. </p>



<h2>What&#8217;s made the biggest difference?</h2>



<p>Taking on the habit of exercise as a positive coping mechanism has been a massive help. I&#8217;m finding that physical exertion is helping me to be less anxious even in stressful times. I also quite like that I can set goals around my fitness, track them, and work to improve.</p>



<p>And I also must say that my job with Redgate and my wonderful coworkers have made a huge difference. Not only is having the security of a regular paycheck a massive blessing, but working with understanding, open, and caring people is something I&#8217;m truly grateful for. My colleagues have helped me get through this weird, strange time.</p>



<h2>Do I have any tips?</h2>



<p>My main tip is that it&#8217;s never too late to start working on a good habit. </p>



<p>I didn&#8217;t work on building good habits during the first part of this pandemic. But I eventually came to a time when I was ready and able to begin doing that. I don&#8217;t win anything by feeling bad about the first part &#8212; there&#8217;s no point in that. I may as well celebrate what I&#8217;ve been able to do, and work on motivating myself to keep going. </p>



<h2>Could I have done this with less privilege?</h2>



<p>This is a hard one, y&#8217;all. Not everyone is lucky enough to have a job, much less one with supportive colleagues. Not everyone has a family who are healthy and able. Not everyone has the time to obtain and cook fresh foods for dinner. Not everyone can afford an indoor cycle. Not everyone has a safe place to take walks outside. Not everyone has their health.</p>



<p>It&#8217;s an incredibly tough time. And if all you can do is get by each day, I certainly don&#8217;t want to imply that you are doing it wrong. You&#8217;re not. We each find our own way through this life the best that we can.</p>



<p>Also, I&#8217;ve <a rel="noreferrer noopener" href="https://littlekendra.com/2017/11/08/dear-sql-dba-i-thought-i-was-an-introvert-turns-out-i-was-anxious-as/" target="_blank">shared a bit about anxiety before</a>, and to be clear I don&#8217;t think that simply &#8220;good habits&#8221; are a cure-all for anxiety and depression in general. Right now these are what is helpful to me, but I&#8217;ve been hugely helped by medical professionals before when that was what I needed. </p>



<p>If you&#8217;re suffering significantly from anxiety and depression, I encourage you to please reach out for help and be open to seeking help from a doctor. Please know that you do not need to suffer alone.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/11/10/coping-with-the-pandemic-t-sql-tuesday-132/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73345</post-id>	</item>
		<item>
		<title>Down Tools Week 2020 (10 minute video/podcast episode)</title>
		<link>https://littlekendra.com/2020/08/06/down-tools-week-2020-10-minute-video-podcast-episode/</link>
					<comments>https://littlekendra.com/2020/08/06/down-tools-week-2020-10-minute-video-podcast-episode/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 06 Aug 2020 06:49:13 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73315</guid>

					<description><![CDATA[In this episode of Dear SQL DBA, I talk about how Redgate runs "Down Tools Week," what I'm working on as part of the project, and how this has inspired me to approach creative work in the future. ]]></description>
										<content:encoded><![CDATA[
<p>It&#8217;s Down Tools Week at <a rel="noreferrer noopener" href="http://redgate.com/blog" target="_blank">Redgate</a>! </p>



<p>In this episode, I share what &#8220;Down Tools Week&#8221; is, what I&#8217;m working on this week, and why I think it&#8217;s a terrific experience for fostering creativity, innovation, and teamwork. In closing I share some thoughts on variations of this kind of project which you might use in your own organization, whether you are a developer, DBA, or have another role.</p>



<p><em>Prefer to listen on the go? Get this episode on </em><a href="https://podcasts.apple.com/ca/podcast/dear-sql-dba/id1117507864?mt=2"><em>iTunes</em></a><em>, <a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world">pla</a></em><a rel="noreferrer noopener" href="https://dearsqldba.libsyn.com/everything-i-never-wanted-to-know-about-collation" target="_blank"><em>y the audio file</em></a><em>, or find Dear SQL DBA in your favorite podcast app.</em></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Dear SQL DBA - Down Tools Week 2020" width="640" height="360" src="https://www.youtube.com/embed/39Jk03cN90k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/08/06/down-tools-week-2020-10-minute-video-podcast-episode/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73315</post-id>	</item>
		<item>
		<title>Things That Shouldn&#8217;t Be Normal in Database Development (28 minute video/podcast episode)</title>
		<link>https://littlekendra.com/2020/07/30/things-that-shouldnt-be-normal-in-database-development-28-minute-video-podcast-episode/</link>
					<comments>https://littlekendra.com/2020/07/30/things-that-shouldnt-be-normal-in-database-development-28-minute-video-podcast-episode/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 30 Jul 2020 12:46:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73307</guid>

					<description><![CDATA[Many people use entrenched processes for database development that have been in place so long that it&#8217;s hard to imagine doing it any other way. In this episode, I share three things that should NOT be normal for database development&#8211; but which are incredibly common. This episode is inspired by the book, &#8220;The Unicorn Project&#8221;,...]]></description>
										<content:encoded><![CDATA[
<p>Many people use entrenched processes for database development that have been in place so long that it&#8217;s hard to imagine doing it any other way. In this episode, I share three things that should NOT be normal for database development&#8211; but which are incredibly common. This episode is inspired by the book, &#8220;The Unicorn Project&#8221;, by Gene Kim.</p>



<p><em>Prefer to listen on the go? Get this episode on </em><a href="https://podcasts.apple.com/ca/podcast/dear-sql-dba/id1117507864?mt=2"><em>iTunes</em></a><em>, <a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world">pla</a></em><a rel="noreferrer noopener" href="https://dearsqldba.libsyn.com/everything-i-never-wanted-to-know-about-collation" target="_blank"><em>y the audio file</em></a><em>, or find Dear SQL DBA in your favorite podcast app.</em></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="3 Things that Shouldn&#039;t be Normal in Database Development" width="640" height="360" src="https://www.youtube.com/embed/GDvt8iqCE1U?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/07/30/things-that-shouldnt-be-normal-in-database-development-28-minute-video-podcast-episode/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73307</post-id>	</item>
		<item>
		<title>Everything I Never Wanted to Know About Collation (14 minute video/podcast episode)</title>
		<link>https://littlekendra.com/2020/07/16/everything-i-never-wanted-to-know-about-collation-14-minute-video-podcast-episode/</link>
					<comments>https://littlekendra.com/2020/07/16/everything-i-never-wanted-to-know-about-collation-14-minute-video-podcast-episode/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 16 Jul 2020 15:10:00 +0000</pubDate>
				<category><![CDATA[Dear SQL DBA]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73300</guid>

					<description><![CDATA[I'm not an expert on collation in SQL Server, but there are a few important facts which I've had to learn the hard way. 

In this episode I share the basics, along with helpful resources to learn more. ]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m not an expert on collation in SQL Server, but there are a few important facts which I&#8217;ve had to learn the hard way. In this episode I share the basics, along with helpful resources to learn more. </p>



<p><strong>One small localization correction</strong>: the default collation on a SQL Server install will be &#8220;the oldest available version that&#8217;s associated with each specific locale.&#8221; So if your Windows installation has a different localization than mine &#8212; I always use English (USA) &#8212; then you&#8217;ll see a different default collation than the one I discuss in the episode. The main point is still the same: it won&#8217;t be the recommended collation for *new* development.</p>



<p><strong>Resources</strong>:</p>



<ul><li>Questions About SQL Server Collations You Were Too Shy to Ask, by Robert Sheldon &#8211; <a href="https://www.red-gate.com/simple-talk/sql/sql-development/questions-sql-server-collations-shy-ask">https://www.red-gate.com/simple-talk/sql/sql-development/questions-sql-server-collations-shy-ask</a> </li><li>Collation and Unicode Support &#8211; <a href="https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support">https://docs.microsoft.com/en-us/sql/relational-databases/collations/collation-and-unicode-support</a></li></ul>



<p><em>Prefer to listen on the go? Get this episode on&nbsp;</em><a href="https://podcasts.apple.com/ca/podcast/dear-sql-dba/id1117507864?mt=2"><em>iTunes</em></a><em>,&nbsp;<a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world">pla</a></em><a href="https://dearsqldba.libsyn.com/everything-i-never-wanted-to-know-about-collation" target="_blank" rel="noreferrer noopener"><em>y&nbsp;the audio file</em></a><em>, or find Dear SQL DBA in your favorite podcast app.</em></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Dear SQL DBA: Everything I Never Wanted to Know About Collation" width="640" height="360" src="https://www.youtube.com/embed/hoWG5Pd8pcE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/07/16/everything-i-never-wanted-to-know-about-collation-14-minute-video-podcast-episode/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73300</post-id>	</item>
		<item>
		<title>How to Spell and Capitalize tempdb for SQL Server</title>
		<link>https://littlekendra.com/2020/07/15/how-to-spell-and-capitalize-tempdb-for-sql-server/</link>
					<comments>https://littlekendra.com/2020/07/15/how-to-spell-and-capitalize-tempdb-for-sql-server/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 15 Jul 2020 13:13:58 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73295</guid>

					<description><![CDATA[No matter what I write in this post, some of y'all are going to tell me I'm wrong. That's inevitable, because I'm writing about tempdb: a database so complex and mysterious that even the spelling and capitalization of the name is a topic of disagreement.]]></description>
										<content:encoded><![CDATA[
<p>No matter what I write in this post, some of y&#8217;all are going to tell me I&#8217;m wrong. That&#8217;s inevitable, because I&#8217;m writing about tempdb: a database so complex and mysterious in SQL Server, that even the spelling and capitalization of the database name is a topic of great disagreement.</p>



<h2>Note: nearly everyone has been inconsistent about this</h2>



<p>You might think, &#8220;This is easy, just check Microsoft&#8217;s documentation to find the answer.&#8221;</p>



<p>That&#8217;s a great idea, except you&#8217;ll find multiple variations of &#8220;tempdb&#8221; on Microsoft.com:</p>



<ul><li>This docs page uses <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/sql/relational-databases/databases/tempdb-database" target="_blank">TempDB</a></li><li>This  docs page uses <a href="https://docs.microsoft.com/en-us/sql/analytics-platform-system/tempdb-database?view=aps-pdw-2016-au7">tempdb</a>  (lowercase even when first word in the title)</li><li>This support page uses <a rel="noreferrer noopener" href="https://support.microsoft.com/en-gb/help/307487/how-to-shrink-the-tempdb-database-in-sql-server" target="_blank">tempdb</a> (But &#8220;Tempdb&#8221; when title case is needed) &#8212; most Microsoft support pages seem to follow this pattern</li><li>Bob Dorr, one of my favorite Microsofties who writes on SQL Server, likes to use <a rel="noreferrer noopener" href="https://bobsql.com/sql-server-bdc-hints-and-tips-tempdb-disk-usage/" target="_blank">TEMPDB </a>(all caps)</li><li>Pam Lahoud, another of my favorite Microsoft experts on SQL Server, uses tempdb (lowercase) but TEMPDB (all caps) in <a rel="noreferrer noopener" href="https://techcommunity.microsoft.com/t5/sql-server/tempdb-files-and-trace-flags-and-updates-oh-my/ba-p/385937" target="_blank">her title of this post</a></li></ul>



<p>So the good news is, if you&#8217;re writing for casual usage, there are a <em>lot</em> of different alternate spellings out there, and that&#8217;s OK. Most people do NOT use a space and make &#8220;Temp DB&#8221; two words, but you&#8217;ll see variations of that around the internet as well.</p>



<p>However, it can be nice to have a sense of the &#8220;most accepted&#8221; current spelling and capitalization of a term. This is especially useful if you&#8217;re building a tool with a GUI and you want it to look as &#8220;standard&#8221; as possible, or if you&#8217;re writing for a company website.</p>



<p>Here&#8217;s my take on what&#8217;s won the contentious &#8220;tempdb&#8221; spelling and capitalization wars.</p>



<h2>My recommendation is: tempdb, all lower case, but title cased as Tempdb when required</h2>



<p>A few years back, I believe I saw <a rel="noreferrer noopener" href="https://twitter.com/paulrandal" target="_blank">Paul Randal</a> point out on Twitter that tempdb is a real database, and the database is spelled tempdb. This simple argument has persuaded quite a few of us who write in the SQL Server world that there&#8217;s no use for any spaces in there, and that the &#8220;db&#8221; bit shouldn&#8217;t be capitalized. (Time has passed and I can&#8217;t find the tweet, so hopefully I&#8217;m attributing this correctly.)</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="172" height="110" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/07/image.png?resize=172%2C110&#038;ssl=1" alt="A screenshot of the tempdb database appearing in SQL Server Management Studio's object explorer. &quot;tempdb&quot; is all lower case and one word." class="wp-image-73297" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/07/image.png?w=172&amp;ssl=1 172w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/07/image.png?resize=100%2C64&amp;ssl=1 100w" sizes="(max-width: 172px) 100vw, 172px" data-recalc-dims="1" /></figure>



<p>You will find some variation in capitalization of tempdb on the SQL Skills blog, but Paul tends<a rel="noreferrer noopener" href="https://www.sqlskills.com/blogs/paul/comprehensive-tempdb-blog-post-series/" target="_blank"> to use lowercase &#8220;tempdb&#8221;</a> even at the beginning of a bullet point.</p>



<p>My colleague <a rel="noreferrer noopener" href="https://twitter.com/auntkathi" target="_blank">Kathi Kellenberger</a> is the editor of Simple Talk. On posts she edits, she uses lower case tempdb, but there are exceptions as in when tempdb is the first word in <a rel="noreferrer noopener" href="https://www.red-gate.com/simple-talk/sql/performance/tempdb-heres-a-problem-you-didnt-know-you-have/" target="_blank">an article title</a>. (This is a good article to look at as a style guide, in my opinion.)</p>



<p>I have also noticed that other frequent writers in the Microsoft Data Platform space have standardized on &#8220;tempdb&#8221; somewhat, so if you choose this you are in good company:</p>



<ul><li><a rel="noreferrer noopener" href="https://twitter.com/SQL_Kiwi" target="_blank">Paul White</a>, who has written more deep technical content on tempdb than anyone else I know, <a rel="noreferrer noopener" href="https://www.sql.kiwi/2012/08/temporary-tables-in-stored-procedures.html" target="_blank">uses tempdb</a></li><li><a rel="noreferrer noopener" href="https://twitter.com/erikdarlingdata" target="_blank">Erik Darling</a> uses &#8220;<a rel="noreferrer noopener" href="https://www.erikdarlingdata.com/2019/04/sql-server-2019-in-memory-tempdb/" target="_blank">tempdb</a>&#8221; in this new post on SQL Server 2019&#8217;s in-memory features for tempdb</li><li><a rel="noreferrer noopener" href="https://twitter.com/AMtwo" target="_blank">Andy Mallon</a> uses &#8220;tempdb&#8221; as he reminds you to <a rel="noreferrer noopener" href="https://am2.co/2020/04/stop-trying-to-shrink-tempdb/" target="_blank">stop shrinking your tempdb</a></li><li>As mentioned above, <a href="https://www.google.com/search?q=site%3Asupport.microsoft.com+tempdb&amp;oq=site%3Asupport.microsoft.com+tempdb" target="_blank" rel="noreferrer noopener">recent Microsoft support pages have largely standardized on this style</a></li></ul>



<p>I try to be consistent using &#8220;tempdb&#8221; on this site, and I mostly succeed at this lately. I tend to be massively inconsistent about title casing <em>in general</em>, but I do my best. (Truth: I didn&#8217;t even capitalize the title of this post like I usually do, I had to go back and edit it after publishing, haha.)</p>



<h2>Thanks to Piers for the suggestion on this post</h2>



<p>My colleague<a rel="noreferrer noopener" href="https://medium.com/ingeniouslysimple/meet-the-team-piers-williams-software-engineer-8217d829d4b4" target="_blank"> Piers is on the SQL Monitor team at Redgate</a>. The team was chatting about how tempdb is so complicated that it&#8217;s not even obvious how to spell or capitalize it, and he said, &#8220;you know, maybe someone should write a blog post.&#8221; <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>And there&#8217;s always room for one more post about tempdb, right?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/07/15/how-to-spell-and-capitalize-tempdb-for-sql-server/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73295</post-id>	</item>
		<item>
		<title>The Manager&#8217;s Guide to Git Training for DBAs (Video / Podcast)</title>
		<link>https://littlekendra.com/2020/07/09/the-managers-guide-to-git-training-for-dbas-video-podcast/</link>
					<comments>https://littlekendra.com/2020/07/09/the-managers-guide-to-git-training-for-dbas-video-podcast/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 09 Jul 2020 07:35:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=73286</guid>

					<description><![CDATA[Learning Git can be daunting for DBAs. In this 20 minute episode, I discuss why learning a VCS is necessary for DBAs, then give three tips on scoping your project, choosing the right tools, and making sure the project is successful.]]></description>
										<content:encoded><![CDATA[
<p>Dear  SQL DBA is back!</p>



<p>Learning Git can be daunting for DBAs. In this 20 minute episode, I discuss why learning a VCS is necessary for DBAs, then give three tips on scoping your project, choosing the right tools, and making sure the project is successful.</p>



<p>Resources:</p>



<ul><li>The cheat sheet I mention in the episode is at <a href="https://littlekendra.com/2019/11/27/my-git-cli-cheat-sheet/">https://littlekendra.com/2019/11/27/my-git-cli-cheat-sheet/</a></li><li>A written version of this content is over at <a href="https://www.red-gate.com/blog/the-managers-guide-to-git-training-for-database-administrators">https://www.red-gate.com/blog/the-managers-guide-to-git-training-for-database-administrators</a> </li><li><a href="https://littlekendra.com/dearsqldba/">Here&#8217;s the full episode list of Dear SQL DBA</a></li></ul>



<p><em>Prefer to listen on the go? Get this episode on&nbsp;</em><a href="https://podcasts.apple.com/ca/podcast/dear-sql-dba/id1117507864?mt=2"><em>iTunes</em></a><em>,&nbsp;<a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world">p</a></em><em><a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world">l</a></em><em><a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world">a</a></em><a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world"><em>y</em></a><a href="https://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world"><em> the audio file</em></a><em>, or find Dear SQL DBA in your favorite podcast app.</em></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="The Manager&#039;s Guide to Git Training for DBAs" width="640" height="360" src="https://www.youtube.com/embed/Y7OcSNNztpI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/07/09/the-managers-guide-to-git-training-for-dbas-video-podcast/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73286</post-id>	</item>
		<item>
		<title>Thoughts As Pride Month 2020 Comes to a Close</title>
		<link>https://littlekendra.com/2020/06/30/thoughts-as-pride-month-2020-comes-to-a-close/</link>
					<comments>https://littlekendra.com/2020/06/30/thoughts-as-pride-month-2020-comes-to-a-close/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 30 Jun 2020 17:21:48 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=72901</guid>

					<description><![CDATA[I&#8217;ve begun working on developing a couple of small habits this month, thanks largely to Andy Mallon&#8216;s helpful advocacy. Becoming more consistent in sharing my pronouns My pronouns are &#8220;she/her.&#8221; I only became aware of why it&#8217;s helpful to share your pronouns in the last year. Before that, I hadn&#8217;t given much thought to it....]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve begun working on developing a couple of small habits this month, thanks largely to <a href="https://twitter.com/amtwo" target="_blank" rel="noreferrer noopener">Andy Mallon</a>&#8216;s helpful advocacy.</p>



<h2>Becoming more consistent in sharing my pronouns</h2>



<p>My pronouns are &#8220;she/her.&#8221;</p>



<p>I only became aware of why it&#8217;s helpful to share your pronouns in the last year. Before that, I hadn&#8217;t given much thought to it. Andy gives a great explanation of why this is helpful if this is something you are comfortable sharing &#8212; here is one quote:</p>



<blockquote class="wp-block-quote"><p>For some folks, the obvious pronouns aren’t their preferred pronouns. You share your pronouns to help normalize it so that everyone feels more comfortable sharing pronouns.</p><cite><a href="https://twitter.com/amtwo" target="_blank" rel="noreferrer noopener">Andy Mallon</a> in <a href="https://am2.co/2020/06/hi-im-andy-my-pronouns-are-he-him/" target="_blank" rel="noreferrer noopener">Hi, I&#8217;m Andy. My pronouns are he/him.</a></cite></blockquote>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/06/Kendra-Bio-Slide.jpg?resize=512%2C287&#038;ssl=1" alt="" class="wp-image-72903" width="512" height="287" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/06/Kendra-Bio-Slide.jpg?resize=1024%2C574&amp;ssl=1 1024w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/06/Kendra-Bio-Slide.jpg?resize=300%2C168&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/06/Kendra-Bio-Slide.jpg?resize=100%2C56&amp;ssl=1 100w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/06/Kendra-Bio-Slide.jpg?resize=768%2C430&amp;ssl=1 768w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/06/Kendra-Bio-Slide.jpg?w=1294&amp;ssl=1 1294w" sizes="(max-width: 512px) 100vw, 512px" data-recalc-dims="1" /><figcaption>A biography slide showing pronouns along with contact info</figcaption></figure>



<p>I&#8217;ve started to edit my various biographies online to include my preferred pronouns. I plan to request that conference organizers include an optional space for pronouns in their slide deck templates as well when I speak at events. This is also an easy thing to include in my Slack profiles and other interactive tools.</p>



<h2>Championing anti-harassment policies/codes of conduct instead of being a jerk about them</h2>



<p>My inner teenager isn&#8217;t so fond of things like dress codes &#8212; and for some years I thought of a code of conduct as being pretty similar to a dress code: unnecessary in the modern world. I was very wrong.</p>



<p>I now recognize that <em>harassment and discrimination happens frequently</em>, and that it can easily happen in any group. Harassment and discrimination often impact those who are marginalized in a group the most. However, even those who are well known in a group may have a hard time speaking up when they are victimized or when they see a peer being victimized. Anti-harassment policies help people understand that they can and should speak up, they explain who to approach about the situation, and they also give a framework for the event handlers to follow when working through the situation. I now see that this is very useful and needed.</p>



<p>I also now recognize that <em>anti-harassment policies are important for expressing community values of inclusion</em>. It&#8217;s a good thing to talk about what we find important as a group, and to express what works for a community, and what doesn&#8217;t work.  </p>



<p>This is even good business sense. </p>



<blockquote class="wp-block-quote"><p>“The smartest thing for people who are running conventions is to recognize that in both the short and long run, it’s going to be better for your convention if everybody knows they’re going to be treated with respect,” he said. “If you don’t do that, the younger people, the people who are vital to your field, are no longer going to feel like your convention or conference is a welcome place, and they will create spaces that are more welcome to them. You don’t want to be the ones who are left behind.”</p><cite><a href="https://twitter.com/scalzi" target="_blank" rel="noreferrer noopener">John Scalzi</a> quoted in <a href="https://www.pcma.org/heres-what-to-include-in-your-meetings-harassment-policy/" target="_blank" rel="noreferrer noopener">Why Your Meeting Needs a Harassment Policy</a></cite></blockquote>



<p>My commitment now is to asking if an event has an anti-harassment policy before I commit to speaking at it, and to also check and make sure that the policy is inclusive of&#8230; </p>



<blockquote class="wp-block-quote"><p><strong>everyone</strong> regardless of gender, gender identity and expression, age, sexual orientation, mental or physical ability, physical appearance, body size, race, ethnicity, religion (or lack thereof), technology choices.</p><cite><a href="https://twitter.com/amtwo" target="_blank" rel="noreferrer noopener">Andy Mallon</a> in <a href="https://am2.co/2020/06/whats-important-in-a-code-of-conduct/" target="_blank" rel="noreferrer noopener">What&#8217;s Important in a Code of Conduct?</a></cite></blockquote>



<p>If it isn&#8217;t possible for the event to commit to this inclusion, it may not be the best place for me to spend my time right then. If it is possible for the event to do this, then I should send them positive feedback and help them promote this as part of a healthy community. </p>



<h2>These are small things, but I can do them &#8212; and the more of us who do them, the easier it gets.</h2>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/06/30/thoughts-as-pride-month-2020-comes-to-a-close/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">72901</post-id>	</item>
		<item>
		<title>New Free Course: The Dirty Secrets of NOLOCK</title>
		<link>https://littlekendra.com/2020/06/29/new-free-course-the-dirty-secrets-of-nolock/</link>
					<comments>https://littlekendra.com/2020/06/29/new-free-course-the-dirty-secrets-of-nolock/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 29 Jun 2020 12:50:52 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=72773</guid>

					<description><![CDATA[I&#8217;m excited to begin moving over courses from SQL Workbooks and making the material available here. The first course up for grabs is The Dirty Secrets of NOLOCK. A little bit about the course What happens when you use NOLOCK hints in your code, or set your isolation level to READ UNCOMMITTED in SQL Server?...]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m excited to begin moving over courses from SQL Workbooks and making the material available here. The first course up for grabs is <a href="https://littlekendra.com/course/the-dirty-secrets-of-nolock/" target="_blank" rel="noreferrer noopener">The Dirty Secrets of NOLOCK</a>.</p>



<div class="wp-block-image"><figure class="alignright size-large"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/02/Dirty-Secrets-of-NOLOCK-300x300-1.png?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-72742" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/02/Dirty-Secrets-of-NOLOCK-300x300-1.png?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/02/Dirty-Secrets-of-NOLOCK-300x300-1.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/02/Dirty-Secrets-of-NOLOCK-300x300-1.png?resize=100%2C100&amp;ssl=1 100w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<h2>A little bit about the course</h2>



<p>What happens when you use NOLOCK hints in your code, or set your isolation level to READ UNCOMMITTED in SQL Server? In 50 minutes of online videos, you will learn what NOLOCK means, why NOLOCK can return incorrect results (and other problems), what allocation order scans are (and how to get them), and other risks and options for reading uncommitted data.</p>



<p>Course lessons include:</p>



<ul><li>What is NOLOCK? (3 minutes)</li><li>The dirtiest secret: NOLOCK returns garbage data (10 minutes)</li><li>The fast alternative to NOLOCK: indexing (5 minutes)</li><li>Why NOLOCK is a misnomer (7 minutes)</li><li>Bad phenomena that can occur under NOLOCK (2 minutes)</li><li>Uses for NOLOCK: admin queries and garbage data (5 minutes)</li><li>Allocation order scans (13 minutes)</li><li>A common error with NOLOCK (6 minutes)</li></ul>



<h2>The course is free, but please donate if you find it helpful</h2>



<p>If you find my free courses helpful, show your appreciation by donating to one of the following organizations:</p>



<ul><li><a href="https://www.blackgirlscode.com/donations.html" target="_blank" rel="noreferrer noopener">Black Girls Code</a>&nbsp;– whose mission is to “introduce programming and technology to a new generation of coders, coders who will become builders of technological innovation and of their own futures.”</li><li><a href="https://www.thetrevorproject.org/donate" target="_blank" rel="noreferrer noopener">The Trevor Project</a>&nbsp;– whose mission is to “end suicide among gay, lesbian, bisexual, transgender, queer &amp; questioning young people.”</li><li><a href="https://www.naacpldf.org/" target="_blank" rel="noreferrer noopener">The NAACP Legal Defense Fund</a>&nbsp;– whose mission is to “achieve racial justice, equality, and an inclusive society.”</li><li><a href="https://victoryfund.org/donate" target="_blank" rel="noreferrer noopener">The LGBTQ Victory Fund</a>&nbsp;– which “works to change the face and voice of America’s politics and achieve equality for LGBTQ Americans by increasing the number of LGBTQ officials.”</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/06/29/new-free-course-the-dirty-secrets-of-nolock/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">72773</post-id>	</item>
		<item>
		<title>How to &#8220;Rename&#8221; the Master Branch to Main in Git in Azure DevOps</title>
		<link>https://littlekendra.com/2020/06/26/how-to-rename-the-master-branch-to-main-in-git-in-azure-devops/</link>
					<comments>https://littlekendra.com/2020/06/26/how-to-rename-the-master-branch-to-main-in-git-in-azure-devops/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 26 Jun 2020 11:03:00 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6688</guid>

					<description><![CDATA[I believe that language matters, and that it is worth our effort to move away from language associated with slavery and racism whenever possible. Azure DevOps doesn&#8217;t technically allow you to rename branches&#8211; but you can work around the issue by creating a new branch from master, setting the new branch as the default branch,...]]></description>
										<content:encoded><![CDATA[
<p>I believe that language matters, and that <a href="https://tools.ietf.org/id/draft-knodel-terminology-00.html#rfc.section.1.1.1" target="_blank" rel="noreferrer noopener">it is worth our effort to move away from language associated with slavery and racism whenever possible</a>. </p>



<p>Azure DevOps doesn&#8217;t technically allow you to rename branches&#8211; but you can work around the issue by creating a new branch from master, setting the new branch as the default branch, and deleting the master branch.  <a href="http://Azure DevOps doesn't technically allow you to rename branches-- but you can work around the issue by creating a new branch off master, setting the new branch as the default branch, and deleting the master branch. In this video, Redgate Advocate Kendra Little creates a new default branch named main, then updates a pipeline dependent on my default branch name. Here's the Microsoft documentation on this topic: https://docs.microsoft.com/en-us/azure/devops/repos/git/require-branch-folders?view=azure-devops&amp;tabs=browser#rename-old-branches" target="_blank" rel="noreferrer noopener">Here&#8217;s the Microsoft documentation on this topic</a>.</p>



<p>In this video, I create a new default branch named main, then update a pipeline dependent on the default branch name.</p>



<p>Note: if you&#8217;re using Git in something else like GitHub, you can <a href="https://www.hanselman.com/blog/EasilyRenameYourGitDefaultBranchFromMasterToMain.aspx" target="_blank" rel="noreferrer noopener">do this in a simpler way</a>.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="How to Rename the Master Branch in Git in Azure DevOps" width="640" height="360" src="https://www.youtube.com/embed/RAOR_yJrwX4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/06/26/how-to-rename-the-master-branch-to-main-in-git-in-azure-devops/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6688</post-id>	</item>
		<item>
		<title>Create a Build with YAML for SQL Change Automation in Azure DevOps</title>
		<link>https://littlekendra.com/2020/06/25/create-a-build-with-yaml-for-sql-change-automation-in-azure-devops/</link>
					<comments>https://littlekendra.com/2020/06/25/create-a-build-with-yaml-for-sql-change-automation-in-azure-devops/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 25 Jun 2020 12:39:15 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6684</guid>

					<description><![CDATA[I used to make fun of YAML because I was scared of it. I still make fun of YAML, but I&#8217;m not scared of it anymore now that Rob Sewell showed me how to avoid having to write it myself. In this 11 minute video, I show how to set up a YAML build pipeline...]]></description>
										<content:encoded><![CDATA[
<p>I used to make fun of YAML because I was scared of it.</p>



<p>I still make fun of YAML, but I&#8217;m not scared of it anymore now that <a href="https://twitter.com/sqldbawithbeard" target="_blank" rel="noreferrer noopener">Rob Sewell</a> showed me how to avoid having to write it myself.</p>



<p>In this 11 minute video, I show how to set up a YAML build pipeline in Azure DevOps. My build is configured using a Local Agent, and will be building a database using Redgate&#8217;s SQL Change Automation.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Create a Build with YAML for SQL Change Automation in Azure DevOps" width="640" height="360" src="https://www.youtube.com/embed/4rQ7M927f6U?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/06/25/create-a-build-with-yaml-for-sql-change-automation-in-azure-devops/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6684</post-id>	</item>
		<item>
		<title>Use Chocolatey to Install Multiple SQL Server 2019 Instances for Testing</title>
		<link>https://littlekendra.com/2020/06/05/use-chocolatey-to-install-multiple-sql-server-2019-instances-for-testing/</link>
					<comments>https://littlekendra.com/2020/06/05/use-chocolatey-to-install-multiple-sql-server-2019-instances-for-testing/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 05 Jun 2020 13:24:02 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6681</guid>

					<description><![CDATA[I'm not at all a fan of "stacking" multiple SQL Server Instances into one Windows Installation in production, but it's helpful for some testing scenarios. 

In this post I explain how to automate this with Chocolatey and PowerShell.]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m working on a project where it&#8217;s useful to automate environment setup and teardown for testing some devops deployment scenarios for databases using transactional replication.</p>



<p>To make this easier, I&#8217;m using:</p>



<ul><li><a href="https://octopus.com/runbooks" class="aioseop-link">Octopus Deploy Runbooks</a> to organize a series of commands (they have a free tier, FYI)</li><li>Chocolatey to  install multiple <a href="https://chocolatey.org/packages/sql-server-2019" class="aioseop-link">SQL Server 2019 Developer Edition instances</a> (I&#8217;ve <a href="https://littlekendra.com/2019/12/02/installing-redgate-sql-toolbelt-with-chocolatey/" class="aioseop-link">written about choco before</a>, it&#8217;s also free)</li></ul>



<p>While I&#8217;m not at all a fan of &#8220;stacking&#8221; multiple SQL Server Instances into one Windows Installation in production, it&#8217;s fine for this testing scenario. </p>



<p>But I came across a little puzzle when trying to get this to work: when I tried to use choco install or choco upgrade for my second instance, it saw that SQL Server 2019 Developer Edition was already installed and did nothing. There is a &#8211;force option which can be used to install additional instances, but the SQL Server Installer will throw an error if you use &#8211;force and pass it information for an instance which is already installed. I needed to add a little extra PowerShell to make my script re-runnable and simple move on gracefully if an instance is already installed.</p>



<p>Here is the code pattern I finally landed on for each instance installation in my runbook:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
$inst=(get-itemproperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances

if ($inst.Contains('SQL1')) {'SQL1 installed, no action taken'} 
else {
choco install sql-server-2019 -Y --force --params=&quot;'/SQLSYSADMINACCOUNTS:domainname\username /SECURITYMODE:SQL /SAPWD:MyNotVerySecurePassword /IgnorePendingReboot /INSTANCENAME:SQL1 /INSTANCEDIR:c:\MSSQL\SQL1'&quot;
}
</pre></div>


<p>Thanks to <a href="https://stackoverflow.com/questions/7516337/powershell-list-all-sql-instances-on-my-system" class="aioseop-link">this StackOverflow answer</a> for helping me along. </p>



<p>I&#8217;m looking forward to sharing more of my progress on this project as I go!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/06/05/use-chocolatey-to-install-multiple-sql-server-2019-instances-for-testing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6681</post-id>	</item>
		<item>
		<title>Learn TSQL for free online &#8211; starting today</title>
		<link>https://littlekendra.com/2020/05/11/learn-tsql-for-free-online-starting-today/</link>
					<comments>https://littlekendra.com/2020/05/11/learn-tsql-for-free-online-starting-today/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 11 May 2020 15:03:57 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6673</guid>

					<description><![CDATA[Thanks to the support of Redgate, I&#8217;ve launched a new course which teaches you the basics of TSQL. The course is totally free, no logins required &#8212; we don&#8217;t even ask for the email address. Check out the course on Redgate University The course is here: https://www.red-gate.com/hub/university/courses/t-sql/tsql-for-beginners Each week has an embedded video for the...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright size-large is-resized"><a href="https://www.red-gate.com/hub/university/courses/t-sql/tsql-for-beginners"><img loading="lazy" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/05/image-2.png?resize=512%2C288&#038;ssl=1" alt="" class="wp-image-6675" width="512" height="288" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/05/image-2.png?resize=1024%2C576&amp;ssl=1 1024w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/05/image-2.png?resize=300%2C169&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/05/image-2.png?resize=768%2C432&amp;ssl=1 768w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/05/image-2.png?resize=560%2C315&amp;ssl=1 560w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/05/image-2.png?w=1280&amp;ssl=1 1280w" sizes="(max-width: 512px) 100vw, 512px" data-recalc-dims="1" /></a></figure></div>



<p>Thanks to the support of Redgate, I&#8217;ve launched a new course which teaches you the basics of TSQL. The course is totally free, no logins required &#8212; we don&#8217;t even ask for the email address.</p>



<h2>Check out the course on Redgate University</h2>



<p>The course is here:</p>



<p><a href="https://www.red-gate.com/hub/university/courses/t-sql/tsql-for-beginners" class="aioseop-link">https://www.red-gate.com/hub/university/courses/t-sql/tsql-for-beginners</a></p>



<p>Each week has an embedded video for the course, along with a link to the syllabus and scripts. The videos also have a timeline in case you wish to jump to a particular part of the discussion.</p>



<h2>Want to join live?</h2>



<p>I&#8217;m publishing a new module each week, and we have five weeks to go. There&#8217;s a calendar reminder in the course if you want to join me live on Wednesdays at 3 pm BST / 11 AM EST, or you can catch the videos each week and follow along.</p>



<h2>Want to learn Query Tuning, Reporting Services, or PowerBI?</h2>



<p>Redgate&#8217;s Community Circle initiative has other free courses on these topics. <a href="https://www.red-gate.com/hub/university/courses/data-platform" class="aioseop-link">Check out the free course list here</a>.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/05/11/learn-tsql-for-free-online-starting-today/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6673</post-id>	</item>
		<item>
		<title>Learner&#8217;s Guide to SQL Server Query Tuning</title>
		<link>https://littlekendra.com/2020/05/01/learners-guide-to-sql-server-query-tuning/</link>
					<comments>https://littlekendra.com/2020/05/01/learners-guide-to-sql-server-query-tuning/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 01 May 2020 10:36:43 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6668</guid>

					<description><![CDATA[Following on from my Learner&#8217;s Guide to SQL Server Performance Triage, I&#8217;m tackling Query Tuning. In this guide, I&#8217;m experimenting with an outline style rather than expanding each paragraph. In this post&#8230; Why do we need query tuning? Who needs to do query tuning? Who doesn&#8217;t? What skills are involved in query tuning? Popular built-in...]]></description>
										<content:encoded><![CDATA[
<p>Following on from my <a href="https://littlekendra.com/2020/03/19/the-learners-guide-to-sql-server-performance-triage/" class="aioseop-link">Learner&#8217;s Guide to SQL Server Performance Triage</a>, I&#8217;m tackling Query Tuning. In this guide, I&#8217;m experimenting with an outline style rather than expanding each paragraph.</p>



<h2>In this post&#8230;</h2>



<ul><li><a href="#why-do" class="aioseop-link">Why do we need query tuning?</a></li><li><a href="#who-needs" class="aioseop-link">Who needs to do query tuning? Who doesn&#8217;t?</a></li><li><a href="#what-skills" class="aioseop-link">What skills are involved in query tuning?</a></li><li><a href="#tools" class="aioseop-link">Popular built-in query tuning tools and how they work together</a></li><li><a href="#tough-problems" class="aioseop-link">Tough problems</a></li><li><a href="http://testing-in-production" class="aioseop-link">Is testing in production required?</a></li><li><a href="http://automated-query-tuning" class="aioseop-link">Automated query tuning: history and evolution</a></li><li><a href="http://common-mistakes-and-pitfalls" class="aioseop-link">Common mistakes and pitfalls in query tuning</a></li></ul>



<h2 id="why-do">Why do we need query tuning?</h2>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1516246843873-9d12356b6fab?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="what do you mean? text on gray surface" width="250" height="333"/><figcaption><a href="https://unsplash.com/photos/RUsczRV6ifY" class="aioseop-link">https://unsplash.com/photos/RUsczRV6ifY</a></figcaption></figure></div>



<p>We’ve seen incredible improvements over the last 15 years:</p>



<ul><li>Storage speed has massively increased due to advances in both storage technology and network bandwidth, CPUs have become much faster, and prices for memory have dropped dramatically.</li><li>Database optimizers are constantly improving and finding ways to make queries more adaptable and to conquer areas of poor optimization.</li></ul>



<p>Yet there are still professionals who make a good living tuning queries, and training others to tune queries. This process involves finding <em>specific slow queries</em> that are key to the performance of an application and making strategic changes, whether in the code, the database structures, the instance configuration, or something else, to ensure that these specific queries consistently execute with a given speed or to a required standard of performance.</p>



<p>Why?</p>



<ul><li>Data sizes are also dramatically increasing</li><li>Customer expectations about performance / speed of applications have also risen</li><li>Customers expect to not have to wait for results now – they want to see current status right away</li></ul>



<h2 id="who-needs">Who needs to do query tuning? Who doesn’t?</h2>



<p>Query tuning is done by:</p>



<ul><li>Database administrators</li><li>Developers who specialize in performance or in databases specifically</li></ul>



<p>Full stack developers don’t generally do query tuning unless they have a specific interest or work experience. This is a specialization rather than a “quick learning” task, so most full-stack developers simply don’t have time, and they need to engage a more specialized person to help. Teams who don’t have a readily available specialist may periodically bring in consultants to help with this.</p>



<p>There are also many database administrators who manage databases where only &#8220;basic&#8221; availability and performance are required. These databases are used by cost-conscious organizations who don&#8217;t need every database to be tuned like a race-car: most of their databases are used by internal users who are used to moderate performance. </p>



<h2 id="what-skills">What skills are involved in query tuning?</h2>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1561336166-49a81db676ca?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;w=1000&amp;q=80" alt="silver metal cup" width="250" height="167"/><figcaption><a href="https://unsplash.com/photos/fzIRJVnQSOk">https://unsplash.com/photos/fzIRJVnQSOk</a></figcaption></figure></div>



<p>I am not a wizard at TSQL, but I still became pretty good at query tuning. A very unscientific estimate of what skills make someone good at query tuning:</p>



<ul><li>65% &#8211; the time, interest, and resources (including a network of people to ask) to build an extensive map of “performance trivia” – this is patterns that don’t optimize well, edge conditions where performance goes bad, understanding of trace flags and configuration on TSQL.</li><li>20% &#8211; interest and ability to learn how the database engine optimizes and processes queries using indexes and other resources, and what impacts concurrency as multiple queries run against a live database at the same time</li><li>15% &#8211; understanding of the TSQL language and different ways of rewriting a query to produce a given result set</li></ul>



<h2 id="tools">Popular built-in query tuning tools and how they work together</h2>



<h3>Execution plans </h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1581166397057-235af2b3c6dd?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;w=1000&amp;q=80" alt="red and silver hand tool" width="250" height="167"/><figcaption><a href="https://unsplash.com/photos/9JU2CKqtw0M">https://unsplash.com/photos/9JU2CKqtw0M</a></figcaption></figure></div>



<p></p>



<p>These are a “map” of how the query is run behind the scenes.</p>



<ul><li>“Estimated” execution plans show the choices the optimizer has made to run the query, including how many rows it estimates will flow through different parts of the plan</li><li>“Actual” execution plans are estimated plans updated with runtime statistics for things like how many rows flowed through the plan. If the plan is “adaptive” it will contain some information about which options were chosen.</li></ul>



<h3>Wait statistics</h3>



<ul><li>Was the query slow because it took a long time to read a lot of data? Or because it couldn’t get a lock resource? Wait statistics help sort this out.</li><li>Some wait statistics are included in actual execution plans as of SQL Server 2016 SP1+, but not all waits are tracked per query due to overhead</li></ul>



<h3>Query Store </h3>



<p>SQL Server 2016+, all editions</p>



<ul><li>This feature tracks execution plans and aggregate runtime metrics (duration, cpu usage) along with aggregate wait stats</li><li>This also has the ability to “freeze” plans</li><li>Query Store information restores with the database itself, so it can be shared between environments if desired.</li></ul>



<h3>Dynamic management views and performance counters</h3>



<ul><li>These help understand overall instance bottlenecks during the slow performance</li><li>Example: overall wait statistics for the instance and metrics about storage latency during the time the queries performed poorly can help explain if the query really needs to be tuned<ul><li>Query tuning frequently needs to do callbacks to “workload tuning”</li></ul></li></ul>



<h3>SQL Trace and Extended Events Traces</h3>



<ul><li>These are tricky to use for query tuning because it’s easy to slow down your workload and cause performance problems when tracing:<ul><li>Execution plans (filtering doesn’t help in this case, the plans are all examined / collected and the filter is applied too late)</li></ul><ul><li>Wait statistics (filtering can help here, but the data collected is so massive that you have to be very careful – and sorting through and querying the collected data is also quite cumbersome</li></ul></li></ul>



<h2 id="tough-problems">Tough problems</h2>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1519612099695-280343718384?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;w=1000&amp;q=80" alt="selective focus photography of brown dog on top of cliff" width="250" height="167"/><figcaption><a href="https://unsplash.com/photos/Aok1bBzv3Zg">https://unsplash.com/photos/Aok1bBzv3Zg</a></figcaption></figure></div>



<h3>Parameter Sniffing</h3>



<ul><li>If a query is “sometimes fast, sometimes slow”, this <em>may</em> be the cause</li><li>For parameterized queries, SQL Server “sniffs” the values supplied for the parameters on first execution. This plan&nbsp; is reused when other values are provided on subsequent execution unless something happens to cause recompilation.</li><li>An example…<ul><li>The CustomerOrderDetails procedure is initially compiled for <strong>@CompanyId= 1001</strong>, a tiny customer with one order. A plan expecting a very small amount of orders is generated, which allocates very little memory for sorts and joins.</li></ul><ul><li>The CustomerOrders procedure is then run for <strong>@CompanyId= 128</strong>, our biggest customer with a million rows of details about their orders. As the query runs all the estimates are too small, there are inefficient one-by-one reads and memory spills are happening all over the place</li></ul><ul><li>Someone restarts the SQL Server because “it’s slow”. This causes queries to all compile freshly. CustomerOrderDetails runs for the first time with<strong> @CompanyId = 128 </strong>and compiles a plan suited to many rows, and runs fast. Nobody understands what happened.<ul><li>In this case the “slow plan” would not longer be in the DMVs. It would be stored in Query Store if that was in use.</li></ul></li></ul></li></ul>



<h3>Contention</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1515410978164-a31dcea7f05e?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;w=1000&amp;q=80" alt="two short-coated dogs stepping on snow" width="250" height="167"/><figcaption><a href="https://unsplash.com/photos/9K2rXi28fG4">https://unsplash.com/photos/9K2rXi28fG4</a></figcaption></figure></div>



<p>It’s difficult to predict how queries will interact with one another in a live workload</p>



<ul><li>Shared resources:<ul><li>Query workspace memory – a certain amount of memory needs to be allocated for sorts/ joins/ moving data around in a query. Lots of queries executing at once which need significant workspace memory can cause a problem with this.<ul><li>Sometimes the queries are estimating they need far more of this memory than they need and it will need to be tuned – people are unlikely to realize this outside of a live workload</li></ul></li></ul><ul><li>The number of queries doing modification and the approach to locking is difficult to predict outside of a live workload<ul><li>Changes in query plans can cause blocking when it wasn’t present before</li></ul></li></ul></li><li>Changes in server resources – even improvements – can cause blocking when it wasn’t present before<ul><li>Example: moving to a new server with more memory and faster CPUs saw an increase in lock waits, because storage waits went down and query execution sped up.</li></ul></li></ul>



<h2 id="testing-in-production">Is testing in production required?</h2>



<p>Often, yes. One of the examples of this is parallelism.</p>



<p>Tuning the level of parallelism for a workload, and for specific queries in that workload tends to be quite hardware specific, and you need a live environment.</p>



<p>Workload “replays” are available within SQL Server’s toolkit but they are:</p>



<ul><li>Time consuming to set up</li><li>Only replays – you can’t “amp up” the activity meaningfully (deleting the same rows 10 times isn’t the same as deleting different rows 10 times)</li></ul>



<h2 id="automated-query-tuning">Automated query tuning: history and evolution</h2>



<h3>Automated Plan Correction </h3>



<p>SQL Server 2017, Enterprise Edition</p>



<ul><li>Built on top of Query Store</li><li>Detects queries that are sometimes fast and sometimes slow</li><li>Can recommend changes only if desired</li><li>Can freeze plans, test if it helps, and react accordingly<ul><li>Freezing is intended as a temporary fix – it’s recommended that a user evaluate the query for tuning as a longer term fix</li></ul></li><li>Very good feature for helping identify parameter sniffing</li></ul>



<h3>Intelligent Query Processing</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1549619856-ac562a3ed1a3?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;w=1000&amp;q=80" alt="gray owl perching on wooden branch during daytime" width="250" height="167"/><figcaption><a href="https://unsplash.com/photos/lNeIjS1rXus">https://unsplash.com/photos/lNeIjS1rXus</a></figcaption></figure></div>



<p></p>



<ul><li>IQP features have been releasing over the last few versions of SQL Server</li><li>Several of these features address common query tuning issues in SQL Server</li><li>Examples:<ul><li>Scalar function inlining: Scalar functions have historically been very poorly optimized in SQL Server, causing slow row-by-row performance<ul><li>This feature “inlines” the functions into the larger execution plans and rewrites the plan accordingly</li></ul></li></ul><ul><li>Adaptive joins: Adaptive logic is built into plans in some cases so that not only a “single path” for execution is available in the plan<ul><li>This currently applies to limited scenarios</li></ul></li></ul><ul><li>Batch mode execution:<ul><li>Optimizes how SQL Server handles scans of data by processing multiple values at once</li></ul><ul><li>This originally was available only for queries which reference columnstore indexes.</li></ul><ul><li>Batch mode for rowstore indexes introduced in SQL Server 2019</li></ul></li></ul></li></ul>



<h2 id="common-mistakes-and-pitfalls">Common mistakes and pitfalls in query tuning</h2>



<p>Lack of connection between DBAs and Development teams</p>



<p>Over-reliance on traces</p>



<p>Lack of knowledge of execution plans in the team</p>



<p>Overuse of hints</p>



<p>Lack of understanding of SQL Server isolation levels and “optimistic” options</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/05/01/learners-guide-to-sql-server-query-tuning/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6668</post-id>	</item>
		<item>
		<title>Join the Best Worst Code Contest today at 5pm BST / Noon Eastern #BestWorstCode</title>
		<link>https://littlekendra.com/2020/04/24/join-the-best-worst-code-contest-today-at-5pm-bst-noon-eastern-bestworstcode/</link>
					<comments>https://littlekendra.com/2020/04/24/join-the-best-worst-code-contest-today-at-5pm-bst-noon-eastern-bestworstcode/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 24 Apr 2020 10:37:25 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6665</guid>

					<description><![CDATA[I have an idea! Let&#8217;s have a &#8220;Worst Code Contest.&#8221; Why do this? Bad code is really fun &#8212; at least, when you write it on purpose. And other people&#8217;s bad code is even more fun. But seriously, I&#8217;ve needed to write a lot of bad code over the years when creating demos and reproducing...]]></description>
										<content:encoded><![CDATA[
<p>I have an idea! Let&#8217;s have a &#8220;Worst Code Contest.&#8221;</p>



<div class="wp-block-image"><figure class="alignright size-large is-resized"><img loading="lazy" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/The-Best-Worst-Code-Contest-1.png?resize=512%2C288&#038;ssl=1" alt="" class="wp-image-6667" width="512" height="288" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/The-Best-Worst-Code-Contest-1.png?resize=1024%2C576&amp;ssl=1 1024w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/The-Best-Worst-Code-Contest-1.png?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/The-Best-Worst-Code-Contest-1.png?resize=768%2C432&amp;ssl=1 768w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/The-Best-Worst-Code-Contest-1.png?resize=560%2C315&amp;ssl=1 560w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/The-Best-Worst-Code-Contest-1.png?w=1280&amp;ssl=1 1280w" sizes="(max-width: 512px) 100vw, 512px" data-recalc-dims="1" /></figure></div>



<h2>Why do this?</h2>



<p>Bad code is really fun &#8212; at least, when you write it on purpose. And other people&#8217;s bad code is <em>even more fun.</em></p>



<p>But seriously, I&#8217;ve needed to write a lot of bad code over the years when creating demos and reproducing various scenarios. It uses your brain in an unusual way, so it&#8217;s a fun thing, but it also teaches you a lot! </p>



<h2>How to play</h2>



<p>The game starts at 5pm BST / Noon Eastern / 9 AM Pacific today.<a href="https://youtu.be/Xo76cGfhTD8" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener" class="aioseop-link"> I&#8217;ll be livestreaming the contest here</a>, but you can play whether or not you join the stream. Here&#8217;s how it works:</p>



<ul><li>I will post a challenge on Twitter to write your best worst code that either does a specific thing in TSQL or produces a specific result set when run against a SQL Server <ul><li>I will use the tag <a href="https://twitter.com/hashtag/BestWorstCode" class="aioseop-link"></a><a href="#BestWorstCode" class="aioseop-link"></a><a href="https://twitter.com/hashtag/BestWorstCode" class="aioseop-link">#BestWorstCode</a></li><li>I will push a &#8220;challenge file&#8221; describing the challenge to <a href="https://github.com/LitKnd/BestWorstCode/tree/master" class="aioseop-link">https://github.com/LitKnd/BestWorstCode/</a></li></ul></li><li>There will be a 10 minute time limit for each challenge. <ul><li>You can use whatever resources you want to put your solution together, but you must submit your solution within 10 minutes to compete. The solution needs to be in a set of short scripts (it can&#8217;t require cloning a whole repo or restoring a database &#8212; the most beautiful awful code is succinct)</li></ul></li><li>Tweet back a link to your BEST WORST sample code using the tag <a href="https://twitter.com/hashtag/BestWorstCode" class="aioseop-link">#BestWorstCode.</a> <ul><li>You can save your code anywhere that works, as long as a link works and I can copy it to a clipboard and test it. One easy way to do this is to create a free GitHub account and <a href="https://gist.github.com/discover" class="aioseop-link">create a Gist for each sample</a>. But blog posts are fine too, or whatever you like using that is easy to link to.</li></ul></li></ul>



<p>We&#8217;ll do TWO challenges, so the contest will probably take 45 minutes altogether, with time for chatting through different submissions. </p>



<p>You can join for one or both of the challenges. If this is fun, we can do it again sometime soon, too!</p>



<h2>What do I need to have installed to compete?</h2>



<p>You need three free things:</p>



<ul><li>A SQL Server (don&#8217;t use a production instance, LOL, <a href="https://www.microsoft.com/en-gb/sql-server/sql-server-downloads" class="aioseop-link">Developer Edition is free</a>)</li><li>A copy of the pubs sample database (<a href="https://github.com/microsoft/sql-server-samples/blob/master/samples/databases/northwind-pubs/instpubs.sql" class="aioseop-link">script to create it is here</a>, this is a Microsoft script <a href="https://github.com/microsoft/sql-server-samples/blob/master/license.txt" class="aioseop-link">shared under the MIT License</a>)</li><li>A dream</li></ul>



<p>And truthfully, the dream is optional.</p>



<h2>Do I have to play to join the livestream?</h2>



<p>Nope. <a href="https://youtu.be/Xo76cGfhTD8" target="_blank" aria-label=" (opens in a new tab)" rel="noreferrer noopener" class="aioseop-link">Join the livestream</a> if you wanna chat while you play along, or just chat. You can also play without joining the livestream. It&#8217;s all good.</p>



<h2>Is there a prize?</h2>



<p>You will win the admiration of two corgis and a sense of superiority that will last you all weekend long.</p>



<h2>Let&#8217;s write some awful code together!</h2>



<p>We can make something terrible <em>and</em> beautiful at the same time.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/04/24/join-the-best-worst-code-contest-today-at-5pm-bst-noon-eastern-bestworstcode/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6665</post-id>	</item>
		<item>
		<title>Make Database Code Reusable in SQL Source Control with Deployment Filters</title>
		<link>https://littlekendra.com/2020/04/08/make-database-code-reusable-in-sql-source-control-with-deployment-filters/</link>
					<comments>https://littlekendra.com/2020/04/08/make-database-code-reusable-in-sql-source-control-with-deployment-filters/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 08 Apr 2020 11:06:37 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6661</guid>

					<description><![CDATA[When I first began working with databases, I was lucky to land a job at a little start-up which had solid development and operations processes: all our code, including database code, was in version control. We had a strong database architect who instilled good coding practices into the way we managed database code as well:...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright size-large"><img loading="lazy" width="300" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/04/fig-08-04-2020_11-03-21.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6663" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/04/fig-08-04-2020_11-03-21.jpg?w=300&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/04/fig-08-04-2020_11-03-21.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>When I first began working with databases, I was lucky to land a job at a little start-up which had solid development and operations processes: all our code, including database code, was in version control. We had a strong database architect who instilled good coding practices into the way we managed database code as well: code was expected to be reusable whenever possible. </p>



<p>For example, there was one set of code which managed error handling and logging for all our databases. It lived in one repository in version control, and was deployed into many databases. This code resided in its own schema, in this case the &#8220;EVT&#8221; schema. Similarly, there were other bits of &#8220;reusable&#8221; database code for managing configuration, transferring data between instances, documenting objects and procedures, and other common tasks.</p>



<h2>There are huge benefits to establishing reusable pieces of code for your databases</h2>



<p>The top five benefits I can think of, are&#8230;</p>



<ul><li>It becomes easy to instill good practices, such as quality error handling, across different teams, without each team needing to learn in-depth about the topic. They simply need to learn how to call the reusable code.</li><li>It is easy to test if core good practices have been implemented, by checking for the existence of the reusable code and whether it is working as part of deployment processes</li><li>It is far more efficient to version and maintain code commonly used across databases by storing it in one repository and creating tests for that code itself</li><li>Those doing production operations gain a consistent way to quickly gather information from databases in production across every environment. For example, 15 years later I still remember that I would run the EVT.LogList procedure to check for error output in databases when diagnosing an issue</li><li>This vastly simplifies writing triage documentation for your databases</li></ul>



<h2>But how do you implement this with modern tooling? </h2>



<p>Back in the day, our company wrote our own tooling to help us with this, because there simply weren&#8217;t any vendors who provided this functionality. Writing and maintaining that tooling required a significant investment on our part.</p>



<p>These days, there are lots more tooling options available (and now I work for a vendor in this area, Redgate Software). However, it can be puzzling to determine how to implement reusable code in modern database tooling, especially &#8220;state-based&#8221; tooling such as Microsoft SSDT or Redgate SQL Source Control.</p>



<p>That&#8217;s because when you do a state-based deployment, tooling of this type compares the object definitions which you have stored in source control with the target database, and generates commands to make the target database look exactly like the objects you have in source control.</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="922" height="298" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/image.png?resize=922%2C298&#038;ssl=1" alt="" class="wp-image-6662" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/image.png?w=922&amp;ssl=1 922w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/image.png?resize=300%2C97&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/image.png?resize=768%2C248&amp;ssl=1 768w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/04/image.png?resize=560%2C181&amp;ssl=1 560w" sizes="(max-width: 922px) 100vw, 922px" data-recalc-dims="1" /><figcaption>A diff occurring between a committed version of database code and a target database. In a state-based deployment, tooling automatically generates the code to be deployed from this differencing task. Without the use of filters or special tooling, any objects not in version control will be scripted to be dropped.</figcaption></figure>



<p>This becomes tricky if you are only deploying <em>part</em> of a database, especially if there are any dependencies which exist between the part of the database you are deploying and the rest of the database. If you do nothing, the state-based solution will assume that you want to make the target database look exactly like what is in version control and <em>only</em> like what is in version control, so it will script DROP commands for anything else.</p>



<h2>Deployment filters simplify managing reusable database code</h2>



<p>How you solve this problem depends on your tooling. Since I work for Redgate, I naturally invest my time in working with our tooling the most &#8212; so from here on out I&#8217;ll be talking about deploying SQL Source Control projects with <a href="https://www.red-gate.com/products/sql-development/sql-change-automation/">SQL Change Automation</a>, which has features which help with this problem. </p>



<p>SQL Change Automation has graphic extensions/plugins as well as PowerShell cmdlets. I&#8217;ll refer to the PowerShell  cmdlets when describing how to do this, but know that the very same functionality is available in the plugins:</p>



<ul><li>If your reusable code is in a repository all by itself, you <a href="https://documentation.red-gate.com/sca4/reference/powershell-cmdlets/new-databasereleaseartifact">can use the -IgnoreAdditional option</a> to deploy everything from your build  package and simply ignore (aka don&#8217;t drop) additional objects in the target database</li><li>If your reusable code is in a shared repository (perhaps with other reusable code, perhaps with something else), and you want to build the whole thing but only deploy part of the code (say, a schema), this can be done by specifying a filter file saved from SQL Compare<a rel="noreferrer noopener" aria-label=" using -FilterPath when you create the release artifact (opens in a new tab)" href="http://-FilterPath" target="_blank"> using -FilterPath when you create the release artifact</a>.</li></ul>



<p>In other words, no matter how you are versioning the code you want to make reusable, there is a path towards being able to safely deploy this code in an automated fashion to target databases as needed. </p>



<h2>Reusable code at work</h2>



<p>There are other interesting patterns which deployment filter files enable. For example,<a href="https://twitter.com/PlantBasedSQL"> Chris Unwin</a> and I recently worked on a case where we were asked how to make schema based deployments to a large number of production databases as efficient as possible. This can be done with a variety of orchestrators &#8212; in this example the use case is to have Octopus Deploy manage the release orchestration.</p>



<p>We&#8217;ve just published a 46 minute YouTube video, &#8220;Reusable Schema Deployments with SQL Source Control and Octopus Deploy&#8221; which gives you a view of this at work. (To be clear, Chris 100% did all the hard work here and I&#8217;m riding his coattails!) If you&#8217;d like to check out individual parts of this video, a table of content with links is at the bottom of this post. <a href="https://www.youtube.com/watch?v=j-X1ePOL1xY">https://www.youtube.com/watch?v=j-X1ePOL1xY</a> </p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Reusable Schema Deployments with SQL Source Control and Octopus Deploy" width="640" height="360" src="https://www.youtube.com/embed/j-X1ePOL1xY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<ul><li> <a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=40s">00:40</a> Overview of the problem we are solving: finding the most efficient way to deploy individual schemas (which are each stored in version control once) to a large number of production databases (which each may contain a mix of some or all of the schemas)</li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=180s">3:00</a> A discussion of state and migrations approaches, and why we are discussing a state-based solution with SQL Source Control for this problem</li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=310s">5:10</a> An overview of the two parts of the solution: Release Artifacts are reusable, and deployment filters effectively &#8220;ignore&#8221; anything that is excluded by the filter (it will not script &#8220;drop&#8221; commands for them)</li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=485s">8:05</a> An overview of the solution workflow</li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=632s">10:32</a> Demo begins! An overview of the databases used for the prototype environment proving this out </li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=840s">14:00</a> An overview of the build pipeline in Azure DevOps Services which builds SQL Source Control and hooks things up with Octopus Deploy &#8212; and a brief excursion where Chris de-mystifies YAML and shows Kendra that dealing with it in Azure DevOps is MUCH easier than she thought </li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=1320s">22:00</a> A view of how the prototype environment works in Octopus Deploy (including a view of the lovely aquatic dark theme in Octopus now) </li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=1440s">24:00</a> A view of the procedural deployment steps in Octopus Deploy using Redgate SQL Change Automation and an explanation of how steps can be configured to run against certain environments </li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=1680s">28:00</a> A view of the filters created for schema deployment, and a demo of how to create them in SQL Compare </li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=1995s">33:15</a> A view of how managing &#8220;environments&#8221; as groups of databases makes it easy to perform deployments of a schema to many databases with a minimum of steps in Octopus Deploy </li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=2102s">35:02</a> Time to show it at work! Chris kicks off a deployment </li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=2185s">36:25</a> A review of the Release Artifacts created, and the changes and code therein</li><li><a href="https://www.youtube.com/watch?v=j-X1ePOL1xY&amp;t=2439s">40:39</a> Summary /recap of the benefits of this approach </li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/04/08/make-database-code-reusable-in-sql-source-control-with-deployment-filters/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6661</post-id>	</item>
		<item>
		<title>Your team can&#8217;t stop writing crappy code. Will Intelligent Query Processing fix it?</title>
		<link>https://littlekendra.com/2020/03/24/your-team-cant-stop-writing-crappy-code-will-intelligent-query-processing-fix-it/</link>
					<comments>https://littlekendra.com/2020/03/24/your-team-cant-stop-writing-crappy-code-will-intelligent-query-processing-fix-it/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 24 Mar 2020 14:56:09 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6657</guid>

					<description><![CDATA[People have been writing about how evil scalar functions are in SQL Server for ten years. But people still use scalar functions in their code all the time. And not dumb people, either: smart people do this, too. I bet you they&#8217;re in your codebase. Good people write bad database code for many reasons: Bad...]]></description>
										<content:encoded><![CDATA[
<p>People have been writing about <a rel="noreferrer noopener" aria-label="how evil scalar functions are in SQL Server for ten years (opens in a new tab)" href="https://conficient.wordpress.com/2010/11/04/spread-the-word-sql-user-defined-scalar-functions-are-evil/" target="_blank">how evil scalar functions are in SQL Server for ten years</a>. But people still use scalar functions in their code all the time. And not dumb people, either: <em>smart people do this, too.</em> I bet you they&#8217;re in your codebase. </p>



<div class="wp-block-image"><figure class="alignright size-large is-resized"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/03/fig-24-03-2020_14-54-45.jpg?resize=225%2C225&#038;ssl=1" alt="" class="wp-image-6658" width="225" height="225" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/03/fig-24-03-2020_14-54-45.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/03/fig-24-03-2020_14-54-45.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 225px) 100vw, 225px" data-recalc-dims="1" /></figure></div>



<p>Good people write bad database code for many reasons:</p>



<ul><li>Bad code patterns often look simple and elegant</li><li>Smart people re-use code patterns, so when a bad pattern gets into your code, it tends to spread</li><li>Most people, even smart people, aren&#8217;t great at remembering loads of gotchas, especially if they need to work in multiple languages or in multiple areas of specialization</li></ul>



<p>This is why I&#8217;m so excited about Microsoft&#8217;s new <a rel="noreferrer noopener" aria-label="Intelligent Query Processing features for SQL Server (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/performance/intelligent-query-processing" target="_blank">Intelligent Query Processing features for SQL Server</a>: they are upping their game and working to make your existing code run better.</p>



<p>But, with all new things, you may need to be careful.  </p>



<p>If you&#8217;re curious to know how this can help your code &#8212; and where it may not work well &#8212; <a href="https://www.red-gate.com/hub/events/redgate-events/redgate-streamed/">sign up to  join us for Redgate Streamed on Friday, April 3</a>. At 4 PM GMT / 10 AM CDT, Kathi Kellenberger will give you an introduction to Intelligent Query Processing and show you examples  of where it helps bad code, and where it doesn&#8217;t.</p>



<p>This is a free, virtual event. If you aren&#8217;t able to make it live, go ahead and register and you&#8217;ll automatically get access to the recordings for free. </p>



<p>If you are able to make it live, we look forward to your comments and questions! Hope to see you there.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/03/24/your-team-cant-stop-writing-crappy-code-will-intelligent-query-processing-fix-it/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6657</post-id>	</item>
		<item>
		<title>Connecting to the SQL Server Community Online: Uplifting Folks</title>
		<link>https://littlekendra.com/2020/03/23/connecting-to-the-sql-server-community-online-uplifting-folks/</link>
					<comments>https://littlekendra.com/2020/03/23/connecting-to-the-sql-server-community-online-uplifting-folks/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 23 Mar 2020 17:23:27 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6655</guid>

					<description><![CDATA[We&#8217;ve got a session coming up in the free Redgate Streamed virtual conference on, &#8220;How database DevOps levels up remote work.&#8221; When thinking about that session I began thinking about other ways to improve remote work. While I worked remotely for nearly ten years until recently and have established practices which work well for me...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright size-large"><img loading="lazy" width="300" height="300" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/03/fig-23-03-2020_17-14-52.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6656" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/03/fig-23-03-2020_17-14-52.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/03/fig-23-03-2020_17-14-52.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>We&#8217;ve got a session coming up in the <a rel="noreferrer noopener" aria-label="free Redgate Streamed virtual conference (opens in a new tab)" href="https://www.red-gate.com/hub/events/redgate-events/redgate-streamed/" target="_blank">free Redgate Streamed virtual conference</a> on, &#8220;How database DevOps levels up remote work.&#8221;  When thinking about that session I began thinking about other ways to improve remote work.</p>



<p>While I worked remotely for nearly ten years until recently and <a href="https://www.sqlservercentral.com/editorials/kendras-top-3-tips-for-working-remotely">have established practices which work well for me </a>, moving to another country and the general chaos and uncertainty right now as the world tries to cope with a global pandemic have increased my feelings of worry and loneliness. </p>



<p>I have found that certain folks in my Twitter feed help me feel connected, combat my worry, and also add some good old fashioned nerdiness to my day. They level up my remote work day!</p>



<p>If you could use a few more connections in your life and would like to get started on Twitter, I highly recommend following these friendly folks who love working with data, and who bring thoughtfulness and happiness into the community:</p>



<h2><a rel="noreferrer noopener" aria-label="Cathrine Wilhelmsen, aka @canthrinew (opens in a new tab)" href="https://twitter.com/cathrinew" target="_blank">Cathrine Wilhelmsen, aka @cathrinew</a></h2>



<p>Cathrine loves teaching and learning, and her tweets always teach me something, give me something to think about, or improve my day in some way.</p>



<p>Cathrine&#8217;s bio: &#8220;SQL/Data geek, Microsoft Data Platform MVP, speaker, blogger and chronic volunteer. Taller on Twitter! Loves sci-fi, chocolate, coffee, and cats. She/Her.&#8221;</p>



<h2><a rel="noreferrer noopener" aria-label="Mala Mahadevan, aka @sqlmal (opens in a new tab)" href="https://twitter.com/sqlmal" target="_blank">Mala Mahadevan, aka @sqlmal</a></h2>



<p>Mala constantly learns and shares. She is one of the kindest people I know as well as an honest person, and her tweets remind me that one can confront things and be kind at the same time.</p>



<p>Mala&#8217;s bio: &#8221; SQL Server Enthusiast, PASS Regional Mentor-NE region, here to learn and follow all things SQL. My views do not reflect views of my employer. She/Her&#8221;</p>



<h2><a href="https://twitter.com/Pittfurg" target="_blank" rel="noreferrer noopener" aria-label="Drew Furgiuele, aka @Pittfurg (opens in a new tab)">Drew Furgiuele, aka @Pittfurg</a></h2>



<p>Drew loves dogs, databases, and people who are doing their best.</p>



<p>Drew&#8217;s bio: &#8220;KE8SQL. Former Data Platform MVP turned Microsoft PFE. Co-host of <a rel="noreferrer noopener" href="https://t.co/n6tSlfcAWz?amp=1" target="_blank">http://doingtheirbest.com</a> podcast. Tweets and opinions my own. The toughest guy in Letterkenny&#8221;</p>



<h2><a rel="noreferrer noopener" aria-label="Jess Pomfret, aka @jpomfret (opens in a new tab)" href="https://twitter.com/jpomfret" target="_blank">Jess Pomfret, aka @jpomfret</a></h2>



<p>Jess is stellar at automation. Her twitter feed also always makes me feel like doing something active, even if it&#8217;s just a quick set of exercises in my home office (and as a lazy person I <em>really need this kind of inspiration</em>)</p>



<p>Jess&#8217; bio: &#8220;She/Her. SQL Server, PowerShell, Crossfit, Proper Football&#8221;</p>



<h2><a rel="noreferrer noopener" aria-label="Andy Mallon, aka @AMtwo (opens in a new tab)" href="https://twitter.com/AMtwo" target="_blank">Andy Mallon, aka @AMtwo</a></h2>



<p>Andy provides a lot of dog photos and asks essential questions in polls, like &#8220;What&#8217;s the appropriate thing to say when you toot?&#8221; These are the things that keep me sane. He&#8217;s really good at managing databases too and he probably even posts about that sometimes.</p>



<p>Andy&#8217;s bio: &#8221; Boston Terror. Database Artist. Dog Dad. Carbatarian. I am a four letter word. Vaccinated. he/him. <a href="https://twitter.com/search?q=%23Food&amp;src=hashtag_click">#Food</a> <a href="https://twitter.com/search?q=%23Politics&amp;src=hashtag_click">#Politics</a> <a href="https://twitter.com/search?q=%23SQL&amp;src=hashtag_click">#SQL</a> <a href="https://twitter.com/search?q=%23Activism&amp;src=hashtag_click">#Activism</a> <a href="https://twitter.com/search?q=%23TeamOxfordComma&amp;src=hashtag_click">#TeamOxfordComma</a>&#8220;</p>



<h2><a rel="noreferrer noopener" aria-label="Steve Jones, aka @way0utwest (opens in a new tab)" href="https://twitter.com/way0utwest" target="_blank">Steve Jones, aka @way0utwest</a></h2>



<p>Steve lives on a ranch, so he&#8217;s got horse photos, ranch photos, and mountain views. He&#8217;s also got a really grounded-but-positive perspective on things. He&#8217;s thoughtful. He has good ideas. (Proof: he not only founded SQLServerCentral, he also co-founded SQLSaturday events back in the day!)</p>



<p>Steve&#8217;s bio is truly minimalist. It is: &#8220;Editor, <a rel="noreferrer noopener" href="https://t.co/Xt1ZI2nl5d?amp=1" target="_blank">http://SQLServerCentral.com</a>&#8220;</p>



<h2><a rel="noreferrer noopener" aria-label="Buck Woody, aka @BuckWoodyMSFT (opens in a new tab)" href="https://twitter.com/BuckWoodyMSFT" target="_blank">Buck Woody, aka @BuckWoodyMSFT</a></h2>



<p>Buck is more than a person. He&#8217;s more of an experience.  Follow Buck for learning resources, tutorials on loads of things across the data platform and analytics, terrible puns that you&#8217;ll still laugh at, and also a lot of kindness.</p>



<p>Buck&#8217;s bio is empty.</p>



<h2>There are loads of awesome people in the community, and this isn&#8217;t an exhaustive list &#8212; not by far!</h2>



<p>These are simply the people I thought of first today! If I didn&#8217;t list you, it doesn&#8217;t mean I don&#8217;t love ya <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/03/23/connecting-to-the-sql-server-community-online-uplifting-folks/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6655</post-id>	</item>
		<item>
		<title>Outlining My Session: Index Tuning in an Agile World</title>
		<link>https://littlekendra.com/2020/03/20/outlining-my-session-index-tuning-in-an-agile-world/</link>
					<comments>https://littlekendra.com/2020/03/20/outlining-my-session-index-tuning-in-an-agile-world/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 20 Mar 2020 17:37:31 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6652</guid>

					<description><![CDATA[I&#8217;m giving a session on index tuning at the upcoming Redgate Streamed free online conference. The conference will be held April 1-3 2020, register here and join us! I love talking about index tuning and I know this area well, so I&#8217;m excited to put together this new session. I thought it would be fun...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1470790376778-a9fbc86d70e2?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="Scattered sheets of white paper covering the entire frame" width="250" height="359"/><figcaption> Photo by&nbsp;<a href="https://unsplash.com/@brandi1?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Brandi Redd</a>&nbsp;on&nbsp;<a href="https://unsplash.com/s/photos/design?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a> </figcaption></figure></div>



<p>I&#8217;m giving a session on index tuning at the upcoming Redgate Streamed free online conference. The conference will be held <a rel="noreferrer noopener" aria-label="April 1-3 2020, register here (opens in a new tab)" href="https://www.red-gate.com/hub/events/redgate-events/redgate-streamed/" target="_blank">April 1-3 2020, register here and join us!</a></p>



<p>I love talking about index tuning and I know this area well, so I&#8217;m excited to put together this new session. I thought it would be fun to share my process of outlining and creating the session, leading up to the event.</p>



<p>The session title and abstract I wrote this week is&#8230;</p>



<blockquote class="wp-block-quote"><p><strong>Index Tuning in an Agile World</strong> </p><p>Software developers increasingly work across databases and applications, and there are fewer and fewer dedicated database developers each year. This produces a new opportunity for database administrators and developers who are interested in performance: the role of the incremental index tuner. In this session you will learn a framework for developing and tuning indexes in SQL Server, and how to apply this framework in an Agile development context. </p></blockquote>



<h2>Who is my audience? What is my goal?</h2>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1466065665758-d473db752253?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="soccer goal on brown field" width="250" height="188"/><figcaption> Photo by&nbsp;<a href="https://unsplash.com/@glencarrie?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Glen Carrie</a>&nbsp;on&nbsp;<a href="https://unsplash.com/s/photos/goal?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a> </figcaption></figure></div>



<p>Whenever I&#8217;m writing or rehearsing a session, I remind myself to think about who my ideal audience is. In this case it&#8217;s fairly broad: it&#8217;s developers or DBAs who care about performance of their code, but they aren&#8217;t yet experts at index tuning. The interesting thing right now is that often the people in this audience don&#8217;t have all of the information they need to do index tuning by themselves: from the DBA side, they typically have access to the production system but often don&#8217;t have access to the codebase, or the design of the queries. From the developer side, they often have the opposite situation: they can get to the code and change it if needed, but they don&#8217;t have regular access to production.</p>



<p>My goal in this session is to get all of these people started by showing an example of index tuning, and proposing a workflow in which a performance problem can be identified, a change to indexes can be suggested and reviewed, and the change can be agreed upon and deployed through the environments needed to reach production.</p>



<h2>My initial outline</h2>



<p>I like to begin putting together sessions with an outline of how I think the session will flow. This outline may change <em>entirely</em> over the course of writing the session, but it feels right to start with it. Here&#8217;s what I&#8217;m thinking we can cover in an hour:</p>



<h3>Intro: the problem space</h3>



<ul><li>Disconnected teams: developers lack production access, DBAs lack access to code and ability to change it</li><li>Both groups often are unfamiliar with index tuning </li></ul>



<h3>Learning by example &#8211; the goal workflow</h3>



<ul><li>Show an example query with erratic performance </li><li>Demo: How can the problem be discovered by a DBA with production access?</li><li>Demo: How can the problem be discovered by a  developer without production access?</li><li>Example: testing different indexes to improve performance in a development environment</li><li>Example: using work items and a pull request workflow to propose index changes</li><li>Gotchas: where can this go wrong?</li></ul>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1516967124798-10656f7dca28?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="red heart and man hanging drawing" width="250" height="375"/><figcaption> Photo by&nbsp;<a href="https://unsplash.com/@jannerboy62?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Nick Fewings</a>&nbsp;on&nbsp;<a href="https://unsplash.com/s/photos/love?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a> </figcaption></figure></div>



<h3>How to improve your workflow</h3>



<ul><li>What if your database code isn&#8217;t in version control yet? How do you get started?</li><li>What if other folks don&#8217;t want to change / want to keep things they way they are?</li><li>What about designing indexes from the ground up instead of tuning an existing system?</li><li>References / links for learning Git, branching / merging strategies</li><li>References for index tuning basics and further learning</li></ul>



<p>I&#8217;ll be working on this session more next week, so stay tuned to see how it comes together.</p>



<p>I&#8217;m grateful that I get to work with others in the community in this topsy-turvy time, and that I have you as a reader. Stay safe, take good care of yourself and your families, and I hope that you are healthy and able to  <a rel="noreferrer noopener" href="https://www.red-gate.com/hub/events/redgate-events/redgate-streamed/" target="_blank">join  us o n April 1-3 2020, for Redgate Streamed.</a> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/03/20/outlining-my-session-index-tuning-in-an-agile-world/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6652</post-id>	</item>
		<item>
		<title>Announcing Redgate Streamed, April 1-3 2020</title>
		<link>https://littlekendra.com/2020/03/19/announcing-redgate-streamed-april-1-3-2020/</link>
					<comments>https://littlekendra.com/2020/03/19/announcing-redgate-streamed-april-1-3-2020/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 19 Mar 2020 12:58:51 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6647</guid>

					<description><![CDATA[We&#8217;re thrilled to announce Redgate Streamed: a 3 day online virtual community conference, to be held April 1-3, 2020. Register at Redgate.com/RedgateStreamed In this 9 minute livestream, I give you a rundown of the event schedule and tells you why I&#8217;m excited about each session. For every registration that attends Redgate streamed, live or on-demand,...]]></description>
										<content:encoded><![CDATA[
<p>We&#8217;re thrilled to announce Redgate Streamed: a 3 day online virtual community conference, to be held April 1-3, 2020. Register at <a href="https://www.red-gate.com/hub/events/redgate-events/redgate-streamed/">Redgate.com/RedgateStreamed</a></p>



<p>In this 9 minute livestream, I give you a rundown of the event schedule and tells you why I&#8217;m excited about each session.  </p>



<p>For every registration that attends Redgate streamed, live or on-demand, we&#8217;ll donate $1 to the World Health Organization&#8217;s COVID-19 response fund (in addition to a separate donation we&#8217;ll be making. Even if you can’t join us live, <a rel="noreferrer noopener" aria-label="be sure to register (opens in a new tab)" href="https://www.red-gate.com/hub/events/redgate-events/redgate-streamed/" target="_blank">be sure to register</a> and you’ll receive the recordings to watch on-demand, plus you&#8217;ll help us raise our gift level! </p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Announcing Redgate Streamed: April 1-3, 2020" width="640" height="360" src="https://www.youtube.com/embed/W1O8o-3YAF4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/03/19/announcing-redgate-streamed-april-1-3-2020/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6647</post-id>	</item>
		<item>
		<title>The Learner’s Guide to SQL Server Performance Triage</title>
		<link>https://littlekendra.com/2020/03/19/the-learners-guide-to-sql-server-performance-triage/</link>
					<comments>https://littlekendra.com/2020/03/19/the-learners-guide-to-sql-server-performance-triage/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 19 Mar 2020 11:21:22 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6648</guid>

					<description><![CDATA[I&#8217;m introducing a series of &#8220;learner&#8217;s guides&#8221; &#8212; overviews of a given topic, chock full of links and references. For this first post, the information is based on what I learned when I was part of the team at Brent Ozar Unlimited who put together the original First Responder Kit and built a related consulting...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1542850131-f8059d51b857?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="assorted-color wooden road sign" width="250" height="375"/><figcaption> <a href="https://unsplash.com/photos/wKhsnBy1DXc">https://unsplash.com/photos/wKhsnBy1DXc</a> </figcaption></figure></div>



<p><em>I&#8217;m introducing a series of  &#8220;learner&#8217;s guides&#8221; &#8212; overviews of a given topic, chock full of links and references. For this first post, the information is based on what I learned when I was part of the team at Brent Ozar Unlimited who put together the <a href="https://www.brentozar.com/first-aid/">original First Responder Kit </a>and built a related consulting practice using those tools. </em></p>



<h2>In this post&#8230;</h2>



<ul><li><a href="#what-is">What is performance triage, and when do we do it?</a></li><li><a href="#who-does">Who does performance triage?</a></li><li><a href="#dmvs">“DMVs” revolutionized the way performance triage is done</a></li><li><a href="#sources">Sources for information in performance triage</a></li><li><a href="#difficult">When is performance triage difficult?</a></li><li><a href="#checklist">SQL Server Performance Triage Checklist</a><ul><li><a href="#whoisactive">A frequent check: What&#8217;s happening now?</a></li><li><a href="#phase1">Phase 1 – look for big gotchas</a></li><li><a href="#phase2">Phase 2 – Narrow down: is it the infrastructure, is it the workload, or is it one query?</a></li></ul></li><li><a href="#mistakes">Common mistakes and pitfalls</a></li><li><a href="#future">How is this evolving, and what does the future look like?</a></li></ul>



<h2 id="what-is">What is performance triage, and when do we do it?</h2>



<p>Performance triage is done when a production database is suspected to be the cause of slowness or of loss of availability. Many times when perf triage is done it&#8217;s unclear what the source of the problem is, and the goal is to either identify what is happening in the database or instance to cause this problem, or to rule out the database as much as possible. </p>



<p>In other words, most applications aren&#8217;t written with enough built in observability to clearly tell if the problem is in the application layer, the database layer, the network or somewhere else. But the database is often an early suspect in an investigation.</p>



<h2 id="who-does">Who does performance triage?</h2>



<div class="wp-block-image is-style-default"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1554497342-902a4f8da8ed?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="This is who I am" width="250" height="167"/><figcaption> <a href="https://unsplash.com/photos/5yn5rGI5IUw">https://unsplash.com/photos/5yn5rGI5IUw</a> </figcaption></figure></div>



<p>Database administrators (DBAs) have been the main people to do performance triage over the last 20 years. This is largely due to separation of duties: DBAs have typically been responsible for the performance and availability of production databases, while access has been limited to these environments for developers. Often DBAs are part of an IT group which is managed as a separate business unit from that of software development. DBAs also often are responsible for databases developed externally from the company, such as vendor databases.</p>



<p>In recent years, responsibility for production environments has been shifting, at least when it comes to in-house development. As organizations work to be able to deliver new features to customers more quickly in competitive environments, movements such as Agile development, DevOps, and Infrastructure as Code have been shifting roles: it is more common than ever for developers to need to maintain responsibility for their code throughout the entire deployment process, and for Database Administrators to be asked to participate in the development process earlier to help with quality design and testing. </p>



<p>Monitoring tooling also better enables communication to both of these teams, and automation is used to help manage permissions for different environments, allowing access to be granted quickly, but only when it is needed and approve.</p>



<div class="wp-block-image is-style-circle-mask"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1515191107209-c28698631303?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="silhouette of personr" width="250" height="313"/><figcaption> <a href="https://unsplash.com/photos/TzVN0xQhWaQ">https://unsplash.com/photos/TzVN0xQhWaQ</a> </figcaption></figure></div>



<h2 id="dmvs">&#8220;DMVs&#8221; revolutionized the way performance triage is done</h2>



<p>Prior to the release of SQL Server 2005, &#8220;Profiling&#8221; using<a rel="noreferrer noopener" aria-label=" SQL Trace  (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/sql-trace?view=sql-server-ver15" target="_blank"> SQL Trace </a>was the most widely used methodology, most often run by the SQL Server Profiler tool. </p>



<p>SQL Server 2005 changed methodologies dramatically with the introduction of <a rel="noreferrer noopener" aria-label="Dynamic Management Views and functions (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/system-dynamic-management-views?view=sql-server-ver15" target="_blank">Dynamic Management Views and functions</a>, which are commonly referred to as &#8220;DMVs&#8221;. DMVs hold a rich amount of information regarding the present and recent aggregate performance of a SQL Server instance and its databases. The major benefits of DMVs include:</p>



<ul><li>Much lighter overhead than tracing</li><li>Data on everything from internal performance of the SQL Server to which user queries have been run and how often</li></ul>



<p>However, many DMVs in SQL Server are cleared when different events occur, such as an instance restarting, a database going offline, a query recompiling, a configuration changing, or memory pressure. For this reason, monitoring tools are very popular and are used to harvest information from DMVs (as well as the sources listed below), store them in a separate repository, and use them to provide historic performance information.</p>



<h2 id="sources">Sources for information in performance triage</h2>



<p>In addition to dynamic management views, monitoring tools and folks performing manual triage often reference:</p>



<ul><li><strong>Operating system error logs</strong>. Windows is most commonly used to run SQL Server in production environments, so this is usually the Windows Event log, both System and Application logs</li><li><strong>Windows Cluster Manager logs</strong> if Failover Clusters and / or Availability Groups are in use</li><li><strong>SQL Server Error Log</strong> &#8211; SQL Server maintains its own log of errors</li><li><strong>Virtualization metrics</strong> (if applicable) </li><li><strong>Performance counters </strong>&#8211; SQL Server performance counters can be accessed via Perfmon or <a rel="noreferrer noopener" aria-label="queried via SQL Server in sys.dm_os_performance_counters (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-performance-counters-transact-sql?view=sql-server-ver15" target="_blank">queried via SQL Server in sys.dm_os_performance_counters</a><ul><li>There is some overlap between performance counters and DMVs &#8211; occasionally perf counters are either easier to use or hold information not available or easily attainable from DMVs</li><li>OS performance counters are available via Perfmon and are often relevant as well</li></ul></li><li><strong>SQL Trace</strong> (either <a href="https://docs.microsoft.com/en-us/sql/relational-databases/sql-trace/sql-trace?view=sql-server-ver15">Server Side SQL Trace or live SQL Trace via SQL Profiler</a>) and <a rel="noreferrer noopener" aria-label="Extended Events  (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/extended-events/quick-start-extended-events-in-sql-server?view=sql-server-ver15" target="_blank">Extended Events </a>(XE) traces &#8211; these have more impact on the SQL Server and it&#8217;s easier to cause a performance problem with them, but they can be useful when handled with care</li><li><strong>Query execution plans</strong> and related <a href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-query-stats-transact-sql?view=sql-server-ver15" target="_blank" rel="noreferrer noopener" aria-label="query runtime metrics (opens in a new tab)">query runtime metrics</a> &#8211; <a rel="noreferrer noopener" aria-label="execution plans (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/performance/display-the-estimated-execution-plan?view=sql-server-ver15" target="_blank">execution plans</a> may be harvested via DMVs, <a rel="noreferrer noopener" aria-label="Query Store (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-ver15" target="_blank">Query Store</a>, or a trace (warning: these are expensive to collect in traces, even using Extended Events)</li></ul>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1517917822086-6988b4ca9b31?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="yellow crumpled papers" width="250" height="167"/><figcaption> <a href="https://unsplash.com/photos/Kr8Tc8Rugdk">https://unsplash.com/photos/Kr8Tc8Rugdk</a> </figcaption></figure></div>



<h2 id="difficult">When is performance triage difficult?</h2>



<p>Performance triage is most difficult when monitoring of the SQL Server either isn&#8217;t in place, or monitoring is only being done by a high level &#8220;platform&#8221; style monitoring system such as <a rel="noreferrer noopener" aria-label="System Center Operations Manager (SCOM) (opens in a new tab)" href="https://docs.microsoft.com/en-us/system-center/scom/welcome?view=sc-om-2019" target="_blank">System Center Operations Manager (SCOM)</a>.  This is because a significant amount of critical information about performance is cleared when failovers happen, restarts occur, configuration is changed, or memory pressure occurs. </p>



<p>While &#8220;platform&#8221; tools sometimes do have specialized management packs to attempt to gather some deeper information, in practice most teams find it difficult to harvest and use this information. For this reason, it&#8217;s quite common for teams to use both a platform level tool for high level monitoring across many types of databases, applications, and services, as well as a specialized SQL Server monitoring tool for monitoring databases and instances, both on-prem and in the cloud.</p>



<p>While it is possible to do performance triage in a reactive model and begin gathering information after the problem happens, in this mode you are left waiting for the problem to happen again before you can begin to diagnose it.</p>



<p>If you&#8217;d like to see an example of SQL Server specialized monitoring running against a live system, <a rel="noreferrer noopener" aria-label="Redgate's SQL Monitor (opens in a new tab)" href="https://monitor.red-gate.com/" target="_blank">Redgate&#8217;s SQL Monitor</a> has an online demo which runs against environments including the live <a rel="noreferrer noopener" aria-label="SQL Server Central databases (opens in a new tab)" href="https://www.sqlservercentral.com/" target="_blank">SQL Server Central databases</a> as well as cloud PAAS workloads. (Disclaimer: I work for Redgate.)</p>



<h2 id="checklist">SQL Server Performance Triage Checklist</h2>



<h3 id="whoisactive">A frequent check: What&#8217;s happening now?</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1564423579124-86949f52a937?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="Now Then Then now painting" width="250" height="345"/><figcaption> <a href="https://unsplash.com/photos/wQ0lQlgPeiA">https://unsplash.com/photos/wQ0lQlgPeiA</a> </figcaption></figure></div>



<p> Whenever I begin triage, I often start with checking: what queries are running RIGHT NOW? No matter what monitoring system or tooling is in place I like doing this check with the free utility <a rel="noreferrer noopener" href="http://whoisactive.com/" target="_blank">sp_WhoIsActive</a>. I like this because sp_WhoIsActive is a stored procedure you may run against the instance, and like many operations people I like to see information in multiple tools &#8212; so a monitoring tool can help confirm what I see in sp_WhoIsActive and vice-versa. </p>



<p>Throughout triage I typically stop and run sp_WhoIsActive multiple times to confirm that the instance is responding quickly and that I don&#8217;t see signs that something is going wrong. After all, you never want to make a problem worse by triaging it, and you don&#8217;t want to be oblivious to what is going on while looking at logs of past behavior.</p>



<h3 id="phase1">Phase 1 – look for big gotchas</h3>



<p>When triaging performance I generally want to start big picture and focus on the following sources:</p>



<ul><li><strong>Windows Error Log</strong> &#8211; How many times did I forget to check this at the beginning, only to realize there was an obvious error which was either the source of the problem or a major immediate clue? At least 10 times. Do a quick pass on this early on!</li><li><strong>Key virtualization performance counters or checks</strong> &#8211; Using a hypervisor? Check (or ask the managing team to check) if the balloon driver kicked in when you had the problem, the VM was migrated between hosts, or something else unusual occurred.</li><li><strong>SQL Server Error Log</strong> &#8211; Have there been<a href="https://littlekendra.com/2017/03/09/stack-dumps-in-sql-server-dear-sql-dba-episode-33/"> stack dumps</a>? Did the instance restart? Are there messages about <a href="https://littlekendra.com/2016/06/16/outside-the-big-san-box-analyzing-storage-and-san-latency-in-sql-server-dear-sql-dba/">super slow storage latency</a>? Again, this is always worth a quick pass early on as it can save you loads of time.</li><li><strong>Do we have a ridiculous lack of resources?</strong> &#8211; Spending extensive time troubleshooting performance on a 1 vCPU instance or one with 4GB of memory is going to cost way more operationally than is worth it. </li><li>I like to use the free <a href="https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/releases">sp_Blitz script</a> from Brent Ozar Unlimited (note: I&#8217;m biased, I worked there!) to quickly check for the following. Just be sure to get used to the script so you don&#8217;t get lost in the details and can find the high level info quickly when you run it. (Again, I like to cross-check this information in a monitoring tool &#8212; I&#8217;m all about triangulation and multiple tools, though.)<ul><li><strong>Bad settings which can harm performance</strong> &#8212; super low max memory, auto-close or auto-shrink on databases</li><li><strong>Signs of &#8220;<a rel="noreferrer noopener" aria-label="poison waits (opens in a new tab)" href="https://www.brentozar.com/blitz/poison-wait-detected/" target="_blank">poison wait stats</a>&#8221; which can kill performance</strong> (I think I may be the person who coined that term! It me!)</li><li><strong>Signs of super-slow storage from storage wait stats DMVs</strong> like <a rel="noreferrer noopener" aria-label="sys.dm_io_virtual_file_stats (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-io-virtual-file-stats-transact-sql?view=sql-server-ver15" target="_blank">sys.dm_io_virtual_file_stats</a> &#8211; this DMV stores an average since startup, so don&#8217;t jump to conclusions too fast, but sometimes this holds the answer</li><li><strong>Database backups / <a rel="noreferrer noopener" aria-label="RPO and RTO (opens in a new tab)" href="https://www.brentozar.com/archive/2011/12/letters-that-get-dbas-fired/" target="_blank">RPO and RTO</a> </strong>&#8211;  Although database backups / recovery models are unlikely to be the cause of your performance or availability problem, please do take the time to glance at these: because one problem is that often backups get cancelled when performance is bad in order to lighten load on the system. This can leave you exposed to MAJOR RISKS. You don&#8217;t want to be tweaking configuration and skipping backups. Well, you just don&#8217;t want to be skipping backups.</li><li><strong>Major missing indexes</strong> &#8211; SQL Server records when it thinks a nonclustered disk-based rowstore index will be useful to speed up a query in its DMVs and execution plans. Don&#8217;t assume that something in this list is the reason poor performance happens, but possibly this will inform your list of &#8220;suspects&#8221;</li></ul></li></ul>



<h3 id="phase2">Phase 2 – Narrow down: is it the infrastructure, is it the workload, is it one query?</h3>



<p>If I haven&#8217;t found a clear direction to go in so far and instead I&#8217;ve just ruled out the big gotchas, now I start narrowing in. Hopefully I have either a specific time period that I&#8217;m looking at where I know the problem occurred, OR I know it&#8217;s an ongoing problem which I can observe now. When it comes to anything that isn&#8217;t constant, having a specialized monitoring tool is critical. </p>



<p>If I don&#8217;t have a specialized SQL Server Monitoring tool, I need to start sampling and capturing information without trying to put too much pressure on the system. This can be done, but  you can&#8217;t do everything and once and you have to be careful &#8212; so you must do a dance of watching what is running, sampling information, analyzing it, and then moving on to more samples. Data I sample or review in a monitoring tool includes things like:</p>



<ul><li>SQL Server wait statistics for the impacted time &#8211; <a rel="noreferrer noopener" aria-label="sys.dm_os_wait_stats (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-wait-stats-transact-sql?view=sql-server-ver15" target="_blank">sys.dm_os_wait_stats</a> and <a rel="noreferrer noopener" aria-label="sys.dm_os_waiting_tasks (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-waiting-tasks-transact-sql?view=sql-server-ver15" target="_blank">sys.dm_os_waiting_tasks</a><ul><li>These are an invaluable tool to finding out why SQL Server is slow, but it&#8217;s quite an art to use them. You need to know what to ignore, which waits are available in different versions of SQL Server and what they mean, and which waits are more problematic than others. </li><li>It&#8217;s incredibly useful to have a baseline of wait statistics, either collected manually or by your monitoring system. <a rel="noreferrer noopener" aria-label="Erin Stellato explains why (opens in a new tab)" href="https://www.sqlservercentral.com/steps/capturing-baselines-on-sql-server-wait-statistics" target="_blank">Erin Stellato gives a background on wait stats and explains why here</a>.</li></ul></li><li>Storage waits / samples of  <a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-io-virtual-file-stats-transact-sql?view=sql-server-ver15" target="_blank">sys.dm_io_virtual_file_stats</a> and / or performance counter information for Physical Disk (Avg Disk sec/read and write, Disk Reads/sec and Writes/sec) for the impacted time<ul><li>How much are/were we using storage when there is a problem?</li><li>How much storage latency do we have when there was a problem? (What latency is acceptable? As Paul Randal says, <a rel="noreferrer noopener" aria-label="everyone has their own idea of what that is -- here is his take (opens in a new tab)" href="https://www.sqlskills.com/blogs/paul/are-io-latencies-killing-your-performance/" target="_blank">everyone has their own idea of what that is &#8212; here is his take</a>.)</li></ul></li><li>Blocking and/or deadlock reports, if available<ul><li>If you see lock waits in the wait statistics, blocking may have been part of the issue</li><li>If you have a monitoring tool, it will help you analyze the chain of blocking and view deadlock graphs to decode which queries are involved</li></ul></li><li>Query durations and  runtimes in the problem period, along with query execution plans<ul><li>Both monitoring tool repositories and <a rel="noreferrer noopener" aria-label="Query Store (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-ver15" target="_blank">Query Store</a> are rich sources of information for this</li><li>If you don&#8217;t have either of those, you can reference <a rel="noreferrer noopener" aria-label="sys.dm_exec_query_stats  (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-query-stats-transact-sql?view=sql-server-ver15" target="_blank">sys.dm_exec_query_stats </a>and related DMVs, but will need to play a guessing game about which of your suspects were running in the problem period, what their duration was then, and what execution plans they had</li></ul></li></ul>



<h2 id="mistakes">Common mistakes and pitfalls</h2>



<div class="wp-block-image is-style-circle-mask"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1530032582480-edd739014c39?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="cup of coffee on brown surface" width="250" height="337"/><figcaption> <a href="https://unsplash.com/photos/lQwWZI_WjSU">https://unsplash.com/photos/lQwWZI_WjSU</a> </figcaption></figure></div>



<p>The biggest mistake that I&#8217;ve seen with this is that <strong>folks rely too much on tracing</strong>. Not only can tracing slow down the SQL Server,  but it slows down your triage process:</p>



<ul><li>You have to wait for the problem to happen again</li><li>Traces generate a lot of data which are time consuming to sort through and analyze</li><li>You have to be cautious about the amount of things you collect to avoid causing a whole new performance problem, so it&#8217;s not uncommon to find that you weren&#8217;t tracing the right things to troubleshoot the issue after it occurs, and to need to start all over again</li></ul>



<p>My most common personal mistake is that I&#8217;ve <strong>forgotten to check for errors in the OS and SQL Server Logs early</strong>, and missed clear indications of the source of the problem, wasting loads of time. This is easy to do in a stressful situation even when you have practice, so I recommend having a checklist or runbook for your team to use when triaging.</p>



<p>Another common issue is that <strong>not all SQL Server performance counters are useful</strong>, and <a href="https://www.brentozar.com/archive/2013/07/on-bobcats-per-100-orders-and-other-spurious-metrics/" target="_blank" rel="noreferrer noopener" aria-label="some have persistent myths and misinformation to be aware of (opens in a new tab)">some have persistent myths and misinformation to be aware of</a>.</p>



<p><strong>I&#8217;ve found that one of the hardest problems to identify is parameter sniffing</strong>. It&#8217;s good to be familiar with this in advance if you need to troubleshoot performance in SQL Server. A great resource on this is Erland Sommarskog&#8217;s <a rel="noreferrer noopener" aria-label="Slow in the Application, Fast in SSMS (opens in a new tab)" href="http://www.sommarskog.se/query-plan-mysteries.html" target="_blank">Slow in the Application, Fast in SSMS</a>. </p>



<h2 id="future">How is this evolving, and what does the future look like?</h2>



<div class="wp-block-image is-style-default"><figure class="alignright is-resized"><img loading="lazy" src="https://images.unsplash.com/photo-1533930086187-0fc58e5a92e2?ixlib=rb-1.2.1&amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" alt="fortune cookie" width="250" height="375"/><figcaption> <a href="https://unsplash.com/s/photos/future">https://unsplash.com/s/photos/future</a> </figcaption></figure></div>



<p><strong>One of the most exciting pieces of tooling introduced into SQL Server regarding performance tuning recently is<a href="https://sqlworkbooks.com/2018/03/why-i-love-the-automatic-plan-correction-auto-tuning-feature/"> Automatic Plan Correction</a></strong>. This requires the use of Query Store and it helps identify when queries are sometimes fast and sometimes slow. In other words it can help with identifying that tricky problem of parameter sniffing.</p>



<ul><li>You may use this in an advisory mode, or let it test freezing different plans for you in production</li><li>Note that &#8220;corrections&#8221; are intended as temporary fixes: for long term performance, queries that are &#8220;corrected&#8221; likely need either query tuning and/or index tuning</li></ul>



<p><strong><a rel="noreferrer noopener" aria-label="Automatic Index Tuning (opens in a new tab)" href="http://Automatic Index Tuning is available in Azure PAAS editions only" target="_blank">Automatic Index Tuning</a> is available in Azure PAAS editions</strong>. I&#8217;m not crazy about trusting SQL Server&#8217;s missing index suggestions &#8212; I look at them but take them as a suggestion to look at the related queries directly and do my own analysis, as they&#8217;re often oversimplified.  (<a href="https://sqlworkbooks.com/2017/03/overindexing-missing-index-dmvs-and-the-database-tuning-advisor/"> I also do NOT trust ye olde Database Tuning Advisor</a>.) But automatic index tuning is an interesting feature and it involves an element of testing. I haven&#8217;t personally looked into this much, but I&#8217;m curious about it, and I can see it working well on the right workloads, probably workloads with relatively small data sizes. Automatic index tuning does present interesting challenges in terms of how teams want to manage schema in source control and what indexes they want to deploy to a new workload if using <a href="https://www.brentozar.com/archive/2011/06/how-design-multiclient-databases/" target="_blank" rel="noreferrer noopener" aria-label="a single-tenant-per-database architecture (opens in a new tab)">a single-tenant-per-database architecture</a>.</p>



<p><strong>APIs for Customization from Monitoring tools</strong> &#8211; &#8220;Did that deployment/maintenance/configuration change we did yesterday cause a  problem? When exactly did it happen, anyway?&#8221; Figuring that out has always been a toughie. One of the cool things that SQL Monitor has done is to add an <a rel="noreferrer noopener" aria-label="API for annotations (opens in a new tab)" href="https://documentation.red-gate.com/sm/api/annotations" target="_blank">API for annotations</a> so that teams can track significant events on the graph of  performance metrics. This can be automated to happen right away when an event occurs, or it can be used by team members to note times of interest, perhaps when triaging performance and noting times when a problem occurred. As DBAs merge more into platform teams and/or combine with development teams, the use of <a rel="noreferrer noopener" aria-label="APIs to both manage alerts  (opens in a new tab)" href="https://documentation.red-gate.com/sm/api" target="_blank">APIs to both manage alerts </a>and the ability <a rel="noreferrer noopener" aria-label="customize how alerts are delivered (opens in a new tab)" href="https://documentation.red-gate.com/sm10/configuring-sql-monitor/setting-up-webhook-notifications/custom-webhook-messages" target="_blank">customize how alerts are delivered</a> will only increase, along with other custom features enabling teams to customize their responses to incidents. (Again, I work for Redgate, so I&#8217;m biased on my choice of tooling and examples.)</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/03/19/the-learners-guide-to-sql-server-performance-triage/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6648</post-id>	</item>
		<item>
		<title>Re-teaming is Good: Here&#8217;s Why</title>
		<link>https://littlekendra.com/2020/03/13/re-teaming-is-good-heres-why/</link>
					<comments>https://littlekendra.com/2020/03/13/re-teaming-is-good-heres-why/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 13 Mar 2020 12:08:36 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6645</guid>

					<description><![CDATA[Note: This post is based on an editorial I originally published over at SQL Server Central Years ago, I worked on a fabulous team of eight database administrators We supported more than a hundred developers who worked in an agile fashion. When I first joined the DBA team, we had a shared on-call rotation, but...]]></description>
										<content:encoded><![CDATA[
<p>Note: This post is based on an <a href="https://www.sqlservercentral.com/editorials/self-selection-reteaming-its-not-crazy-its-the-future" target="_blank" rel="noreferrer noopener" aria-label="editorial I originally published over at SQL Server Central (opens in a new tab)">editorial I originally published over at SQL Server Central</a></p>



<h2>Years ago, I worked on a fabulous team of eight database administrators</h2>



<p>We supported more than a hundred developers who worked in an agile fashion. When I first joined the DBA team, we had a shared on-call rotation, but each DBA specialized in a certain area of the environment and regularly met with the development teams working on that area. DBA specializations rarely shifted.</p>



<h2>Over time, this created significant stressors</h2>



<p>Covering on-call for some areas became quite difficult in times of rapid change. It became impossible for someone to be out of the office for an extended period without delaying releases. When we got to the point that we had to decide whether or not to escalate a critical issue to someone who was attending a funeral, it was clearly time for a change.</p>



<h2>To gain flexibility, the DBA team decided to regularly rotate positions</h2>



<p>Not everyone was thrilled. We each felt attached to the environment we supported: like a garden we had faithfully tended for years, it was hard to let it go! This made the transition a bit tough, especially at first.</p>



<p>Over time, we found that regularly rotating specializations had many benefits for our group. The most wonderful improvement was that it made it possible for team members to fully disconnect while they were off work, as other team members not only had deep technical familiarity with an area, but also our developers were used to partnering with more of us and everyone could adapt more easily.</p>



<h2>Fast forward to today: now I work at Redgate</h2>



<p>When I joined Redgate I was intrigued to learn that our Product Development teams run a self-selective re-teaming process across the entire division. Re-teaming just took place at Redgate in January 2020 for the second year in a row. Because it is at a larger scale than eight people, Redgate’s re-teaming model gives people the option to have a say on whether it is time for a change or not (rather than only enforcing rotation).</p>



<p>Self-selecting reteaming is used at Redgate for multiple reasons, which I’ve shamelessly stolen from an internal post written by Redgate’s own&nbsp;<a href="https://medium.com/ingeniouslysimple/team-self-selection-without-the-anxiety-be5a1478c484">Chris Smith</a>&nbsp;to share with you. Reteaming….</p>



<ul><li>Realigns team size and purpose to reflect the larger organizational strategy for the year</li><li>Gives engineers autonomy based on the principle that people will be most engaged and motivated if they have agency regarding what they work on</li><li>Spreads knowledge, best practices, and innovation throughout teams, as people bring techniques, skills, and insights along with them from their prior work</li><li>Enables personal development</li><li>Reflects the recommendations of thought leaders, who champion this collaborative approach as an increasingly common characteristic of high-performing software development organizations.</li></ul>



<h2>Re-teaming encourages good documentation habits </h2>



<p>This week I realized something obvious: if you&#8217;re a developer who has been working on a productivity tool like SQL Prompt and you move to working on a tool related to version control and automation, there are certain things you wouldn&#8217;t necessarily know about your customers. For example, most customers in financial services and healthcare can&#8217;t or won&#8217;t use SQL Authentication. There are many things like this.</p>



<p>However, this isn&#8217;t a blocker to re-teaming. Instead, realizing this helped me understand that I can help improve our customer profiles to make these types of requirements and preferences more clear to everyone.</p>



<p>Reteaming helps surface &#8220;tribal knowledge&#8221; and help make it clearer for everyone.</p>



<h2>Although change can be tough, I believe that we’ll increasingly find reteaming practices popping up in engineering teams everywhere </h2>



<p>And in my experience, it’s a good thing.</p>



<p>If you’d like to learn more about Redgate’s use of self-selecting reteaming, check out the “<a href="https://open.spotify.com/episode/2yldp7o6KVJaCmsszhGRwc?si=dwsFIv15QJygse7DjqqRhQ">Dynamic Reteaming (with Heidi Helfand</a>)” episode of the Ingeniously Simple Podcast.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/03/13/re-teaming-is-good-heres-why/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6645</post-id>	</item>
		<item>
		<title>Altering an indexed view in SQL Server drops all indexes</title>
		<link>https://littlekendra.com/2020/03/02/altering-an-indexed-view-in-sql-server-drops-all-indexes/</link>
					<comments>https://littlekendra.com/2020/03/02/altering-an-indexed-view-in-sql-server-drops-all-indexes/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 02 Mar 2020 15:58:28 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6642</guid>

					<description><![CDATA[I learned an interesting thing about ALTER VIEW behavior in SQL Server when applied to indexed views. This is covered in the product documentation, but it&#8217;s not something I would have expected: ALTER VIEW can be applied to indexed views; however, ALTER VIEW unconditionally drops all indexes on the view. ALTER VIEW documentation When I...]]></description>
										<content:encoded><![CDATA[
<p>I learned an interesting thing about ALTER VIEW behavior in SQL Server when applied to indexed views. This is covered in the product documentation, but it&#8217;s not something I would have expected:</p>



<blockquote class="wp-block-quote"><p> ALTER VIEW can be applied to indexed views; however, ALTER VIEW unconditionally drops all indexes on the view. </p><cite><a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-view-transact-sql?view=sql-server-ver15">ALTER VIEW documentation</a></cite></blockquote>



<p>When I first heard about this behavior, it sounded like a bug to me: why should an alteration like adding a column to a view remove all the indexes?</p>



<p>A colleague of mine at Redgate wondered: is the behavior the same with the new CREATE OR ALTER syntax as it is with just plain ALTER? (Spoiler: <a rel="noreferrer noopener" aria-label="I tested and it is the same (opens in a new tab)" href="https://gist.github.com/LitKnd/6b6d58b819ff38ff0d6277bb8389ca29" target="_blank">I tested and it is the same</a>: CREATE OR ALTER also drops all indexes on the view.)</p>



<p><strong>One note</strong>: if you are using Redgate tooling to commit your database objects to version control, never fear: it handles this for you and will automatically put the indexes back on your indexed views if you alter them! This is true both for SQL Source Control and SQL Change Automation. Just be aware that behind the scenes the indexes must effectively be recreated to implement this change, so if large tables are involved in the view definition, deployment time will be impacted.</p>



<h2>This behavior makes <em>some </em>sense when I think about how indexed views are implemented</h2>



<p>When you create an index on a view (we&#8217;re talking views using classic disk-based tables here), it materializes the view &#8212; in other words, it stores the data as if it is a table. That data is stored in rows on 8KB pages. These pages can fill up. So if you add a column to a view, just like adding a column which requires a size-of-data operation to a table, the database engine needs to rewrite those pages to add the new column to each and every row (depending on datatypes and nullability, etc etc). </p>



<p>Also, it&#8217;s quite possible that when altering an indexed view, the alteration makes the view no longer adhere to the <a href="https://docs.microsoft.com/en-us/sql/relational-databases/views/create-indexed-views?view=sql-server-ver15" target="_blank" rel="noreferrer noopener" aria-label="many rules required for indexed views (opens in a new tab)">many rules required for indexed views</a>.</p>



<p>After thinking about this, I can understand why if you allow ALTER VIEW, the simplest way to implement that against an indexed view is to make it the user&#8217;s problem to ensure that indexes can be re-created after altering a view.</p>



<h2>However, I personally wonder if ALTER VIEW should even work for indexed views</h2>



<p>This is one of those little niche behaviors that strikes me as problematic. From a user perspective, I&#8217;d personally rather that ALTER VIEW simply failed for indexed views and notified me that to change an indexed view, I need to drop the indexes, alter the view, then recreate the indexes which I need. Although that&#8217;s more work to me as a user, it helps me understand that this is not necessarily a cheap or low risk operation, and it reduces the risk of me accidentally deploying code that un-indexes a view which might be critical to performance.</p>



<p>However, this ship has sailed: the behavior is documented and established and unlikely to change in the SQL Server Engine anytime soon. </p>



<h2>Want to see a demo?</h2>



<p>Check out <a href="https://www.erikdarlingdata.com/2019/09/be-careful-when-you-alter-indexed-views/" target="_blank" rel="noreferrer noopener" aria-label="this fantastic video by Erik Darling where he discusses and demos this behavior (opens in a new tab)">this fantastic video by Erik Darling where he discusses and demos this behavior</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/03/02/altering-an-indexed-view-in-sql-server-drops-all-indexes/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6642</post-id>	</item>
		<item>
		<title>Come work with me! Be a Sales Engineer for Redgate</title>
		<link>https://littlekendra.com/2020/02/21/come-work-with-me-be-a-sales-engineer-for-redgate/</link>
					<comments>https://littlekendra.com/2020/02/21/come-work-with-me-be-a-sales-engineer-for-redgate/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 21 Feb 2020 19:26:17 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6638</guid>

					<description><![CDATA[Redgate is growing, and we have some fresh, new open positions around the world which would be a great fit for SQL Server developers or DBAs who would like to transition to a customer-facing role and develop expertise in Redgate&#8217;s solutions for Compliant Database DevOps. Here are the listings and locations for three of these...]]></description>
										<content:encoded><![CDATA[
<p>Redgate is growing, and we have some fresh, new open positions around the world which would be a great fit for SQL Server developers or DBAs who would like to transition to a customer-facing role and develop expertise in Redgate&#8217;s solutions for Compliant Database DevOps. Here are the listings and locations for three of these roles:</p>



<div class="wp-block-image"><figure class="alignright size-large"><img loading="lazy" width="300" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-21-02-2020_19-22-18.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6639" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-21-02-2020_19-22-18.jpg?w=300&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-21-02-2020_19-22-18.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<ul><li> <a href="https://www.red-gate.com/our-company/careers/current-opportunities/sales-engineer">Sales Engineer &#8211; Cambridge, UK</a></li><li> <a href="https://www.red-gate.com/our-company/careers/current-opportunities/pre-sales-engineer-pasadena-ca">Pre-Sales Engineer – Pasadena, CA</a> </li><li> <a href="https://www.red-gate.com/our-company/careers/current-opportunities/pre-sales-engineer-austin-tx">Sales Engineer – Austin, TX</a> </li></ul>



<p>As a DevOps Advocate, the Sales Engineering team is one of my favorite groups to work with at Redgate. These folks get to learn <em>all</em> about database DevOps, and they get to show clients the possibilities for how they can better develop and deliver database changes, as well as how to better protect their data in the software development process.</p>



<p>But the Sales Engineers aren&#8217;t only intelligent. Our Sales Engineering team is a group of kind, smart people who are just plain fun to spend time with. Whenever I&#8217;m on a call or a webinar with one of the SEs, we work as a team and we have a great time figuring out how to solve problems. Joining our Sales Engineering team means joining one of the most respected and well-known teams inside Redgate.</p>



<h2>One note about sales at Redgate</h2>



<p>Redgate practices ethical selling. Depending on your life experience, the words &#8220;ethical selling&#8221; may look a bit like an oxymoron. However, I&#8217;ve been working with our sales teams at Redgate for more than a year and I can attest that we really do work our hardest to make sure that we only recommend solutions for the client which fit the team&#8217;s needs and which will help the client succeed. There&#8217;s no &#8220;vapor ware&#8221; in this job, only helping people find a solution which empowers them to work more effectively as a team, be more productive, and deliver value for their organization more rapidly.</p>



<h2>Don&#8217;t know DevOps?</h2>



<p>If you&#8217;re knowledgeable about databases and are interested in developing expertise in Database DevOps (but aren&#8217;t there yet), please feel free and empowered to apply! While it&#8217;s terrific to find an applicant who is well versed in it all, this is one of those &#8220;unicorn&#8221; jobs in my experience where strong experience in a few of the needed areas is what is needed, as there&#8217;s not exactly a huge pool of people who tick <em>all</em> the boxes.</p>



<h2>If you&#8217;re interested in the job, please use one of the links above to apply</h2>



<p>If you&#8217;d like to specify me as the person who referred you on the application form, that&#8217;d be lovely &#8212; and full disclosure, I might get a bonus if you get hired. If you don&#8217;t feel like listing me, that&#8217;s OK too, we&#8217;d still love to hear from you. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/02/21/come-work-with-me-be-a-sales-engineer-for-redgate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6638</post-id>	</item>
		<item>
		<title>I can do better; we can do better; let&#8217;s do better</title>
		<link>https://littlekendra.com/2020/02/13/i-can-do-better-we-can-do-better-lets-do-better/</link>
					<comments>https://littlekendra.com/2020/02/13/i-can-do-better-we-can-do-better-lets-do-better/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 13 Feb 2020 22:51:33 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6633</guid>

					<description><![CDATA[In the past week or so, the Microsoft Data Platform community has begun having a discussion about inclusivity, both on Twitter and across community blog posts. This conversation began when a member of the community shared their story about being repeatedly mis-gendered and additionally feeling excluded, unwelcome, and hurt at a series of community events....]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright size-large"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-13-02-2020_22-09-01.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6635" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-13-02-2020_22-09-01.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-13-02-2020_22-09-01.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>In the past week or so, the Microsoft Data Platform community has begun having a discussion about inclusivity, both on Twitter and across community blog posts. </p>



<p>This conversation began when a member of the community shared their story about being repeatedly mis-gendered and additionally feeling excluded, unwelcome, and hurt at a series of community events.</p>



<p>Historically the legacy SQL Server community has had quite visible support for Women in Technology, but has not shifted broadly/overall to a public focus on larger Diversity and Inclusion issues. There have been efforts to be more inclusive to people of color and members of the LGBTQ community, but these efforts have have not been nearly as visible or &#8220;popular&#8221; within the community as the efforts to support WIT. </p>



<p>I don&#8217;t write this in an accusatory way, only to describe the state of things as I see them. I have not worked to change this, and as a community member I share in the responsibility for the problem I see.</p>



<h2>This past week I have seen more care and concern from community members over this issue than I expected</h2>



<p>I&#8217;ve seen many comments from people saying that they want to learn to be more inclusive, and I&#8217;ve also seen folks asking for advice on how to speak and act in ways that will help make everyone feel welcome.</p>



<p>This pattern of asking how to do better is what makes me the happiest, because I do need help to learn to be inclusive by default, and to recognize when I am making a mistake without realizing it. I see that I&#8217;m  not alone in recognizing this and I appreciate others who are making it a known pattern to ask for help in this way.</p>



<h2>Here is an example I thought about this week from my own life</h2>



<p>Years ago I began a job as a contractor (V-dash, holla!) at Microsoft. At the time there was a bit of an &#8220;outsider&#8221; feel to being a contractor, but I didn&#8217;t mind, I got to work on cool stuff, and I liked my fellow contractors just as well as I liked the full time employees.</p>



<p>One office over from where I sat was another contractor who happened to be transgender. We didn&#8217;t work on the same team, so we were never in the same meetings, but we passed each other in the hallway plenty. I never said &#8220;hi.&#8221; I never went out of my way to smile. I never said, &#8220;hey, do you want to grab lunch?&#8221; Looking back, there was plenty of evidence that my coworker felt unwelcome, isolated, and alone, and by doing nothing I simply added to that problem.</p>



<p>What I <em>should</em> have done was to be friendly and welcoming to my colleague, even though we weren&#8217;t on the same team. I should have introduced myself. I should have smiled in the hall, even if I&#8217;m always super awkward smiling at people I don&#8217;t know (insecurity, hi, it me). I should have asked if they liked what they were working on&#8211; like I did of plenty of other folks who were on other teams. </p>



<p>If <em>I</em> felt like I was a bit of an &#8220;outsider&#8221; because I was a contractor, I can hardly imagine how my colleague felt. </p>



<p>I did not realize this in any way until this week. </p>



<h2>I&#8217;ve learned a lot this week</h2>



<p>I can&#8217;t go back and redo my past behavior, but I can do better now and in the future. I can ask others to help me recognize when I can improve. I can listen. And I think we as a community can do better as well. I am regretful that someone was hurt, but I am glad that we are having this conversation. Growth is usually not comfortable, but it is important.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/02/13/i-can-do-better-we-can-do-better-lets-do-better/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6633</post-id>	</item>
		<item>
		<title>Protect Your Prod Databases in Azure DevOps / TFS: Three Control Points</title>
		<link>https://littlekendra.com/2020/02/05/protect-your-prod-databases-in-azure-devops-tfs-three-control-points/</link>
					<comments>https://littlekendra.com/2020/02/05/protect-your-prod-databases-in-azure-devops-tfs-three-control-points/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 05 Feb 2020 18:23:54 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6626</guid>

					<description><![CDATA[When implementing any kind of automation for database deployments, it&#8217;s important to implement safeguards for your production environment. This is needed even in the best conditions when team members collaborate well and there is a high level of trust, for a very simple reason: accidents happen easily! As a person who has accidentally destroyed quite...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image is-style-circle-mask"><figure class="alignright size-medium"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-05-02-2020_18-22-15.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6628" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-05-02-2020_18-22-15.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/02/fig-05-02-2020_18-22-15.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>When implementing any kind of automation for database deployments, it&#8217;s important to implement safeguards for your production environment. This is needed even in the best conditions when team members collaborate well and there is a high level of trust, for a very simple reason: accidents happen easily! </p>



<p>As a person who has accidentally destroyed quite a lot of things VERY RAPIDLY with automation<img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f631.png" alt="😱" class="wp-smiley" style="height: 1em; max-height: 1em;" />, I am a fan of adding protection around production environments to lower risk for everyone, including myself.</p>



<p>On the other hand, it&#8217;s also desirable to empower team members to be able to quickly build and experiment with automation in other environments. It&#8217;s best to not lock down more than you need to.</p>



<p>In this post I&#8217;ll give a quick overview of three control points which help protect your production databases when working with Azure DevOps Server/Services (or legacy Team Foundation Services). The controls I&#8217;m discussing here apply to SQL Server instances where you are deploying changes with self-hosted <a rel="noreferrer noopener" aria-label="Agents (opens in a new tab)" href="https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents" target="_blank">agents</a>.</p>



<p>There&#8217;s more than one way to do these things, so if you&#8217;ve got thoughts about your favorite alternatives, I&#8217;d love to hear about them in the comments.</p>



<h2>1. Control who can create new pipelines against production instances</h2>



<p>While it&#8217;s useful to let folks create new pipelines and edit them against all sorts of development, test, or QA resources, not everyone should be able to create a pipeline, point it to an existing production database, and deploy changes to it. </p>



<p>One simple way to manage this is to create one or more <a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/pools-queues" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)">agent pools </a>for production SQL Server instances and use the <a href="https://docs.microsoft.com/en-us/azure/devops/organizations/security/about-security-roles?view=azure-devops" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)">security properties</a> on the agent pool to limit who can create pipelines using that agent pool. For those who need to see the progress of pipelines/monitor deployments, there is a ‘Reader’ role available.</p>



<p>This could also be done with <a rel="noreferrer noopener" aria-label="deployment groups (opens in a new tab)" href="https://docs.microsoft.com/en-us/azure/devops/pipelines/release/deployment-groups" target="_blank">deployment groups</a> for parallel execution.</p>



<h2>2. Control what the agent can do</h2>



<p>When you install a self-hosted agent, you are prompted to configure not only which agent pool it uses, but also which account the agent will run under. If you wish for that agent to only be able to deploy to one SQL Server, you may choose to use an account which you have granted only permissions for that SQL Server instance.</p>



<p>In other words, if you are concerned about the agent being used to communicate with other SQL Server instances across the network in your production environment, you have the ability to control this by using an account which only has permissions granted against the SQL Server instance of your choice.</p>



<h2>3. Control what can be done within an existing release pipeline</h2>



<p>Pipelines are quite flexible and there are many things you can do with them in terms of gating and approvals. Two very powerful controls which you may choose to configure right away for pipelines with production targets are&#8230;</p>



<p><strong>Configure who can run vs edit vs view a pipeline: </strong><a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/policies/permissions" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)">Pipeline security</a> can be configured to allow people to interact with an existing pipeline in many different ways – for instance some users/groups perhaps should be able to execute the pipeline but not edit the pipeline definition.</p>



<p><strong>Configure approvals within the pipeline</strong>: Stages may be edited to set approvals. An example with Redgate tooling is that you might create one stage to create a release artifact for a production change, then another stage which performs the deployment of that release artifact. You might choose to <a rel="noreferrer noopener" aria-label="add an approval step at the entry to the deployment stage (opens in a new tab)" href="https://docs.microsoft.com/en-us/azure/devops/pipelines/release/approvals/approvals?" target="_blank">add an approval step at the entry to the deployment stage</a>.</p>



<h2>It&#8217;s OK to start slowly</h2>



<p>If this is a bit overwhelming, remember that you don&#8217;t have to automate everything at once, and in fact it&#8217;s preferable to have a strong foundation for automation. The first step is to identify the current pain points and constraints for your team and start from there. If your database code isn&#8217;t yet in version control, beginning there is very likely the first step. If provisioning dev, test, or pre-production environments is slow and cumbersome, working on automating provision and deployments there will help increase your velocity. But when it does come time to begin automating deployments to production environments, do take the time to examine the available safeguards and implement the right controls for your organization.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/02/05/protect-your-prod-databases-in-azure-devops-tfs-three-control-points/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6626</post-id>	</item>
		<item>
		<title>High Availability options for SQL Server 2008 in an Azure VM &#8211; a #sqlhelp story</title>
		<link>https://littlekendra.com/2020/02/01/high-availability-options-for-sql-server-2008-in-an-azure-vm-a-sqlhelp-story/</link>
					<comments>https://littlekendra.com/2020/02/01/high-availability-options-for-sql-server-2008-in-an-azure-vm-a-sqlhelp-story/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Sat, 01 Feb 2020 17:57:09 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6621</guid>

					<description><![CDATA[I asked a question on Twitter yesterday: And check out the magic of the sqlhelp hash tag, I got loads of answers! So many that I&#8217;m actually selecting a few here for the purposes of keeping this post readable. First, John Morehouse , a smartie and a consultant who does a lot of great work...]]></description>
										<content:encoded><![CDATA[
<p>I asked a question on Twitter yesterday: </p>



<figure class="wp-block-embed-twitter wp-block-embed is-type-rich is-provider-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">If running SQL Server 2008 in an Azure VM (no SQL upgrade possible, extended support in place), is the best option for high availability Database Mirroring? Or something else I am not thinking of? <a href="https://twitter.com/hashtag/sqlhelp?src=hash&amp;ref_src=twsrc%5Etfw">#sqlhelp</a></p>&mdash; Kendra Little (@Kendra_Little) <a href="https://twitter.com/Kendra_Little/status/1223212966293704704?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p>And check out the magic of the <a href="https://twitter.com/hashtag/sqlhelp?src=hashtag_click&amp;f=live">sqlhelp hash tag</a>, I got loads of answers! So many that I&#8217;m actually selecting a few here for the purposes of keeping this post readable. First, <a rel="noreferrer noopener" aria-label="John Morehouse  (opens in a new tab)" href="https://twitter.com/SqlrUs" target="_blank">John Morehouse </a>, a smartie and a consultant who does a lot of great work in the cloud and on-prem helped me figure out what would be needed for clustering (which isn&#8217;t something you can do simply with this version in an Azure VM)&#8230; </p>



<figure class="wp-block-embed-twitter wp-block-embed is-type-rich is-provider-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">I belive you could also cluster it but you’ll need SIOS for the storage.  I think. DisclaImer: I’ve never tried it.  Mirroring should work as well and might be simpler. <a href="https://twitter.com/hashtag/sqlhelp?src=hash&amp;ref_src=twsrc%5Etfw">#sqlhelp</a></p>&mdash; John &quot;Moving Mountains&quot; Morehouse (@SqlrUs) <a href="https://twitter.com/SqlrUs/status/1223215058328739841?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p>I also got input from two smarties at Microsoft, <a rel="noreferrer noopener" aria-label="Oscar Zamora (opens in a new tab)" href="https://twitter.com/ZamoraO" target="_blank">Oscar Zamora</a> and <a rel="noreferrer noopener" aria-label="Amit Banerjee (opens in a new tab)" href="https://twitter.com/banerjeeamit" target="_blank">Amit Banerjee</a>. (Amit has been my hero since forever so that&#8217;s awesome, right???)</p>



<figure class="wp-block-embed-twitter wp-block-embed is-type-rich is-provider-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">What Oscar said. There are costs involved with ASR or SIOS. Make sure you factor that into your analysis. <a href="https://twitter.com/hashtag/sqlhelp?src=hash&amp;ref_src=twsrc%5Etfw">#sqlhelp</a></p>&mdash; Amit Banerjee (@banerjeeamit) <a href="https://twitter.com/banerjeeamit/status/1223273465530089473?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p>And also Dr SQL himself, <a href="https://twitter.com/GlennAlanBerry" target="_blank" rel="noreferrer noopener" aria-label="Glenn Berry (opens in a new tab)">Glenn Berry</a> chimed in &#8212; he is also a consultant and specializes in topics like high availability and performance.</p>



<figure class="wp-block-embed-twitter wp-block-embed is-type-rich is-provider-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">As others have said, Failover clustering using SIOS for the shared storage. Instance-level protection, that would be easier to maintain than DBM. <a href="https://twitter.com/hashtag/sqlhelp?src=hash&amp;ref_src=twsrc%5Etfw">#sqlhelp</a></p>&mdash; Glenn Berry (@GlennAlanBerry) <a href="https://twitter.com/GlennAlanBerry/status/1223246881980997634?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p>Other folks responded as well. It can be so useful to get multiple perspectives on a topic, and I&#8217;m continuously amazed at how helpful folks in the Microsoft Data Platform community are when they can help out with a question. </p>



<p>Thanks to everyone who helped me out!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/02/01/high-availability-options-for-sql-server-2008-in-an-azure-vm-a-sqlhelp-story/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6621</post-id>	</item>
		<item>
		<title>Do It Live! A First Look at Redgate&#8217;s Hybrid Model for SQL Source Control and SQL Change Automation (video)</title>
		<link>https://littlekendra.com/2020/01/24/do-it-live-a-first-look-at-redgates-hybrid-model-for-sql-source-control-and-sql-change-automation-video/</link>
					<comments>https://littlekendra.com/2020/01/24/do-it-live-a-first-look-at-redgates-hybrid-model-for-sql-source-control-and-sql-change-automation-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Sat, 25 Jan 2020 00:47:26 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6617</guid>

					<description><![CDATA[In this 70 minute livestream recording, I kick the tires of a fresh new Azure DevOps demo environment showing Redgate&#8217;s Hybrid Model for SQL Source Control and SQL Change Automation. I had just set up this whole demo environment and its pipelines, so the video shows me troubleshooting and fixing an option or two in...]]></description>
										<content:encoded><![CDATA[
<p> In this 70 minute livestream recording, I kick the tires of a fresh new Azure DevOps demo environment showing Redgate&#8217;s Hybrid Model for SQL  Source Control and SQL Change Automation. </p>



<p>I had <strong><em>just</em></strong> set up this whole demo environment and its  pipelines, so the video shows me troubleshooting and fixing an option or  two in Azure DevOps which I hasn&#8217;t configured quite correctly &#8212;  which makes things all the more fun for a livestream. If you want to skip watching me installing ZoomIt in the new demo environment (which I&#8217;d completely forgotten&#8211; how could I??? I can&#8217;t show things without Zoomit!) then start at around 6 minutes.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Redgate&#039;s New Hybrid Model: First Look" width="640" height="360" src="https://www.youtube.com/embed/D6cOY_k4RSU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/01/24/do-it-live-a-first-look-at-redgates-hybrid-model-for-sql-source-control-and-sql-change-automation-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6617</post-id>	</item>
		<item>
		<title>Controlling who commits code to a given database schema in Git with Azure DevOps</title>
		<link>https://littlekendra.com/2020/01/17/controlling-who-commits-code-to-a-given-database-schema-in-git-with-azure-devops/</link>
					<comments>https://littlekendra.com/2020/01/17/controlling-who-commits-code-to-a-given-database-schema-in-git-with-azure-devops/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Sat, 18 Jan 2020 00:19:20 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6614</guid>

					<description><![CDATA[One of most the fun things about working as an Advocate at Redgate is getting to help clients determine their preferred workflow for database DevOps. Teams often have unique requirements and are using different combinations of tooling, so figuring out the best way to accomplish what they need typically involves leveraging what I already know,...]]></description>
										<content:encoded><![CDATA[
<p>One of most the fun things about working as an Advocate at Redgate is getting to help clients determine their preferred workflow for database DevOps. Teams often have unique requirements and are using different combinations of tooling, so figuring out the best way to accomplish what they need typically involves leveraging what I already know, collaborating with my coworkers and the client to generate ideas, researching and prototyping solutions, and then getting feedback from everyone. </p>



<h2>This week, I&#8217;ve been thinking about a scenario which may come into play when an organization is moving away from a monolith architecture toward a microservices architecture</h2>



<p>One pattern which can enable this move is to at first increase the use of schemas within the existing large legacy database, and begin to document and understand dependencies between different parts of the codebase. Over time, the goal is to reduce dependencies and to begin to move portions of the database out from the large legacy database and into their own data stores. The schemas help clarify &#8216;ownership&#8217; of code with minimal initial impact to performance and no need for initial data movement.</p>



<h2>Part of starting to clarify &#8216;ownership&#8217; of code in schemas is to limit who commits code to objects in a given schema</h2>



<p>In other words, if team Fruitbats owns a schema which exists for the Fruitbats service, members of the Cheeseweasel team shouldn&#8217;t just go making changes to those objects. Instead, they need to talk to the Fruitbats team and discover what the best way is to accomplish what they need. At the same time, it&#8217;s valuable for team members to be able to see the code for all objects to support the existing legacy codebase.</p>



<p>I thought about a couple of different options in thinking through this, including things like using multiple projects, using a branching strategy, or figuring out some way to run checks in pre-commit hooks with Git. </p>



<h2>Here&#8217;s what I would do</h2>



<p>After consideration, the approach which I think is the simplest, but which has the most benefits, is to keep all objects in the database in a single project and use Pull Requests (PRs) with automatic reviewers to ensure the right changes are being made.</p>



<p>This is simple to set up with a combination of Azure DevOps and Redgate&#8217;s SQL Source Control tooling, because SQL Source Control uses an object&#8217;s schema name as part of the file name.</p>



<p>Here&#8217;s an overview of the setup:</p>



<ul><li>A <a rel="noreferrer noopener" aria-label="branch policy  (opens in a new tab)" href="https://docs.microsoft.com/en-us/azure/devops/repos/git/branch-policies?view=azure-devops" target="_blank">branch policy </a>protects master and requires a PR to complete a merge</li><li><a href="https://docs.microsoft.com/en-us/azure/devops/repos/git/branch-policies?view=azure-devops#automatically-include-code-reviewers">Automatic reviewers </a>are set up<ul><li>Establish a user or group with ownership over each schema, and set up a rule so that if any files in that schema are changed in a PR, the group or user is added to the PR. It can&#8217;t pass until they review it (or someone with permission to override makes it so).</li><li>Since SQL Source Control places the schema name at the beginning of file names, the filter for each schema can be as simple as something like: */fruitbats.*</li></ul></li><li>Automation can further automatically run a build of code and run tests against the code when the PR is created, which can do things like ensure that new cross-schema dependencies are not introduced</li></ul>



<p>I like this approach because while it ensures that the teams owning a schema will always be in the loop on a change, it is still flexible: there may be times when it is desirable to have a single person contribute changes to multiple schemas. This allows that without the need for permissions to be reconfigured, and it even gives a place for the owners of all those schemas to have visibility and input on the change early in the process.</p>



<h2>In other words, this was simpler than I thought</h2>



<p>The approach here can be a simple modification to an implementation of the <a rel="noreferrer noopener" aria-label="Azure DevOps Release Flow branching strategy (opens in a new tab)" href="https://littlekendra.com/2020/01/10/why-i-like-the-release-flow-branching-strategy-with-git-for-database-devops/" target="_blank">Azure DevOps Release Flow branching strategy</a> I wrote about last week &#8212; it&#8217;s a way to use feature branches with automatic reviewers. While there are certainly other ways to solve this problem, this workflow fits many teams and is also quite simple to implement and maintain.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/01/17/controlling-who-commits-code-to-a-given-database-schema-in-git-with-azure-devops/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6614</post-id>	</item>
		<item>
		<title>Why I like the &#8216;Release Flow&#8217; branching strategy with Git for database DevOps</title>
		<link>https://littlekendra.com/2020/01/10/why-i-like-the-release-flow-branching-strategy-with-git-for-database-devops/</link>
					<comments>https://littlekendra.com/2020/01/10/why-i-like-the-release-flow-branching-strategy-with-git-for-database-devops/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Sat, 11 Jan 2020 01:46:48 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6611</guid>

					<description><![CDATA[When people begin applying DevOps principles to database development using Redgate tooling, often one of the first steps in the process involves getting database code into version control. Questions naturally come up about how to manage the flow of changes to database objects from development into production once changes begin occurring. When using Git for...]]></description>
										<content:encoded><![CDATA[
<p>When people begin applying <a rel="noreferrer noopener" aria-label="DevOps (opens in a new tab)" href="http://www.donovanbrown.com/post/what-is-devops" target="_blank">DevOps</a> principles to database development using Redgate tooling, often one of the first steps in the process involves getting database code into version control. Questions naturally come up about how to manage the flow of changes to database objects from development into production once changes begin occurring. </p>



<p>When using Git for version control, <a rel="noreferrer noopener" aria-label="branches (opens in a new tab)" href="https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell" target="_blank">branches</a> are a huge help when it comes to managing this flow. </p>



<p>But how do you use branches? It&#8217;s helpful to pick a strategy. There are <em>many</em> fine Git branching strategies out there, things like GitFlow and GitHub Flow and more &#8212; enough that it&#8217;s overwhelming to learn about these when you are just starting out. </p>



<p>The strategy that I recommend for folks who are starting out with database DevOps and Git is the <a rel="noreferrer noopener" aria-label="Azure DevOps team Release Flow model (opens in a new tab)" href="https://docs.microsoft.com/en-us/azure/devops/learn/devops-at-microsoft/release-flow" target="_blank">Azure DevOps team Release Flow model</a> with dedicated development databases. (Why dedicated development databases? <a rel="noreferrer noopener" aria-label="Read more here (opens in a new tab)" href="https://www.troyhunt.com/unnecessary-evil-of-shared-development/" target="_blank">Read more here</a>.)</p>



<h2>Why the Azure DevOps Release Flow model fits databases well</h2>



<ul><li>Topic / feature branches provide a place for experimentation</li><li>Pull requests provide communication, feedback, and review &#8212; a prime collaboration point for developers and DBAs for many teams</li><li>Code can be merged into the main code line without being deployed automatically (for databases, where rollbacks are often anything <em>but</em> straightforward, immediate deployment isn&#8217;t always grand)</li><li>Releasing at sprint milestones using a branch created for deployment often makes the most sense</li></ul>



<p>Further, the release flow model can support both small and large teams.</p>



<h2>Look! I drew a picture</h2>



<figure class="wp-block-image size-large"><img loading="lazy" width="830" height="463" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/01/image.png?resize=830%2C463&#038;ssl=1" alt="" class="wp-image-6612" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/01/image.png?w=830&amp;ssl=1 830w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/01/image.png?resize=300%2C167&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/01/image.png?resize=768%2C428&amp;ssl=1 768w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2020/01/image.png?resize=560%2C312&amp;ssl=1 560w" sizes="(max-width: 830px) 100vw, 830px" data-recalc-dims="1" /></figure>



<h2>There are absolutely exceptions where other models make sense</h2>



<p>For instance, for those who have implemented a microservices model with robust automated testing in place, it may be more suitable to do something like a modification of the GitHub flow branching strategy. </p>



<p>But that&#8217;s not the case for most folks &#8212; most folks have databases which are more complex, with cross-database queries and downstream dependencies galore. For these more ordinary databases, the Azure DevOps Release Flow model is a really great place to begin.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/01/10/why-i-like-the-release-flow-branching-strategy-with-git-for-database-devops/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6611</post-id>	</item>
		<item>
		<title>Why I’m Learning Git via the Command Line Interface</title>
		<link>https://littlekendra.com/2020/01/03/why-im-learning-git-via-the-command-line-interface/</link>
					<comments>https://littlekendra.com/2020/01/03/why-im-learning-git-via-the-command-line-interface/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 03 Jan 2020 16:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6607</guid>

					<description><![CDATA[I’ve learned a bit about Git in the last year: I’m now quite comfortable creating and managing Git Repos in Azure DevOps. I frequently do demos with SQL Change Automation and&#160; SQL Source control with Git on Redgate’s YouTube channel, and I’ve published a Git Cheat Sheet for the Command Line Interface. I love learning...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright size-large is-resized"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/01/Git-Icon-1788C.png?resize=192%2C192&#038;ssl=1" alt="" class="wp-image-6608" width="192" height="192" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/01/Git-Icon-1788C.png?w=383&amp;ssl=1 383w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/01/Git-Icon-1788C.png?resize=300%2C300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/01/Git-Icon-1788C.png?resize=150%2C150&amp;ssl=1 150w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2020/01/Git-Icon-1788C.png?resize=350%2C350&amp;ssl=1 350w" sizes="(max-width: 192px) 100vw, 192px" data-recalc-dims="1" /></figure></div>



<p>I’ve learned a bit about Git in the last year: I’m now quite
comfortable creating and managing Git Repos in Azure DevOps. I frequently do
demos with SQL Change Automation and&nbsp; SQL
Source control with Git on <a href="https://www.youtube.com/playlist?list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc">Redgate’s
YouTube channel</a>, and <a href="https://littlekendra.com/2019/11/27/my-git-cli-cheat-sheet/">I’ve published
a Git Cheat Sheet for the Command Line Interface</a>. </p>



<p>I love learning Git now: I’m very comfortable with a small
set of core commands which empower me to get a lot done and I’m able to regularly
add new bits of knowledge into my repertoire.</p>



<p>I was interested in learning Git before, and I tried and
failed to get started learning more than once. Each time, part of the problem
was that I tried to use graphical tooling which I thought would make the whole
thing simpler, but which I found to be difficult to start using – and also
prone to quickly getting me into complex situations which I didn’t understand.</p>



<p>A big differentiator to me finally learning Git was
embracing the built-in command line interface (CLI).</p>



<p>While command line interfaces are often harder to learn than
graphical tools, in Git’s case I feel that it’s the opposite: the CLI helps you
learn and focus. Here’s why:</p>



<ul><li><strong>You don’t need a lot</strong>: You mainly need to
learn five or six simple, core operations which you will use 90% of the time –
for everything else you’re generally going to use search engines and forum
entries to figure it out case by case, anyway</li><li><strong>It helps you learn</strong>: Mis-type a command? It
will list commands spelled similarly.</li><li><strong>Simple add-ins take away the toil</strong>: &nbsp;Most of the pains I’ve had with Git have had
to do with forgetting my current branch context, or not wanting to type out a
whole command – add-ins like <a href="https://github.com/dahlbyk/posh-git">posh-git</a>
quickly solve these problems and let me have a simple-but-easy experience</li></ul>



<p>There is still a case when I’m happy to depart from the
command line: when it comes to merge conflicts, I’m all about having a graphic
tool to help me sort out the mess. I’m a long-time fan of the editor Sublime
Text, so I’ve recently been happily working with <a href="https://www.sublimemerge.com/">Sublime Merge</a> (which allows you to try
it out for free).</p>



<p>But for everything else Git, I love learning with the CLI.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2020/01/03/why-im-learning-git-via-the-command-line-interface/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6607</post-id>	</item>
		<item>
		<title>Resolving Merge Conflicts in SQL Source Control &#8211; the Basics (video)</title>
		<link>https://littlekendra.com/2019/12/27/resolving-merge-conflicts-in-sql-source-control-the-basics-video/</link>
					<comments>https://littlekendra.com/2019/12/27/resolving-merge-conflicts-in-sql-source-control-the-basics-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 27 Dec 2019 22:50:14 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6604</guid>

					<description><![CDATA[In this 35 minute livestream recording, I commit conflicting code to a Git repo in Azure DevOps Services using Redgate&#8217;s SQL Source Control, then step through options to fix the conflict. We first run through an example where we hit a conflict when pushing to the master branch and resolve that. Then we run through...]]></description>
										<content:encoded><![CDATA[
<p>In this 35 minute livestream recording, I commit conflicting code to a Git  repo in Azure DevOps Services using Redgate&#8217;s SQL Source Control, then  step through options to fix the conflict. We first run through an  example where we hit a conflict when pushing to the master branch and  resolve that. Then we run through an example where we are using a  feature branch and identify the conflict when doing a pull request to  merge the change into master. </p>



<p>To follow along with this demo yourself&#8230;</p>



<ul><li>SQL Source Control is part of Redgate&#8217;s <a rel="noreferrer noopener" aria-label="SQL Toolbelt (opens in a new tab)" href="https://www.red-gate.com/products/sql-development/sql-toolbelt/" target="_blank">SQL Toolbelt</a>. It is not free, but we have a free trial. If  you don&#8217;t need automated build and deployments,  you can also <a rel="noreferrer noopener" aria-label="purchase SQL Source Control individually (opens in a new tab)" href="https://www.red-gate.com/products/sql-development/sql-source-control/" target="_blank">purchase SQL Source Control individually</a>.</li><li>The Northwind database is  <a rel="noreferrer noopener" aria-label="shared by Microsoft under the MIT License on GitHub (opens in a new tab)" href="https://github.com/microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs" target="_blank">shared by Microsoft under the MIT License on GitHub</a></li><li>I use the Sublime Merge editor in this demo to resolve the conflict. You  can try that out for free at  <a href="https://www.sublimemerge.com/" target="_blank" rel="noreferrer noopener" aria-label="https://www.sublimemerge.com (opens in a new tab)">https://www.sublimemerge.com</a></li></ul>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Resolving Merge Conflicts in SQL Source Control - the Basics" width="640" height="360" src="https://www.youtube.com/embed/Lav4WfxUK_A?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/12/27/resolving-merge-conflicts-in-sql-source-control-the-basics-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6604</post-id>	</item>
		<item>
		<title>Why You Should Take the 2020 State of Database DevOps Survey today (video)</title>
		<link>https://littlekendra.com/2019/12/19/why-you-should-take-the-2020-state-of-database-devops-survey-today-video/</link>
					<comments>https://littlekendra.com/2019/12/19/why-you-should-take-the-2020-state-of-database-devops-survey-today-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 19 Dec 2019 17:48:31 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6602</guid>

					<description><![CDATA[In this six minute video, I explain why you should take the 2020 State of Database DevOps Survey. The survey is open for a few more days &#8212; we&#8217;ve had a record number of responses, but we want YOUR input as well! Take the survey at Redgate.com/DevOpsSurvey.]]></description>
										<content:encoded><![CDATA[
<p>In this six minute video, I explain why you should take the 2020 State of Database DevOps Survey. The survey is open for a few more days &#8212; we&#8217;ve had a record number of responses, but we want YOUR input as well! </p>



<p>Take the survey at <a rel="noreferrer noopener" aria-label="Redgate.com/DevOpsSurvey (opens in a new tab)" href="https://youtu.be/MmCKbKxvhyM" target="_blank">Redgate.com/DevOpsSurvey</a>.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Take the 2020 State of Database DevOps Survey Today" width="640" height="360" src="https://www.youtube.com/embed/MmCKbKxvhyM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/12/19/why-you-should-take-the-2020-state-of-database-devops-survey-today-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6602</post-id>	</item>
		<item>
		<title>Database Reliability Engineering (22 minute video)</title>
		<link>https://littlekendra.com/2019/12/18/database-reliability-engineering-22-minute-video/</link>
					<comments>https://littlekendra.com/2019/12/18/database-reliability-engineering-22-minute-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 18 Dec 2019 16:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6600</guid>

					<description><![CDATA[I was fascinated yesterday to come across the term, &#8220;Database Reliability Engineering,&#8221; which I hadn&#8217;t seen before. In this 22 minute whiteboarding session, I talk about why we need new terms for &#8220;Database Administration,&#8221; and my initial understanding of what Database Reliability Engineering means by comparison.]]></description>
										<content:encoded><![CDATA[
<p>I was fascinated yesterday to come across the term, &#8220;Database Reliability Engineering,&#8221; which I hadn&#8217;t seen before. In this 22 minute whiteboarding session, I talk about why we need new terms for &#8220;Database Administration,&#8221; and my initial understanding of what Database Reliability Engineering means by comparison.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Database Reliability Engineering" width="640" height="360" src="https://www.youtube.com/embed/xNAB_TGCpws?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/12/18/database-reliability-engineering-22-minute-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6600</post-id>	</item>
		<item>
		<title>Online, Resumable, and WAIT_AT_LOW_PRIORITY operations in SQL Server</title>
		<link>https://littlekendra.com/2019/12/09/online-resumable-and-wait_at_low_priority-operations-in-sql-server/</link>
					<comments>https://littlekendra.com/2019/12/09/online-resumable-and-wait_at_low_priority-operations-in-sql-server/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 10 Dec 2019 04:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6591</guid>

					<description><![CDATA[ONLINE operations in SQL Server were simple to understand for years &#8212; we got ONLINE index rebuilds in SQL Server 2005. That was it for a while. Then, things got more complicated: we got more types of indexes. We got ONLINE options for schema changes that don&#8217;t involve indexes. We got more options for managing...]]></description>
										<content:encoded><![CDATA[
<p>ONLINE operations in SQL Server were simple to understand for years &#8212; we got ONLINE index rebuilds in SQL Server 2005. That was it for a while. Then, things got more complicated: we got more types of indexes. We got ONLINE options for schema changes that don&#8217;t involve indexes. We got more options for managing things like blocking, because online operations are really only <em>mostly</em> online &#8212; generally there&#8217;s going to be at least a short period where an exclusive lock is needed to update metadata. We now have some RESUMABLE operations coming in, too, for those big operations that are tough to handle.</p>



<p>Along the way, I fell behind. Because these features have steadily come out over a period of time, my brain simply didn&#8217;t register them all, or possibly I missed seeing them amid other announcements. </p>



<p>Having realized this, I did a little inventory: here&#8217;s my rundown of what I understand to be the current state of ONLINE options. Please feel free to add notes in the comments if I&#8217;ve missed things, and I&#8217;ll update the post accordingly. And I admit, in researching this post, I didn&#8217;t spend time looking at In-Memory OLTP tables &#8230; they come up so rarely that I didn&#8217;t go there.</p>



<h2>ALTER TABLE ALTER COLUMN ONLINE (Disk-based rowstore)</h2>



<p>Usage: most often changing nullability or data type. This is slow against large tables, because we&#8217;ve got to go rewrite all those rows and hold locks while we do it.</p>



<ul><li>ONLINE options in Azure SQL DB, SQL Server 2016 +</li><li><a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-ver15">Documentation</a> lists the limitations and impacts (search for &#8220;as applies to altering a column&#8221; to find it in the page)</li><li><em>Note: there are no WAIT_AT_LOW_PRIORITY or RESUMABLE options for  ALTER COLUMN ONLINE</em></li></ul>



<h2>ALTER TABLE ADD COLUMN (Disk-based rowstore)</h2>



<p>Usage: commonly done operation in routine software development when adding a new feature. This can be extremely slow when adding a non-nullable column with a default value, read about that in the link below.</p>



<ul><li>There is an Enterprise Edition feature for adding a non-nullable column with a default value in  SQL Server 2012+</li><li><a rel="noreferrer noopener" href="https://rusanu.com/2011/07/13/online-non-null-with-values-column-add-in-sql-server-11/" target="_blank">Read about it from Remus Rusanu</a></li><li><em>Note: this does not require or allow the use of ONLINE in the syntax. This is particularly tricky because it occurs in Developer Edition and doesn&#8217;t occur in Standard Edition</em> <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f915.png" alt="🤕" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul>



<p>By the way, if you want to nerd out on what happens behind the scenes when you add or modify various types of columns, Remus has <a rel="noreferrer noopener" aria-label="another excellent post on that topic (opens in a new tab)" href="http://rusanu.com/2011/10/20/sql-server-table-columns-under-the-hood/" target="_blank">another excellent post on that topic</a>.</p>



<h2>CREATE INDEX ONLINE (Disk-based rowstore)</h2>



<p>Usage: index creation is a common operation for both new features and performance tuning.</p>



<ul><li>ONLINE options in Azure SQL DB, SQL Server 2005+ (Enterprise Edition required)</li><li><a rel="noreferrer noopener" aria-label="Documentation (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/t-sql/statements/create-index-transact-sql?view=sql-server-ver15#online-option" target="_blank">Documentation</a> lists the limitations</li><li>RESUMABLE added in SQL Server 2019</li><li><em>Note: there is no WAIT_AT_LOW_PRIORITY option for CREATE INDEX</em></li></ul>



<h2>DROP INDEX ONLINE (Disk-based rowstore, clustered indexes only)</h2>



<p>Usage: I am very hesitant to recommend this. I am mentioning it here to explain why it is probably not your friend and your attempt to do something ONLINE could end up in a world of regret with a full transaction log.</p>



<ul><li>ONLINE options in Azure SQL DB, SQL Server 2008+</li><li>From the  <a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/drop-index-transact-sql?view=sql-server-ver15">documentation:</a>  “When a clustered index is dropped OFFLINE, only the upper levels of clustered indexes are removed; therefore, the operation is quite fast. When a clustered index is dropped ONLINE, SQL Server rebuilds the heap two times, once for step 1 and once for step 2.” </li><li>But wait, there&#8217;s more you should  know: because nonclustered rowstore indexes use the clustering key as part of their own definition, this also causes rebuilds of all nonclustered indexes on the table – this can accidentally use a TON of space. </li><li>If  you need to drop a clustered index, generally this pattern is the best bet:<ul><li>Drop or disable all nonclustered indexes (monitor for blocking, but a  fast operation otherwise )</li></ul><ul><li>Drop the clustered OFFLINE (monitor for blocking, but a  fast operation otherwise)</li></ul><ul><li>Create new clustered if desired (potentially with ONLINE option)</li></ul><ul><li>Create or rebuild all nonclustered indexes (potentially with ONLINE option)</li></ul></li></ul>



<p>If you find a situation where you want to use this, I recommend testing very carefully with a production-like data set before unleashing it on your database.  </p>



<h2>ALTER TABLE DROP CONSTRAINT ONLINE (Disk-based rowstore)</h2>



<p> Similar to the DROP INDEX for clustered indexes, this works with indexes created by constraints. Since Clustered Primary Keys are implemented with constraints, this basically allows you to do the clustered index drop mentioned above for a clustered PK.</p>



<h2>CREATE COLUMNSTORE INDEX ONLINE</h2>



<p>Usage: columnstore index creation is increasingly common, as mixed workloads / reporting off of transactional databases is in high demand and far more viable from a software and hardware standpoint than it used to be.</p>



<ul><li>ONLINE option for Nonclustered Columnstore in Azure SQL Db, SQL Server 2017+</li><li>ONLINE option for Clustered Columnstore in Azure SQL Db, SQL Server 2019+</li><li><a href="https://docs.microsoft.com/en-us/sql/t-sql/statements/create-columnstore-index-transact-sql?view=sql-server-ver15#arguments">Documentation</a></li><li><em>Note: there are no WAIT_AT_LOW_PRIORITY or RESUMABLE options for CREATE COLUMNSTORE INDEX</em></li></ul>



<h2>ALTER INDEX ONLINE (Disk-based rowstore)</h2>



<p>Usage: commonly used to defragment indexes during maintenance operations, sometimes used to adjust fill factor and other index settings</p>



<ul><li>ONLINE options for rowstore in Azure SQL DB, SQL Server 2005+ (Enterprise Edition required for ONLINE rebuilds. Note that REORGANIZE is an online operation and doesn&#8217;t require Enterprise Edition, or the ONLINE keyword, however.)</li><li><a rel="noreferrer noopener" href="https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-index-transact-sql?view=sql-server-ver15#online-index-operations" target="_blank">Documenation</a></li><li>ALTER index is used for maintenance and for things like changing properties such as data compression, fill factor, and index padding</li><li>WAIT_AT_LOW_PRIORITY in SQL Server 2014+ (using it requires ONLINE=ON)</li><li>RESUMABLE = ON in SQL Server 2017_</li><li>Single-partition ONLINE rebuild in SQL Server 2014+ (prior to that online rebuilds for partitioned indexes is only available for all partitions)</li></ul>



<h2>ALTER INDEX (columnstore indexes) &#8211;<em> online by another name</em></h2>



<p>Usage: maintenance operations (some details in the text below)</p>



<ul><li><a rel="noreferrer noopener" aria-label="Documentation (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-index-transact-sql?view=sql-server-ver15#examples-columnstore-indexes" target="_blank">Documentation</a></li><li>&#8220;Starting with SQL Server 2016 (13.x), rebuilding a columnstore index is no longer necessary in most situations since REORGANIZE physically removes deleted rows and merges rowgroups. The COMPRESS_ALL_ROW_GROUPS option forces all OPEN or CLOSED delta rowgroups into the columnstore which previously could only be done with a rebuild. REORGANIZE is online and occurs in the background so queries can continue as the operation happens.&#8221;</li><li>In other words, for most purposes for columnstore in 2016+, use REORGANIZE when you want REBUILD ONLINE <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f643.png" alt="🙃" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul>



<h2>ALTER TABLE SWITCH PARTITION  &#8211; ONLINE<em>ESQUE</em></h2>



<p>Usage: loading new data or removing data in &#8220;sliding window&#8221; scenarios</p>



<ul><li>WAIT_AT_LOW_PRIORITY in Azure SQL DB, SQL Server 2014+</li><li><a rel="noreferrer noopener" aria-label="Documentation (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-ver15#arguments" target="_blank">Documentation</a> (search for &#8220;switch&#8221;)</li><li>Note: this technically doesn&#8217;t have the ONLINE keyword, but the WAIT_AT_LOW_PRIORITY option makes it online-ish (or at least less offline, if that&#8217;s a thing)</li></ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/12/09/online-resumable-and-wait_at_low_priority-operations-in-sql-server/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6591</post-id>	</item>
		<item>
		<title>What would you say you do here?</title>
		<link>https://littlekendra.com/2019/12/09/what-exactly-would-you-say-you-do-around-here/</link>
					<comments>https://littlekendra.com/2019/12/09/what-exactly-would-you-say-you-do-around-here/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 09 Dec 2019 16:00:00 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6575</guid>

					<description><![CDATA[The other day, I was looking back at an excellent blog post my colleague Jamie Wallis wrote about what Product Marketing Managers do at Redgate. I really like the chart he created which explains how Product Marketing Managers work with Product Managers &#8212; what each role focuses on, and where they collaborate. I realized that...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img src="https://i2.wp.com/gifimage.net/wp-content/uploads/2018/06/what-would-you-say-you-do-here-gif-5.gif?w=1200&#038;ssl=1" alt="Image result for what exactly would you say you do around here  gif" data-recalc-dims="1"/></figure></div>



<p>The other day, I was looking back at an excellent blog post my colleague Jamie Wallis wrote about what <a rel="noreferrer noopener" aria-label="Product Marketing Managers do at Redgate (opens in a new tab)" href="https://www.red-gate.com/blog/working/why-redgate-has-product-marketing-managers-and-product-managers" target="_blank">Product Marketing Managers do at Redgate</a>. I really like the chart he created which explains how Product Marketing Managers work with Product Managers &#8212; what each role focuses on, and where they collaborate.</p>



<p>I realized that my own role as an Advocate can also be hard to understand. I did a podcast <a rel="noreferrer noopener" aria-label="episode a while back on the topic (opens in a new tab)" href="https://sqlworkbooks.com/2019/01/what-a-software-evangelist-does-and-where-the-job-is-going-dear-sql-dba-episode-67/" target="_blank">episode a while back on the topic</a> &#8212; at the time, my role was called &#8220;Evangelism&#8221; rather than &#8220;Advocacy&#8221; &#8212; but I don&#8217;t expect my colleagues to listen to a podcast to figure out what value I can provide.</p>



<h2>Why does it matter if people know what you do?</h2>



<p>I work in a very collaborative role, but I&#8217;m not special: all roles which work with databases are increasingly collaborative. Even if you act more as a service provider than a partner for a group, it is very beneficial for <em>you</em> to help important groups in your business understand the value you provide to the organization.  Taking the time to do this helps build your relationships with others:</p>



<ul><li>They have a way to understand your team&#8217;s mission and strategy (rather than guessing based on assumptions or scattered interactions)</li><li>They can see how to best make use of your time</li><li>They have a better understanding of the value you provide to the larger organization &#8212; and that will benefit you whenever they talk about your group to others in the company. They will automatically help you connect with others and provide more value.</li></ul>



<p>There&#8217;s another hidden benefit of writing this out. It may remind you that your job is a little bit cooler and more important than  you realize, by helping you see the big picture.</p>



<h2>Here&#8217;s an example for my role at Redgate</h2>



<p>I asked Jamie if I could borrow and the diagram which he used in his post. He was happy for me to use it. One of the key partnerships that I have at work is with Redgate&#8217;s sales team, so I thought specifically of how I work with them when creating this first draft at outlining what I do, and how I can help them. </p>



<p>In this case, the sales team is my audience for explaining how I work, so I didn&#8217;t need to outline what <em>they</em> do as much as I needed to outline what <em>I</em> do on my own, and in collaboration with their group. </p>



<figure class="wp-block-image size-large"><img loading="lazy" width="758" height="636" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/11/image-2.png?resize=758%2C636&#038;ssl=1" alt="" class="wp-image-6580" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/11/image-2.png?w=758&amp;ssl=1 758w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/11/image-2.png?resize=300%2C252&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/11/image-2.png?resize=560%2C470&amp;ssl=1 560w" sizes="(max-width: 758px) 100vw, 758px" data-recalc-dims="1" /></figure>



<h2>OK, I made it, how do I share it? </h2>



<p>There&#8217;s a few way to share things like this which can help:</p>



<ul><li>If you work in a physical office, print it and post it!</li><li>Share with new colleagues when they join your organization to help them get oriented</li><li>Add to slide decks in regular meetings to help introduce your team (even if you don&#8217;t spend time on the slide life, it can be a useful reference in shared PDFs)</li></ul>



<h2>By the way, I&#8217;m not a team lead</h2>



<p>I&#8217;m not &#8220;in charge&#8221; of much of anything but myself these days &#8212; and I&#8217;m totally OK with that. (Managing other people is hard work!) I still went to the trouble to make this diagram. I&#8217;ve shared this with my team for input. I also shared this with my manager and let her know how I&#8217;d like to use this internally with our sales teams to help them understand our role (especially new folks coming on board, but also people whom I just haven&#8217;t worked with as much yet). </p>



<p>Earlier in my career, I tended to see activities like this as something that a team lead or manager would do. I didn&#8217;t really see it as my business. </p>



<p>Now, I have changed, and the world has changed a bit, too. It&#8217;s really everyone&#8217;s business to identify opportunities like this to represent your work a little better. Whenever you find a chance to do something to help connect to your colleagues and customers more clearly, it&#8217;s worth mapping out a little time to take care of that task yourself!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/12/09/what-exactly-would-you-say-you-do-around-here/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6575</post-id>	</item>
		<item>
		<title>Installing Redgate SQL Toolbelt with Chocolatey (video with transcript)</title>
		<link>https://littlekendra.com/2019/12/02/installing-redgate-sql-toolbelt-with-chocolatey/</link>
					<comments>https://littlekendra.com/2019/12/02/installing-redgate-sql-toolbelt-with-chocolatey/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 02 Dec 2019 18:58:14 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6587</guid>

					<description><![CDATA[Chocolatey is a package manager that helps you install, upgrade, and uninstall packages (applications) on Windows quickly and easily from the command line. Spoilers: The command I show in the video is simply: choco install sqltoolbelt Fun fact, you can also upgrade: choco upgrade sqltoolbelt And uninstall: choco uninstall sqltoolbelt The rest of the 6.5...]]></description>
										<content:encoded><![CDATA[
<p> Chocolatey is a package manager that helps you install, upgrade, and uninstall packages (applications) on Windows quickly and easily from the command  line.</p>



<p>Spoilers: </p>



<ul><li>The command I show in the video is simply:  <strong>choco install sqltoolbelt</strong> </li><li>Fun fact, you can also upgrade: <strong>choco upgrade sqltoolbelt</strong></li><li>And uninstall: <strong>choco uninstall sqltoolbelt</strong></li></ul>



<p>The rest of the 6.5 minutes is about related tools you may want to install, and why this is all needed.</p>



<h2>Links from the video &#8212; check these out while you watch</h2>



<ul><li><a href="https://chocolatey.org/products#foss" target="_blank" rel="noreferrer noopener" aria-label="https://chocolatey.org/products#foss (opens in a new tab)">https://chocolatey.org/products#foss</a></li><li><a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://chocolatey.org/packages/SqlToolbelt" target="_blank">https://chocolatey.org/packages/SqlToolbelt </a></li></ul>



<p>Gists with sample commands for useful installs for Microsoft Data Platform database folks: </p>



<ul><li><a rel="noreferrer noopener" aria-label="Aaron Nelson's List (opens in a new tab)" href="https://gist.github.com/SQLvariant/d29ffd1e9905992318b4585c83399328" target="_blank">Aaron Nelson&#8217;s List</a></li><li><a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://gist.github.com/LitKnd/93d02119cb10cef6992fd1bcddbdc73a" target="_blank">Kendra&#8217;s List</a> (forked from  Aaron&#8217;s to track my own preferences)</li><li><a href="https://gist.github.com/SQLDBAWithABeard/8aaf68a5a2ee7ce2bd900b66c8834a25" target="_blank" rel="noreferrer noopener" aria-label="Rob Sewell's List (opens in a new tab)">Rob Sewell&#8217;s List</a></li></ul>



<h2>Video explaining Chocolatey and showing how to install SQL Toolbelt (6.5 minutes)</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Installing SQL Toolbelt with Chocolatey" width="640" height="360" src="https://www.youtube.com/embed/WUNoUUfYEQ8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2>Transcript</h2>



<p>Hello and welcome to this live stream episode.</p>



<p>My name is Kendra Little and I am a DevOps Advocate at Redgate. </p>



<p>Today I&#8217;m going to show you something that is a little bit life-changing for me. I have been setting up a new desktop and I&#8217;ve got a lot of apps to install, including things like Redgate SQL Toolbelt.</p>



<p>I remembered that I heard recently from my school my teammate Grant Fritchey, who&#8217;d heard from Steve Jones (also on our team) that when you&#8217;re setting up Windows the Chocolatey package manager can save you a bunch of time. I&#8217;d used Chocolatey briefly for setting up some tooling given out by our dev team for some cool preview stuff we&#8217;re doing, but I hadn&#8217;t really thought about the fact that it could save me a ton of time setting up Windows desktop apps. And it totally can.</p>



<p>So I want to show you a little bit about using Chocolatey to set up SQL Toolbelt. </p>



<p>So far today I have&#8211; just using the command line&#8211; installed SQL Server Management Studio, Azure Data Studio, Azure Data Studio PowerShell. All of the stuff you see on here, I have just installed using the command line. </p>



<p>I&#8217;ve even be able been able to customize installation. For example, I like to put the Sysinternals tools &#8212; these are tools like ZoomIt, Process Explorer, and Process Manager from the Sysinternals team at Microsoft&#8212; I like to put these in a custom folder. It&#8217;s where I always put it. I can actually pass in a parameter for that! </p>



<h3>Sample commands for Chocolatey installs for SQL Server DBAs &#8211; some lists!</h3>



<p>So these are a lot of the commands that I like to use: <a href="https://gist.github.com/LitKnd/93d02119cb10cef6992fd1bcddbdc73a">https://gist.github.com/LitKnd/93d02119cb10cef6992fd1bcddbdc73a</a> </p>



<p>I forked this off <a rel="noreferrer noopener" aria-label="a really useful gist from Aaron Nelson (opens in a new tab)" href="https://gist.github.com/SQLvariant/d29ffd1e9905992318b4585c83399328" target="_blank">a really useful gist from Aaron Nelson</a> who has his favorite things to install with Chocolatey, too. </p>



<p>You can check out the things that Aaron likes to install, you can check out the things that I like to install. </p>



<p>All I did was I create a fork from Aaron so I could customize mine. </p>



<h2>How to install Redgate SQL Toolbelt with Chocolatey</h2>



<p>I just uninstalled SQL Toolbelt (before we started). Chocolatey is a package manager and it&#8217;ll help you both install packages and uninstall them.</p>



<p> Now I&#8217;m going to change my command to: <strong>choco install sqltoolbelt</strong></p>



<p>This saves you so much time installing packages&#8211; because look it&#8217;s going out, it&#8217;s finding the latest version of the Installer, grabbing it for you, and then starting to run it for you. </p>



<p>Part of the magic here is that you have your list that you can maintain in something like a gist or source control, so you don&#8217;t even have to remember what all of the things are that you want to install every time. Then you can simply paste them in. </p>



<p>Then also you don&#8217;t have to step through all of the wizards. You don&#8217;t have to download them to directory, click Next Next Next Next finish. You will notice that for some things, like SQL Toolbelt it will pop up a window (an unattended install window) for you&#8212; it&#8217;ll let you know how it&#8217;s going. It really depends on how the Installer is written as to how that happens.</p>



<p>Certain things may take a little bit of time&#8211; like everything else it can take some time&#8211; but this really takes all the work out of it. You can just get it going, start working through your email for the day, or maybe figure out how you&#8217;re going to configure your livestream on your new computer and just have everything set up unattended in the background.</p>



<p>I&#8217;m really excited for this brave new world. I never thought I would see the day where with Windows it was this easy. We can see over here that SQL Toolbelt has been installed successfully. Freya and I can now move on and get going with our day. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/12/02/installing-redgate-sql-toolbelt-with-chocolatey/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6587</post-id>	</item>
		<item>
		<title>My Git CLI Cheat Sheet</title>
		<link>https://littlekendra.com/2019/11/27/my-git-cli-cheat-sheet/</link>
					<comments>https://littlekendra.com/2019/11/27/my-git-cli-cheat-sheet/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 27 Nov 2019 19:55:43 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6585</guid>

					<description><![CDATA[I created a cheat sheet for the Git Command Line Interface to go along with my Git tutorial for SQL Change Automation video. I find the Git CLI to be very friendly and easier to learn than a GUI interface. Setup Download git CLI: https://git-scm.com/downloads git clone &#60;url&#62; Clone a remote repo (maybe an empty...]]></description>
										<content:encoded><![CDATA[
<p>I created a cheat sheet for the Git Command Line Interface to go along with my <a rel="noreferrer noopener" aria-label="Git tutorial for SQL Change Automation video (opens in a new tab)" href="https://www.youtube.com/watch?v=8BQZuWRw43o" target="_blank">Git tutorial for SQL Change Automation video</a>. I find the Git CLI to be very friendly and easier to learn than a GUI interface.</p>



<h2>Setup</h2>



<p>Download git CLI: <a href="https://git-scm.com/downloads">https://git-scm.com/downloads</a></p>



<p><strong>git clone &lt;url&gt;</strong></p>



<p>Clone
a remote repo (maybe an empty one) into your local directory. <a href="https://git-scm.com/docs/git-clone">Ref</a>. </p>



<p><strong>git init</strong></p>



<p>If not cloning, you might initialize a fresh repo locally.
<a href="https://git-scm.com/docs/git-init">Ref</a>.</p>



<p>.gitignore file</p>



<ul><li>I often show people how to use Git with Redgate&#8217;s SQL Change Automation. For that tool, you can download and unzip the .gitignore file to the folder where your .sqlproj file lives: <a href="https://documentation.red-gate.com/display/sca4/Version+control">https://documentation.red-gate.com/display/sca4/Version+control</a>. </li><li>Another great resource for figuring out what to ignore is <a href="http://gitignore.io/">http://gitignore.io/</a> </li></ul>



<h2>Essentials</h2>



<p><strong>git status</strong></p>



<p>Lists modified or added files, with status as to whether
they are staged. <a href="https://git-scm.com/docs/git-status">Ref</a>.</p>



<p><strong>git add . </strong></p>



<p>Stages all modified or added files. You must stage before
you commit. <a href="https://git-scm.com/docs/git-add">Ref</a>.</p>



<p>If you want to unstage everything: <strong>git reset&nbsp; </strong><a href="https://git-scm.com/docs/git-reset">Ref</a>.</p>



<p><strong>git commit -m “this is my meaningful message”</strong></p>



<p>Commits staged files. <a href="https://git-scm.com/docs/git-commit">Ref</a>.</p>



<p><strong>git push</strong></p>



<p>Pushes staged files to remote repo. If upstream branch
doesn’t exist, git CLI prints syntax to push to upstream branch with same name
as your local branch: simply copy and paste! <a href="https://git-scm.com/docs/git-push">Ref</a>.</p>



<p><strong>git pull</strong></p>



<p>Fetches from remote and updates current branch. If using
feature branches, remember to checkout master and pull after you merge a Pull
Request on the upstream repo. <a href="https://git-scm.com/docs/git-pull">Ref</a>.</p>



<h2>Branching</h2>



<p><strong>git checkout -b features/mynewfeaturename</strong></p>



<p>Switches to a newly created branch (the -b tells it to create a new branch. In Azure DevOps (and some other systems), the &#8220;/&#8221; means that this branch will be logically grouped into a features &#8220;folder-like-thing&#8221; and the branch will be named mynewfeaturename. <a href="https://git-scm.com/docs/git-checkout">Ref</a>.</p>



<p><strong>git
merge master</strong></p>



<p>Merges the contents of another branch (in this case, it’s
master)into your current branch. <a href="https://git-scm.com/docs/git-merge">Ref</a>.</p>



<p><strong>git checkout master</strong></p>



<p>Switches to existing branch named master (trunk). <a href="https://git-scm.com/docs/git-checkout">Ref</a>.</p>



<p><strong>git branch</strong></p>



<p>Lists all local branches. <a href="https://git-scm.com/docs/git-branch">Ref</a>.</p>



<p><strong>git branch -d features/mynewfeaturename</strong></p>



<p>Deletes local branch features/mynewfeaturename. Only works
if you are not in that branch. <a href="https://git-scm.com/docs/git-branch">Ref</a>.</p>



<h2>Stashing</h2>



<p><strong>git stash -u</strong></p>



<p>Put away / temporarily removes all modified files. The -u
means it applies also to even recently added untracked files (not yet staged). <a href="https://git-scm.com/docs/git-stash">Ref</a>. </p>



<p><strong>git stash pop</strong></p>



<p>Unpack your stash. Doesn’t matter if you’re in a different
branch from where you stashed. <a href="https://git-scm.com/docs/git-stash">Ref</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/11/27/my-git-cli-cheat-sheet/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6585</post-id>	</item>
		<item>
		<title>Upcoming Free Webinars on Database Development and Operations</title>
		<link>https://littlekendra.com/2019/11/19/upcoming-free-webinars-on-database-development-and-operations/</link>
					<comments>https://littlekendra.com/2019/11/19/upcoming-free-webinars-on-database-development-and-operations/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 19 Nov 2019 18:00:52 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[Webcasts and Conference Sessions]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6574</guid>

					<description><![CDATA[Fall is in swing, and it&#8217;s officially webinar season! Here&#8217;s a bunch of free events I&#8217;ve got on my calendar. Weekly Database DevOps Live Chats &#8211; a new experiment on YouTube Stop by to chat! In this session I&#8217;ll be talking about what I&#8217;ve learned lately, what&#8217;s new in Redgate products, and whatever comes up...]]></description>
										<content:encoded><![CDATA[
<p>Fall is in swing, and it&#8217;s officially webinar season! Here&#8217;s a bunch of free events I&#8217;ve got on my calendar.</p>



<h2>Weekly Database DevOps Live Chats &#8211; a new experiment on YouTube</h2>



<p>Stop by to chat! In this session I&#8217;ll be talking about what I&#8217;ve learned lately, what&#8217;s new in Redgate products, and whatever comes up with those who stop by live.</p>



<ul><li>Weds, Nov 20th &#8211; 9:30 am Pacific &#8211; <a rel="noreferrer noopener" href="https://www.youtube.com/watch?v=u9JGebXmMLg&amp;feature=youtu.be" target="_blank">YouTube Link</a> (30 minutes)</li><li>Weds, Nov 27th &#8211; 9:30 am Pacific &#8211; <a rel="noreferrer noopener" href="https://youtu.be/GOETgLWj4_s" target="_blank">YouTube Link</a> (30 minutes)</li></ul>



<h2>How to Make Your 2020 Monitoring Strategy a Success</h2>



<p><em>Tomorrow, tomorrow, tomorrow!</em> I&#8217;ll be chatting with BMW&#8217;s Tony Maddonna about monitoring in the real world. (The invite says my name is Arneh Eskandari, but I&#8217;ll be subbing in for Arneh as he&#8217;s been called away to Jury Duty.)</p>



<ul><li>Wed, Nov 20th &#8211; 8 AM Pacific / 11 AM Eastern &#8211; <a rel="noreferrer noopener" href="https://event.on24.com/wcc/r/2112077/9D9D5298046424391E16FC3DFCDD0A81" target="_blank">Register</a></li></ul>



<h2>Essential Practices for High Performing Database DevOps Teams</h2>



<p>Learn the four essential practices and see demos of these practices in action in this free session.</p>



<ul><li>Tue, Nov 26th &#8211; 8 AM Pacific / 11 AM Eastern &#8211; <a rel="noreferrer noopener" href="https://event.on24.com/wcc/r/2129739/CF500D6FFF741DFD63D5A6A94D88AFF0" target="_blank">Register</a></li></ul>



<h2>Why the Database is at the Heart of DevOps Success</h2>



<p>Join me and William Durkin from <a rel="noreferrer noopener" aria-label="Data Masterminds (opens in a new tab)" href="https://datamasterminds.io/" target="_blank">Data Masterminds</a> for insights about how to succeed at database DevOps.</p>



<ul><li>Fri, Nov 29 &#8211; 6:00 AM Pacific / 9:00 AM Eastern / 3PM CET &#8211; ScaleUp 360 online conference &#8211; <a rel="noreferrer noopener" href="https://www.scale-up-360.com/en/better-software/agenda/" target="_blank">Register</a></li></ul>



<h2>Managing and Automating Test Datasets for DevOps</h2>



<p>I&#8217;ll be talking about data with Jeffrey Palermo of Clearmeasure. Join us!</p>



<ul><li>Weds, Dec 4 &#8211; 7:30 AM Pacific / 10:30 AM Eastern &#8211; <a rel="noreferrer noopener" href="https://clearmeasure.zoom.us/webinar/register/1215738468266/WN_bGDsbUfXSwqmfocJIF2LdA" target="_blank">Register</a></li></ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/11/19/upcoming-free-webinars-on-database-development-and-operations/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6574</post-id>	</item>
		<item>
		<title>Links and Resources from &#8220;How to Architect Successful Database Changes&#8221;</title>
		<link>https://littlekendra.com/2019/11/05/links-and-resources-from-how-to-architect-successful-database-changes/</link>
					<comments>https://littlekendra.com/2019/11/05/links-and-resources-from-how-to-architect-successful-database-changes/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 06 Nov 2019 05:25:59 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6570</guid>

					<description><![CDATA[Steve Jones and I had a great time today talking about source control for databases and release patterns for performance and availability in Seattle. We had a great group of folks who asked terrific questions, made thoughtful comments, and interacted throughout the day. Here are some links and resources from the day&#8230; Suggestion for configuration...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/11/exercises-beginning.png?resize=480%2C167&#038;ssl=1" alt="" class="wp-image-6572" width="480" height="167" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/11/exercises-beginning.png?w=640&amp;ssl=1 640w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/11/exercises-beginning.png?resize=300%2C105&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/11/exercises-beginning.png?resize=560%2C195&amp;ssl=1 560w" sizes="(max-width: 480px) 100vw, 480px" data-recalc-dims="1" /><figcaption>Group exercises beginning around the room</figcaption></figure></div>



<p>Steve Jones and I had a great time today talking about source control for databases and release patterns for performance and availability in Seattle. We had a great group of folks who asked terrific questions, made thoughtful comments, and interacted throughout the day. </p>



<p>Here are some links and resources from the day&#8230;</p>



<h2>Suggestion for configuration option to make SQL Server Developer Edition act like Standard Edition</h2>



<p>This has been requested by the community for many years, but <a rel="noreferrer noopener" aria-label="now is the right time to please vote up this suggestion (opens in a new tab)" href="https://feedback.azure.com/forums/908035-sql-server/suggestions/38934133-trace-flag-sp-configure-option-to-allow-developer" target="_blank">now is the right time to please vote up this suggestion</a>.</p>



<p>After all, Microsoft <a rel="noreferrer noopener" aria-label="just made Transparent Data Encryption as well as a whole slew of other cool things available in Standard Edition (opens in a new tab)" href="https://techcommunity.microsoft.com/t5/SQL-Server/SQL-Server-2019-Standard-Edition/ba-p/986121" target="_blank">just made Transparent Data Encryption as well as a </a><em><a rel="noreferrer noopener" aria-label="just made Transparent Data Encryption as well as a whole slew of other cool things available in Standard Edition (opens in a new tab)" href="https://techcommunity.microsoft.com/t5/SQL-Server/SQL-Server-2019-Standard-Edition/ba-p/986121" target="_blank">whole slew of other cool things</a></em><a rel="noreferrer noopener" aria-label="just made Transparent Data Encryption as well as a whole slew of other cool things available in Standard Edition (opens in a new tab)" href="https://techcommunity.microsoft.com/t5/SQL-Server/SQL-Server-2019-Standard-Edition/ba-p/986121" target="_blank"> available in Standard Edition</a> in SQL Server 2019. Things have really changed in Microsoft, and your voice matters &#8212; voting and commenting helps!</p>



<h2>The unnecessary evil of the shared development database</h2>



<p><a href="https://twitter.com/troyhunt" target="_blank" rel="noreferrer noopener" aria-label="Troy Hunt (opens in a new tab)">Troy Hunt</a>&#8216;s amazing post from 2011 is unfortunately still as relevant today as ever. Lots of helpful info on the business value of dedicated development environments is here: <a href="https://www.troyhunt.com/unnecessary-evil-of-shared-development/">https://www.troyhunt.com/unnecessary-evil-of-shared-development/</a></p>



<h2>Lock escalation magic numbers</h2>



<p>5,000 is a magic number&#8230; but it&#8217;s not necessarily 5,000 rows we are talking about, because <a href="https://sqlworkbooks.com/2017/04/which-locks-count-toward-lock-escalation/">more locks count than you might think</a>.</p>



<h2>How to set up a self-hosted build agent for Azure DevOps</h2>



<p>This has come up twice in the last two days, so I think a video will be in the works for this! In the meantime:</p>



<ul><li>An overview of Azure Pipelines agents: <a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?view=azure-devops">https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/agents?view=azure-devops</a></li><li>If you wish to build and / or deploy to a SQL Server on-prem or build with something other than LocalDB, a self-hosted Windows Agent is likely what you want to set up. It works just fine to set that up on your laptop or a VM if you simply need to learn and test and it&#8217;s fine for it to be offline when your laptop or VM is shut down: <a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops">https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-windows?view=azure-devops</a><ul><li>I haven&#8217;t tested this <a rel="noreferrer noopener" aria-label="new Learning Module on the topic, but it looks interesting (opens in a new tab)" href="https://docs.microsoft.com/en-us/learn/modules/host-build-agent/" target="_blank">new Learning Module on the topic, but it looks interesting</a>. Note: the exercise is specific to using a VM in Azure to host the agent &#8212; not on-prem.</li></ul></li></ul>



<h2>The &#8220;aqua&#8221; deployment model</h2>



<p>This series of posts on online deployments from <a rel="noreferrer noopener" aria-label="Michael J Swart (opens in a new tab)" href="https://twitter.com/MJSwart" target="_blank">Michael J Swart</a> is soooooo good (and the cartoons can&#8217;t be beat, either): <a href="https://michaeljswart.com/2018/01/100-percent-online-deployments-blue-green-deployment/">https://michaeljswart.com/2018/01/100-percent-online-deployments-blue-green-deployment/</a></p>



<h2>My favorite whitepaper and a helpful update &#8211; minimal logging FTW!</h2>



<p>Not a ton of people in the room knew about the amaaaaazing whitepaper on minimal logging in SQL Server:<a rel="noreferrer noopener" aria-label=" The Data Loading Performance Guide. (opens in a new tab)" href="https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/dd425070(v=sql.100)?redirectedfrom=MSDN" target="_blank"> The Data Loading Performance Guide.</a>  This is important when you need to bulk load data fast. </p>



<p>Some guidance changes for SQL Server 2016+, for info on that, check out this post: <a href="https://blogs.msdn.microsoft.com/sql_server_team/sql-server-2016-minimal-logging-and-impact-of-the-batchsize-in-bulk-load-operations/">https://blogs.msdn.microsoft.com/sql_server_team/sql-server-2016-minimal-logging-and-impact-of-the-batchsize-in-bulk-load-operations/</a></p>



<h2>Accelerate State of DevOps Reports (DORA / Google)</h2>



<p>Only a few folks in the rooms (whom I referred to as my fellow DevOps nerds with the UTMOST respect) knew about these free online reports which represent the findings from more than 30,000 respondents! This is the work led by Dr. Nicole Forsgren, and it is amazing. The DevOps Research and Assessment Group is now part of Google, download their work here: <a href="https://cloud.google.com/devops/">https://cloud.google.com/devops/</a></p>



<h2>DBATools.io</h2>



<p>Some PowerShell steps in our demos featured cmdlets from <a rel="noreferrer noopener" aria-label="this wonderful and amazing open source community resource (opens in a new tab)" href="https://dbatools.io/" target="_blank">this wonderful and amazing open source community resource</a>.</p>



<h2>Azure Data Studio</h2>



<p>Our demo has a narrative outlined in a <a rel="noreferrer noopener" aria-label="Jupyter notebook from Azure Data Studio (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/azure-data-studio" target="_blank">Jupyter notebook from Azure Data Studio</a>. Please don&#8217;t blame me for not using a PowerShell notebook,<a rel="noreferrer noopener" aria-label=" those were just released today (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/azure-data-studio/release-notes-azure-data-studio" target="_blank"> those were just released</a>!</p>



<h2>Resources to download from the day</h2>



<p>If you are in need of the resources from the day, <a href="https://redgate365-my.sharepoint.com/:u:/g/personal/kendra_little_red-gate_com/EUnB47IXyjVDruy3Cv7ks64BNmREnIVr1GLZQkM-P_Femg?e=ifhb6B" target="_blank" rel="noreferrer noopener" aria-label="download them here (opens in a new tab)">download them here</a> (73MB &#8212;  we use a lot of images and they only compress so much).</p>



<p>If you weren&#8217;t at the conference, feel free to download a copy. Please remember, though, that slides contain shorthand to help the speaker deliver a narrative, not full explanations &#8212; it&#8217;s easy to misunderstand based on slides without having been there. In other words, your mileage <em>will</em> vary, but perhaps you can find inspiration.</p>



<p>Thanks everyone for attending!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/11/05/links-and-resources-from-how-to-architect-successful-database-changes/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6570</post-id>	</item>
		<item>
		<title>Why I Make Animated Gifs for Presentation Demo Backups</title>
		<link>https://littlekendra.com/2019/10/30/why-i-make-animated-gifs-for-presentation-demo-backups/</link>
					<comments>https://littlekendra.com/2019/10/30/why-i-make-animated-gifs-for-presentation-demo-backups/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 30 Oct 2019 15:00:33 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6567</guid>

					<description><![CDATA[PASS Summit 2019 starts up next Monday with pre-conference sessions. I&#8217;ve got my schedule all set, and I&#8217;m going to be busy: I&#8217;m speaking in two full-day pre-conference sessions, giving two regular sessions, judging the ever-exciting Speaker Idol competition, and also spending time at the Redgate booth in the expo hall. Oh, and I scored...]]></description>
										<content:encoded><![CDATA[
<p>PASS Summit 2019 starts up next Monday with pre-conference sessions. I&#8217;ve got <a rel="noreferrer noopener" aria-label="my schedule all set (opens in a new tab)" href="https://littlekendra.com/2019/10/24/building-my-schedule-for-pass-summit-2019/" target="_blank">my schedule all set</a>, and I&#8217;m going to be busy: I&#8217;m speaking in two full-day pre-conference sessions, giving two regular sessions, judging the ever-exciting Speaker Idol competition, and also spending time at the Redgate booth in the expo hall. Oh, and I scored a little PASS-TV interview to talk about Redgate right before the keynote on the first day. (SQUEE!)</p>



<p>I am super lucky to have all these awesome activities lined up, but one thing is clear&#8230;</p>



<h2>I need to be PREPARED</h2>



<p>I will not have a lot of time to react if something goes wrong, such as laptop failure, a critical VM that won&#8217;t boot up, poor internet connection, etc. When it comes to my talks, I keep copies of my presentations in the cloud and on USB keys in case my laptop fails&#8211; that&#8217;s no big deal, as the conference provides workstations that speakers can use which are loaded with PowerPoint. However, demos are a different story.</p>



<h2>My old way of managing this was to create screenshots of my demos</h2>



<p> I would then add the screenshots to hidden slides in my presentation. If I couldn&#8217;t do the demos live or if something weird went wrong, I&#8217;d un-hide the slides and start showing screenshots of how it was <em>supposed</em> to work. </p>



<p>The problem: screenshotting is time-consuming. And doing a run-through where you create screenshots breaks up your flow &#8212; the constant pausing, screenshotting, and pasting is very distracting. It&#8217;s not great demo practice.</p>



<h2>My new solution is to record a run-through of the demo, then save it as one or more animated gifs</h2>



<p>This means that I don&#8217;t need to pause, I can simply rehearse the demo while recording my screen &#8212; and I can think about important things, like what are the most useful points to convey about the demo to my specific audience at this event. There is no need to capture sound: if I use the gifs, I&#8217;ll narrate them live and talk through what is auto-playing on screen. You can even pause a gif that is playing in PowerPoint by clicking the menu at the bottom left of the screen in a live presentation.</p>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="169" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/10/demo-animated-gif-resized.gif?resize=300%2C169&#038;ssl=1" alt="Mini version of an animated gif of a demo" class="wp-image-6568" data-recalc-dims="1"/><figcaption>A mini-view (for size reasons, not secrecy) of a demo I will be doing next week</figcaption></figure></div>



<p>Here is the workflow I use:</p>



<ul><li>I use <a rel="noreferrer noopener" aria-label="Camtasia (opens in a new tab)" href="https://www.techsmith.com/video-editor.html" target="_blank">Camtasia</a> to record my screen while I run through the demo. I have been a Camtasia for Mac user for years and find it very easy to use.</li><li>I save the project, make sure I have the resolution set to 1080p and the demo is full-screened, and do any simple edits needed (such as small cuts of where I made a mistake that&#8217;s not relevant)</li><li>I add a fade transition to the beginning and end of the clip to make it clear where it starts and ends (the animated gif will repeat when open on a slide in PowerPoint)</li><li>I publish the file as a gif (I use frame rate 5) and save it in the file share with my presentation, where it automatically syncs to cloud storage</li><li>I also add the gif file into the presentation itself on a hidden slide</li></ul>



<p>For pretty short demos (less than a minute) I have even found that it&#8217;s convenient to show the animated gif and talk through it instead of doing a live demo. This is nice because it reduces switching in and out of PowerPoint when I want to show something quickly &#8212; screen switching takes time and can be visually jarring for the audience on many projectors.</p>



<h2>One downside of using animated gifs this way</h2>



<p>Your PowerPoint files can become quite large. This was also a downside of my screenshot approach, so I&#8217;m already used to large PowerPoints. If it is an issue for you, you could simply not add the animated gifs to the PowerPoint and store them and access them separately if needed.</p>



<p>All in all, I&#8217;m quite happy with my updated method of &#8220;accident proofing&#8221; my talks. Long live the animated gif!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/10/30/why-i-make-animated-gifs-for-presentation-demo-backups/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6567</post-id>	</item>
		<item>
		<title>Thinking About Robert Davis</title>
		<link>https://littlekendra.com/2019/10/25/thinking-about-robert-davis/</link>
					<comments>https://littlekendra.com/2019/10/25/thinking-about-robert-davis/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 25 Oct 2019 13:30:48 +0000</pubDate>
				<category><![CDATA[Tech Community]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6564</guid>

					<description><![CDATA[It&#8217;s been more than a year and a half since Robert Davis passed away. I wrote a bit about Robert&#8217;s passing last April. I haven&#8217;t written about him since, but I think about Robert a lot. I think about Robert when I work on a tough problem that he would have found interesting, when chatting...]]></description>
										<content:encoded><![CDATA[
<p>It&#8217;s been more than a year and a half since <a rel="noreferrer noopener" aria-label="Robert Davis (opens in a new tab)" href="https://twitter.com/SQLSoldier" target="_blank">Robert Davis</a> passed away. I wrote a bit about Robert&#8217;s passing <a href="https://littlekendra.com/2018/04/03/remembering-robert-davis-aka-sqlsoldier/" target="_blank" rel="noreferrer noopener" aria-label="last April (opens in a new tab)">last April</a>. I haven&#8217;t written about him since, but I think about Robert a lot. </p>



<p>I think about Robert when I work on a tough problem that he would have found interesting, when chatting about database nerdery on Twitter, when preparing for a conference or training that I know he would have been excited to attend. I remember him when I get a great new photo of one of my dogs, because I know he would have loved to see it.</p>



<p> When I remember Robert now, I remember how delighted he was to solve all sorts of puzzles, and I remember the sound of his laughter. He helps me try to remember to be kind. To be more helpful to others.</p>



<p>I don&#8217;t have a big takeaway or piece of insight from this post. I simply wanted to write something about our friend who isn&#8217;t with us anymore, because he continues to make an impact on my world.</p>



<p>Wish you were still here, friend. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/10/25/thinking-about-robert-davis/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6564</post-id>	</item>
		<item>
		<title>Building my schedule for PASS Summit 2019</title>
		<link>https://littlekendra.com/2019/10/24/building-my-schedule-for-pass-summit-2019/</link>
					<comments>https://littlekendra.com/2019/10/24/building-my-schedule-for-pass-summit-2019/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 24 Oct 2019 18:11:54 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6562</guid>

					<description><![CDATA[It&#8217;s just ten days until PASS Summit 2019 begins in Seattle. The schedule is up and there are loads of good sessions. Here&#8217;s what I&#8217;m putting on my calendar to make sure that I don&#8217;t miss it &#8212; along with some things that I wish I could attend that I&#8217;ll be sure to catch the...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/10/fig-24-10-2019_18-10-32.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6563" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/10/fig-24-10-2019_18-10-32.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/10/fig-24-10-2019_18-10-32.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>It&#8217;s just ten days until PASS Summit 2019 begins in Seattle. The<a rel="noreferrer noopener" aria-label=" schedule is up (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/Schedule.aspx" target="_blank"> schedule is up</a> and there are loads of good sessions. Here&#8217;s what I&#8217;m putting on my calendar to make sure that I don&#8217;t miss it &#8212; along with some things that I <em>wish</em> I could attend that I&#8217;ll be sure to catch the videos of afterwards.</p>



<h2>Monday, Nov 4: &#8220;<a rel="noreferrer noopener" aria-label="Redgate SQL in the City Summit Seattle (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92888" target="_blank">Redgate SQL in the City Summit Seattle</a>&#8221; Pre-Con Day &#8211; Room 3AB</h2>



<p>This is going to be a <em>fantastic</em> day &#8212; loads of DevOps learning and sharing. I&#8217;ll be talking about implementing and improving Database DevOps with some of my very  favorite DevOps and SQL Server specialists:  Steve Jones, Grant Fritchey, Ike Ellis, Hamish Watson, and Arneh Eskandari.  The great thing about having a list of speakers like this is that you get to hear about varied real-world experiences and different takes on topics, plus there is loads of time to bounce ideas off people. There&#8217;s still time to sign up and <a rel="noreferrer noopener" aria-label="join us (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92888" target="_blank">join us</a>!</p>



<h2>Tuesday, Nov 5: &#8220;<a rel="noreferrer noopener" aria-label="How to Architect Successful Database Changes: Source Control and Release Patterns for Performance and Availability (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92841" target="_blank">How to Architect Successful Database Changes: Source Control and Release Patterns for Performance and Availability</a>&#8221;  Pre-Con Day &#8211; Room 604</h2>



<p>On Tuesday, Steve Jones and I will be talking about development patterns that enable you to frequently release database changes while maintaining high production uptime and minimizing the impact of your deployments on your target environment. This isn&#8217;t the easiest thing to do, but it&#8217;s increasingly important to understand the methods behind sneaking in database deployments to live systems without causing problems for users &#8212; we&#8217;ll share what we&#8217;ve learned over the course of our careers, as well as some insights into what we see as the future of database development.  </p>



<p><strong>Tuesday evening</strong>: There is a <a href="https://www.eventbrite.com/e/pass-summit-women-in-tech-happy-hour-tickets-78056157067">Women in Tech Happy Hour from 4-6 PM</a> at the <a rel="noreferrer noopener" aria-label="Tap House Grill (opens in a new tab)" href="https://www.eventbrite.com/e/pass-summit-women-in-tech-happy-hour-tickets-78056157067#map-target" target="_blank">Tap House Grill</a>. I&#8217;ll be late, but it&#8217;s a great event I&#8217;d like to make, even if it&#8217;s just for 15 minutes. Following this, there is a Welcome Reception in the Keynote room back at the Conference Center. I will almost certainly head back to do a little preparation for my presentation the next day and an early night of sleep, however &#8212; after speaking a lot during the day I&#8217;ll be tired and my voice and brain will need a rest. (Note: sometimes people feel bad for taking nights off networking at conferences &#8212; fear of missing out can kick in pretty easy. But if you need time to chill and recharge, do it!)</p>



<h2>Wednesday, Nov 6: Day 1 of the main conference</h2>



<p><strong>08:15 AM &#8211; 09:45 AM</strong>: <a rel="noreferrer noopener" aria-label="Keynote with Rohan Kumar (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/Keynotes.aspx" target="_blank">Keynote with Rohan Kumar</a>. I&#8217;ll watch this remotely on <a rel="noreferrer noopener" aria-label="PASS TV (opens in a new tab)" href="https://www.pass.org/summit/2019/Home.aspx" target="_blank">PASS TV</a>, as I am presenting a session directly afterward. If you can make it in person, everyone will be walking to the big Keynote Room, follow the crowd.</p>



<p><strong>10:15 AM &#8211; 11:30 AM</strong>: I&#8217;m presenting &#8220;<a rel="noreferrer noopener" aria-label="Why the Database is at the Heart of DevOps Success (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98639" target="_blank">Why the Database is at the Heart of DevOps Success</a>&#8221; in room 615 (it was 608, but we had a room change). I love, love, love this session and am so excited to share it.</p>



<p><strong>11:30 AM &#8211; 01:30 PM</strong>: I&#8217;m going to swing by one of the DevOps tables at the <a rel="noreferrer noopener" aria-label="Birds of a Feather lunch (opens in a new tab)" href="https://www.pass.org/Portals/0/_Community/PASS%20Summit%202019/PASS_19_BOFLuncheon_Handout_1.pdf?ver=2019-10-21-132934-733" target="_blank">Birds of a Feather lunch</a> (Dining Hall, 4EF) for a quick chat, then head to the Redgate booth in the Exhibit Hall (4B).</p>



<p><strong>1:30 PM &#8211; 2:45 PM</strong>: I cannot possibly miss Pam LaHoud on &#8220;<a rel="noreferrer noopener" aria-label="Improving Availability in SQL Server and Azure SQL Database with Accelerated Database Recovery and Resumable Operations (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98848" target="_blank">Improving Availability in SQL Server and Azure SQL Database with Accelerated Database Recovery and Resumable Operations</a>.&#8221; She is magic and these new features are magic, too. Room 6B.</p>



<p><strong>2:50 PM &#8211; 3:30 PM</strong>: Back to the Exhibit Hall (4B) &#8212; I love hearing questions and chatting DevOps at the Redgate booth.  </p>



<p><strong>3:15 PM &#8211; 4:30 PM</strong>: The Exhibit Hall closes at 3:30, so I&#8217;ll probably be late for this. I&#8217;ll try to find a spare seat in <a href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=93999">Linux Fundamentals for SQL Server DBAs</a> by Hamish Watson in Room 608.</p>



<p><strong>04:45 PM &#8211; 6:00 PM</strong>: It&#8217;s <a rel="noreferrer noopener" aria-label="SPEAKER IDOL time (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98948" target="_blank">SPEAKER IDOL time</a>! Round 1. This is a really fun series of lightning talks with a fun competition mixed in. I get to be a judge! I can&#8217;t wait, I learn a ton from Speaker Idol every year. Be there in room 2AB.</p>



<p><strong>6:00 PM &#8211; 8:00 PM</strong>: Have some food and drinks on the Exhibitors &#8212; and maybe talk to us as well if you like, we&#8217;re nice enough  &#8211; Exhibit Hall, 4B</p>



<p>If my voice isn&#8217;t already starting to fail, I&#8217;ll head to <a rel="noreferrer noopener" aria-label="Game Night at 8PM (opens in a new tab)" href="https://www.eventbrite.com/e/pass-summit-2019-games-night-wednesday-tickets-66695779873" target="_blank">Game Night at 8PM</a> (Ballroom 6A).</p>



<h2>Thursday, Nov 7: Day 2 of the main conference</h2>



<p><strong>08:15 AM &#8211; 09:45 AM</strong>: <a rel="noreferrer noopener" href="https://www.pass.org/summit/2019/Learn/Keynotes.aspx" target="_blank">Keynote with Tarah Wheeler</a> (Keynote Room). Imma try to attend this one in person. I need to make notes for a post-event webinar that I&#8217;m doing with Grant, Kathi, and Steve: &#8220;<a rel="noreferrer noopener" aria-label="What we learned at PASS Summit (opens in a new tab)" href="https://event.on24.com/wcc/r/2118041/B2CD049ED1ECB55DFFCDA7148ABB3DD1" target="_blank">What we learned at PASS Summit</a>.&#8221;</p>



<p><strong>10:15 AM &#8211; 11:30 AM</strong>: &#8220;<a rel="noreferrer noopener" aria-label="Enabling End to End Scenarios with Data Virtualization in SQL Server 2019 (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98832" target="_blank">Enabling End to End Scenarios with Data Virtualization in SQL Server 2019</a>&#8221; with James Rowland-Jones, TCC Yakima 1. It&#8217;s a hike over to the TCC building (you can do it all inside the convention center using a skybridge for convenience), but this is something I must learn more about for cross-platform scenarios. And isn&#8217;t this a crazy world: James works at Microsoft and he&#8217;s presenting on how to use ORACLE AND SQL SERVER TOGETHER! Oh brave new world!</p>



<p><strong>11:30 AM &#8211; 01:15 PM</strong>: <a rel="noreferrer noopener" aria-label="Women in Tech Lunch with LaShana Lewis (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/Keynotes.aspx" target="_blank">Women in Tech Lunch with LaShana Lewis</a> (Keynote Room). I can&#8217;t remember if I signed up for this when I registered, but I&#8217;ll find out when I check into the conference. If I didn&#8217;t, I&#8217;ll attend the <a rel="noreferrer noopener" href="https://www.pass.org/Portals/0/_Community/PASS%20Summit%202019/PASS_19_BOFLuncheon_Handout_1.pdf?ver=2019-10-21-132934-733" target="_blank">Birds of a Feather lunch</a> (Dining Hall, 4EF) and catch LaShana&#8217;s talk via recording afterward. Hopefully will fit in some time at the Redgate Booth in the Exhibit Hall.</p>



<p><strong>1:30 PM &#8211; 02:45 PM</strong>:  <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98059" target="_blank">SQL Server in Containers: Your Next Dev/Test/Integration/Upgrade Server</a>. Grant Fritchey has some amazing things to show and I&#8217;m going to tweet all about it. Room 618.</p>



<p><strong>2:50 PM &#8211; 3:30 PM</strong>: Back to the Exhibit Hall (4B) to meet up with friends at the Redgate booth. Exhibit hall closes at 3:30 again.</p>



<p><strong>3:15 PM &#8211; 04:30 PM</strong>: I&#8217;d love to see Tobias Ternstrom talk about <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98739" target="_blank">Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases</a>. Room 3AB.</p>



<p><strong>4:45 PM &#8211; 06:00 PM</strong>: <a href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98949">SPEAKER IDOL &#8211; ROUND 2</a> in Room 2AB. The action heats up in this second round with an all-new set of contestants. A great community session.</p>



<p>I have an early session Friday, so I&#8217;ll be heading to dinner with Friends of Redgate and going to bed early. I wish I could go to <a rel="noreferrer noopener" href="https://www.eventbrite.com/e/pass-summit-2019-games-night-wednesday-tickets-66695779873" target="_blank">Game Night at 8PM</a> (Ballroom 6A) as well, though.</p>



<h2>Friday, Nov 8: Final day of the conference</h2>



<p><strong>8:00 AM &#8211; 09:15 AM</strong>: <s>I&#8217;ve gotta see </s><a href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92529"><s>Batch Execution Mode on Rowstore Indexes</s></a><s> by Niko Neugebauer in room 6B.</s>  I will have to watch the recording of Niko&#8217;s excellent talk because <a href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98949">SPEAKER IDOL &#8211; ROUND 3</a> is in Room 2AB. Start your day off with a fun sampler of learning in this final heat of the first round.</p>



<p><strong>9:30 AM &#8211; 10:45 AM</strong>: I&#8217;m presenting &#8220;<a href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92199">Best Practices for Branching Database Code in Git</a>&#8221; in room 6A. WOO HOO!</p>



<p><strong>10:30 AM &#8211; 2:00 PM</strong>:  Exhibit Hall (4B) &#8211; I can&#8217;t show up at 10:30 unless literally no-body is in the audience of my talk, but I&#8217;ll get there as soon as I can for the last day at the booth.</p>



<p><strong>2:00 PM &#8211; 03:15 PM</strong>: <a href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=98951">SPEAKER IDOL &#8211; FINALE</a>, Room 2AB. A winner will be crowned! Errr&#8230; actually I don&#8217;t think there&#8217;s a crown, but there IS a very cool prize. </p>



<p><strong>3:30 PM &#8211; 04:45 PM:</strong> I wish I could see <a href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92480">Continuous Intelligence&#8230; What&#8217;s This All About?</a> by Gabi Münster in TCC Skagit 4. Unfortunately I have to jet to the airport to get home to my puppy, who I&#8217;ll be missing like crazy all week. I know, excuses excuses.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/10/24/building-my-schedule-for-pass-summit-2019/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6562</post-id>	</item>
		<item>
		<title>Workshop Report: Overcoming Obstacles on the Journey to Continuous Delivery for Databases (video with transcript)</title>
		<link>https://littlekendra.com/2019/10/17/workshop-report-overcoming-obstacles-on-the-journey-to-continuous-delivery-for-databases-video-with-transcript/</link>
					<comments>https://littlekendra.com/2019/10/17/workshop-report-overcoming-obstacles-on-the-journey-to-continuous-delivery-for-databases-video-with-transcript/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 17 Oct 2019 17:46:04 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6559</guid>

					<description><![CDATA[I am living the dream, y&#8217;all: yesterday I was finishing up my workday and needed to record a video, but realized that our puppy had spent enough time in her crate for the day already. So, I did the obvious: she&#8217;s my co-star in the video. This is what YouTube is for, right? In this...]]></description>
										<content:encoded><![CDATA[
<p>I am living the dream, y&#8217;all: yesterday I was finishing up my workday and needed to record a video, but realized that our puppy had spent enough time in her crate for the day already. So, I did the obvious: she&#8217;s my co-star in the video.  This is what YouTube is <em>for</em>, right?</p>



<p>In this video, Freyja the puppy and I talk about a recent workshop which I facilitated at the IDC DevOps conference in London. We cover:</p>



<ul><li><a href="https://www.youtube.com/watch?v=X7AN8_bZ2Co&amp;t=105s">01:45</a> The workshop methodology: about <a rel="noreferrer noopener" aria-label="the Lightning Decision Jam Session, by AJ&amp;Smart / Jonathan Courtney (opens in a new tab)" href="https://medium.muz.li/a-super-simple-exercise-for-solving-almost-any-product-design-challenge-f9e6c0019d7d" target="_blank">the Lightning Decision Jam Session, by AJ&amp;Smart / Jonathan Courtney</a>. I think this is a great format, and you may want to use this yourself for a workshop with your team (on any problem-solving topic)</li><li><a href="https://www.youtube.com/watch?v=X7AN8_bZ2Co&amp;t=333s">05:33</a> Key findings from our group about how to overcome the top obstacles to Continuous delivery for databases</li></ul>



<p>A transcript of the session is below the video.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Workshop Report: Overcoming Obstacles on the Journey to Continuous Delivery for Databases" width="640" height="360" src="https://www.youtube.com/embed/X7AN8_bZ2Co?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2>Transcript (edited a bit for clarity)</h2>



<h3>Hi, I&#8217;m Kendra Little. I&#8217;m a DevOps Advocate for Redgate</h3>



<p>What this means is that I get to spend time talking to folks and thinking about the patterns and practices that help people successfully develop and deploy stable changes to their databases, that bring value to the customers of these organizations. </p>



<p>Recently I went to a conference that was really great&#8211; it was the IDC DevOps conference in London. At this conference, I really liked the format. In the morning we had a series of presentations, and in the afternoon we had workshops where we talked about different problems and potential solutions. </p>



<h3>These workshops were collaborative </h3>



<p>I hosted a workshop, but I didn&#8217;t get to just get to tell the whole group: here&#8217;s how it&#8217;s done. That wasn&#8217;t the point! </p>



<p>The problem that we were solving in my group was how to overcome the top obstacles to continuous delivery for databases. </p>



<p>What we zoomed in on was the fact that when you&#8217;re starting out on a journey to implement Database DevOps, you&#8217;re working across silos. You&#8217;ve got the database folks generally working in their own silo. You&#8217;ve got developers generally working in another silo, and the larger the organization the more complex it can be to establish new processes between these two groups, because they have different ways of working. </p>



<p>Starting out at the workshop, a lot of people at the conference were in different phases of implementing DevOps, and many were early on. So we did this exercise that not everybody was bought into at first. </p>



<p>This exercise is built on a format called the<a rel="noreferrer noopener" aria-label=" Lightning Decision Jam Session by AJ&amp;Smart (opens in a new tab)" href="https://medium.muz.li/a-super-simple-exercise-for-solving-almost-any-product-design-challenge-f9e6c0019d7d" target="_blank"> Lightning Decision Jam Session by AJ&amp;Smart</a>, and that itself is based on a great book called <a href="https://www.thesprintbook.com/" target="_blank" rel="noreferrer noopener" aria-label="Sprint (opens in a new tab)">Sprint</a>. It&#8217;s about design thinking. </p>



<h3>Here&#8217;s a little bit about how the workshop goes.. </h3>



<p>You have everyone take a stack of either paper or post-it notes&#8211; having something sticky works well though. Everybody privately writes down different potential solutions to how could we make it easy to get people to take on the new processes required for database DevOps. </p>



<h3>1. Generating solutions</h3>



<p>Everyone generates these solutions. You focus on quantity, not quality. The idea is that everyone should just start generating ideas, because it&#8217;s like brainstorming but without the pressure of having other people listen to your ideas. You&#8217;re just recording them on sticky notes. You have a time limit for that, and we did about ten minutes of people generating their solutions. </p>



<p>At first some people were like, well, I don&#8217;t know what solutions I have for this because I haven&#8217;t done Database DevOps successfully! </p>



<p>But the truth is most people in the group had gone through IT changes and seen what worked well and what didn&#8217;t.  Most people in the group had observed a lot of behavior among their co-workers and seen what&#8217;s difficult and what&#8217;s not difficult to get people to do. And also a lot of people at the table had gone through Agile transformations for their application tier, and had seen what worked and didn&#8217;t work for that.  Everyone already had a lot of reference material to work from. </p>



<h3>2. Voting</h3>



<p>After you generate all these solutions, you come together. Each solution needs to be legible because you&#8217;re not gonna defend them, you&#8217;re not gonna explain them. What happens is the facilitator puts them up on a board &#8212; we just used a wall in the room. You spread them out on the wall and you equip everyone with either voting dots or a pen. Everyone reads silently reads all the solutions and puts dots on the one that any of them that they think would be viable. </p>



<p>Now, you&#8217;re not limited. You can vote for as many of these as you want, but the point is that you don&#8217;t vote for your own because you already submitted yours&#8211; you already kind of voted for your own. Everybody silently votes on these using dots. The idea is not to do a bunch of talk during this, just read them and vote on them.</p>



<h3>3. Filtering</h3>



<p>Then you do a filtering process. We filtered out anything that had less than three dots. These aren&#8217;t terrible ideas, necessarily, these are just things that the group doesn&#8217;t think are gonna be the most effective. That narrows down the window of what you have. </p>



<h3>4. Effort / impact scale</h3>



<p>Then you take down the ideas that pass the dot filter, and you arrange them by the amount of impact they have in the amount of difficulty they&#8217;ll be. </p>



<p>This is where having an axis drawn on a whiteboard can come in handy. We just had to imagine the axis ourselves, but ideally you&#8217;ve got a vertical access which is the amount of impact a suggestion  will have on the organization /  the amount it&#8217;ll help you solve the problem. The horizontal axis is how difficult it is. </p>



<p>Things that are very far to the left and very high up will be very high impact and not a lot of work. You can also have things that are high impact and a lot of work (top right quadrant). You can have things that are low impact and a lot of work (lower right quadrant). You have things that are low impact, but they are not a lot of work, either (lower left quardant). </p>



<p>We arranged all the ideas collaboratively on this scale. </p>



<p>This led us to identify things that are high impact but not super duper challenging to do. </p>



<h3>The findings that the group came up with were&#8230;</h3>



<h3>1. Version control</h3>



<p>For the top three things that help people overcome process obstacles to initiating change for continuous delivery for databases, our group found that establishing version control for database code is number one.</p>



<p>Version control is the foundation of so much collaboration between people that you really need to get code into version control and focus on that. This isn&#8217;t always the simplest thing in the world, but it&#8217;s really a necessarily necessary enabler for everything else. </p>



<h3>3. Minimum viable dataset</h3>



<p>The group also had a concept of a Minimum Viable dataset. I loved this point: in order to successfully do development work, we need a copy of a dataset that enables progress. </p>



<p>In some cases, if production is a 10 terabyte environment our Minimum Viable Dataset for development might be much smaller. This viable data set may need to replace sensitive data that lives in production with non sensitive data. In some environments it may need to be synthesized. But we need to have this to support this work.</p>



<h3>3. Constant communications between teams</h3>



<p>The third thing that the group found is this enabler to break down these silos between teams and get database DevOps going is constant communications between the teams. We need to have teams really working together to establish these new processes, and we need to have the teams listening to one another. </p>



<h3>Enabling all of these: an executive sponsor</h3>



<p>Additionally, in order to enable all of these things to happen, if you can identify an executive sponsor who can meet with the teams on a regular basis and emphasize how this project meets organization goals, it helps these teams to work together. </p>



<p>For cultural change, it&#8217;s good for teams to know they are being supported by the organization at large. That is an underpinning that can help this change go through. </p>



<p>This was a really fun workshop at the IDC DevOps conference. Every time I&#8217;ve done this exercise, I&#8217;ve been impressed at the insights that come from the group&#8211; which is always so much fun because at the beginning the exercise there&#8217;s so much doubt as to whether the team knows enough to overcome the challenge! But in this case, we certainly did. </p>



<p>Thanks for joining me for this talk. I&#8217;m Kendra little from Redgate&#8211; and this is Freyja, our local expert on Corginetes who has joined me for this quick video. Bye folks, I&#8217;ll see you again in another video soon.</p>



<p> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/10/17/workshop-report-overcoming-obstacles-on-the-journey-to-continuous-delivery-for-databases-video-with-transcript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6559</post-id>	</item>
		<item>
		<title>Setting a Custom Variable in an Azure DevOps Pipeline with PowerShell</title>
		<link>https://littlekendra.com/2019/09/02/setting-a-custom-variable-in-an-azure-devops-pipeline-with-powershell/</link>
					<comments>https://littlekendra.com/2019/09/02/setting-a-custom-variable-in-an-azure-devops-pipeline-with-powershell/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 02 Sep 2019 15:00:52 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6535</guid>

					<description><![CDATA[Here&#8217;s a quick post on something simple which stumped me for a while, in the hopes that search engines help someone else who gets confused in the same way. Recently, I was doing a bit of work in Azure DevOps Services, preparing a demo for an upcoming webinar about Redgate&#8217;s solutions. (Shameless plug: the webinar...]]></description>
										<content:encoded><![CDATA[
<p><em>Here&#8217;s a quick post on something simple which stumped me for a while, in the hopes that search engines help someone else who gets confused in the same way.</em></p>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/08/fig-14-08-2019_21-36-36.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6537" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/08/fig-14-08-2019_21-36-36.jpg?w=300&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/08/fig-14-08-2019_21-36-36.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>Recently, I was doing a bit of work in Azure DevOps Services, preparing a demo for an upcoming webinar about Redgate&#8217;s solutions. (Shameless plug: <a href="https://info.microsoft.com/ww-Fast-and-Reliable-Development-with-Redgate-Solutions-for-SQL-Server-Registration.html">the webinar is free</a>.) Part of the demo does the following magic, using a branch policy and pull request automation trigger, combined with some of Redgate&#8217;s extensions:</p>



<ul><li>Builds/validates database code</li><li>Creates a lightweight clone of the &#8220;production&#8221; database (I&#8217;m using <a href="https://www.brentozar.com/archive/2015/10/how-to-download-the-stack-overflow-database-via-bittorrent/">a copy of StackOverflow</a>, thanks Brent &amp; the folks at Stack)</li><li>Creates a release artifact summarizing the changes that&#8217;ll be deployed to the clone, exports it, then deploys the changes</li></ul>



<p>This combination of actions is lovely &#8212; reviewers of the pull request have validation that the code builds, they know it deploys successfully, and they can even look at deployment timings. Plus, they have a real environment to review the change.</p>



<p>I was working on improving something simple about my demo: giving the cloned database a clear, accurate name that ties to the Pull Request Id. </p>



<p>Previously, I&#8217;d been using the <a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=azure-devops&amp;tabs=batch#default-variables">default $(Release.ReleaseId)</a> variable in the database name, but I decided that I would prefer to identify this with the PR number, and for the cloned database to be replaced when re-running the automation for a PR (if code in it changes, etc).</p>



<h2>There wasn&#8217;t a default variable that does exactly what I wanted</h2>



<p>Looking at my options <a rel="noreferrer noopener" aria-label="in the default variables (opens in a new tab)" href="https://docs.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=azure-devops&amp;tabs=batch#default-variables" target="_blank">in the default variables</a>, the closest thing to what I was going for is $(Release.{alias}.SourceBranch)&#8221;. My alias for my  build artifact is _StackOverflow-CI, so I referenced that as $(Release.Artifacts._StackOverflow-CI.SourceBranch). </p>



<p>That outputs a path like refs/pull/34/merge. For a variety of reasons, I don&#8217;t want a bunch of forward slashes running around in my database names. But no problem &#8211; looking at the documentation, I saw that I can <a rel="noreferrer noopener" aria-label="set a custom variable easily in a PowerShell task step in my pipeline (opens in a new tab)" href="https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&amp;tabs=classic%2Cpowershell#set-in-script" target="_blank">set a custom variable easily in a PowerShell task step in my pipeline</a>. Maybe there&#8217;s an even simpler way to do this, but that looked like a fast and easy way to replace those slashes with underscores, so I went for it.</p>



<h2>A key piece of info about setting variables in Azure DevOps pipelines with a script</h2>



<p>This ended up being a bit time consuming for me, because there&#8217;s one important piece of the documentation which I didn&#8217;t notice. I skipped to the sample code and missed this:</p>



<blockquote class="wp-block-quote"><p>To set a variable from a script, you use the task.setvariable logging command. This does not update the environment variables, but it does make the new variable available to <em>downstream steps</em> within the same job.</p><cite><a href="https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&amp;tabs=classic%2Cpowershell#set-in-script" target="_blank" rel="noreferrer noopener" aria-label="Azure DevOps Services - Variables doc (opens in a new tab)">Azure DevOps Services &#8211; Variables doc</a> &#8211; emphasis mine</cite></blockquote>



<p>Having missed that fact, I struggled with my code for a good while, because I was trying to set the variable and then read it for validation in the same task. That didn&#8217;t work, so I thought I wasn&#8217;t actually setting the variable properly. Whoops.</p>



<h2>Some simple sample code</h2>



<p>Let&#8217;s say you have a PowerShell script task in your Azure DevOps release pipeline. You set it to &#8220;inline&#8221; type, and you have the following code in there:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="true" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$path="$(Release.Artifacts._StackOverflow-CI.SourceBranch)"
Write-Host "$path"
$path= $path -replace "/", "_"
Write-Host "No problem reading $path"
Write-Host "##vso[task.setvariable variable=DUCKS]$path"
Write-Host "Trying to read $env:DUCKS"</pre>



<p>This will produce something like this:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">2019-08-14T20:56:19.8412596Z refs/pull/34/merge
2019-08-14T20:56:19.8424967Z No problem reading refs_pull_34_merge
2019-08-14T20:56:19.8431236Z ##[debug]Processed: ##vso[task.setvariable variable=DUCKS]refs_pull_34_merge
2019-08-14T20:56:19.8545546Z Trying to read </pre>



<p>Totally looks like our $env.DUCKS variable didn&#8217;t get set.</p>



<p>However, if you add an additional PowerShell script task to the same job, also set to &#8220;inline type&#8221;, which contains that same final line:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Write-Host "Trying to read $env:DUCKS"</pre>



<p>That will do what you expect and produce:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">2019-08-14T20:56:21.4502122Z Trying to read refs_pull_34_merge</pre>



<h2>I guess reading <em>is </em>fundamental</h2>



<p>This all makes perfect sense to me, now that I think about it. In my defense, it&#8217;s been a loooong time since I&#8217;ve thought about environment variables in Windows! I couldn&#8217;t tell you how many times I looked at that doc and missed this important detail &#8212; it was more than a few times. Hopefully this helps someone else out there who misses the same thing I did.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/09/02/setting-a-custom-variable-in-an-azure-devops-pipeline-with-powershell/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6535</post-id>	</item>
		<item>
		<title>Git Command Line Tutorial with SQL Change Automation for SSMS (video)</title>
		<link>https://littlekendra.com/2019/08/26/git-command-line-tutorial-with-sql-change-automation-for-ssms-video/</link>
					<comments>https://littlekendra.com/2019/08/26/git-command-line-tutorial-with-sql-change-automation-for-ssms-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 26 Aug 2019 15:02:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6551</guid>

					<description><![CDATA[I&#8217;m really excited for Redgate&#8217;s new SQL Change Automation plugin for SQL Server Management Studio (SSMS). SQL Change Automation lets DBAs and developers use a migrations-first approach to create precise scripts to apply changes to your database. If you&#8217;re curious about what I mean by &#8220;migrations-first&#8221;, read more about this approach, and how it compares...]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m really excited for Redgate&#8217;s new <a rel="noreferrer noopener" aria-label="SQL Change Automation plugin for SQL Server Management Studio  (opens in a new tab)" href="https://www.red-gate.com/products/sql-development/sql-change-automation/entrypage/ssms-addin" target="_blank">SQL Change Automation plugin for SQL Server Management Studio </a>(SSMS). SQL Change Automation lets DBAs and developers use a migrations-first approach to create precise scripts to apply changes to your database. If you&#8217;re curious about what I mean by &#8220;migrations-first&#8221;,  <a rel="noreferrer noopener" aria-label="read more about this approach, and how it compares to a state-first approach here (opens in a new tab)" href="https://www.red-gate.com/products/sql-development/sql-change-automation/approaches" target="_blank">read more about this approach, and how it compares to a state-first approach here</a>.</p>



<p>I&#8217;ve been working with SQL Change Automation with Git for a while in Microsoft Visual Studio. Visual Studio contains a lot of integration by default with Git and Azure DevOps, so I&#8217;ve been using its graphical tools, for the most part.</p>



<h2>The new SQL Change Automation extension for SSMS works with the Version Control System (VCS) of your choice, but this initial release provides only &#8220;working folder&#8221; support</h2>



<p>That means that you set up your version control outside of SSMS, then point SQL Change Automation at your working folder. </p>



<p>This inspired me to start learning the Git command line. I&#8217;m not a command line guru of any sort, but it turns out the Git command line is really easy to learn, and I think it&#8217;s super fun to use. In this 22 minute video, I give an overview of how to create a fresh repo in Azure DevOps and clone it to your local machine, set up a new SQL Change Automation project in SSMS for the Microsoft <a href="https://github.com/microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs">pubs sample database</a>, commit changes to source control, work with branches, and stash files away when you need to.</p>



<p><em>A reference for the Git commands run with the times they are demonstrated is right below the video</em></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Git Command Line Tutorial with SQL Change Automation for SSMS" width="640" height="360" src="https://www.youtube.com/embed/8BQZuWRw43o?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=40s">00:40</a> Where to get <a href="https://github.com/microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs" target="_blank" rel="noreferrer noopener" aria-label="the code to create the Pubs database (opens in a new tab)">the code to create the Pubs database</a><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=60s">01:00</a> Creating a new repo in an Azure DevOps project<br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=99s">01:39</a> Clone the repo to your local machine with: <strong>git clone urlfromyourrepogoeshere</strong><br> <a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=180s">03:00</a> <strong>git status </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=210s">03:30</a> Create a new SQL Change Automation project and baseline it in SSMS <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=360s">06:00</a> Stage the files with: <strong>git add .</strong>  <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=400s">06:40</a> Review staged files with: <strong>git status</strong> <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=453s">07:33</a> Commit the files with: <strong>git commit -m &#8220;commit message goes here&#8221; </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=488s">08:08</a> Send commit to upstream repo with: <strong>git push </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=582s">09:42</a> Create a feature branch with: <strong>git checkout -b foldername/branchname</strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=625s">10:25</a> Add a new migration script with SQL Change Automation extension in SSMS <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=696s">11:36</a> Observe how non-committed files in working directory act in Git when changing branches <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=784s">13:04</a> Put away / temporarily remove &#8220;dirty&#8221; files with: <strong>git stash -u </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=962s">16:02</a> List local branches with: <strong>git branch </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=971s">16:11</a> Switch to an existing branch with: <strong>git checkout foldername/branchname </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=977s">16:17</a> Unpack / get back your stash with: <strong>git stash pop </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1018s">16:58</a> Stage modified files in our feature branch with: <strong>git add . </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1023s">17:03</a> Commit modified files in our feature branch with: <strong>git commit -m &#8220;commit message goes here&#8221; </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1053s">17:33</a> Get detailed syntax to push feature branch for the first time to remote repo with: <strong>git push </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1087s">18:07</a> View repo in Azure DevOps Services <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1102s">18:22</a> View branches and create a pull request to merge our feature branch into master <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1145s">19:05</a> Complete pull request, note I use an option that deletes the feature branch on the central repo after merge <br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1185s">19:45</a> Validate that the feature branch still exists on my client machine with: <strong>git status </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1210s">20:10</a> Return to master branch with: <strong>git checkout master </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1222s">20:22</a> Clean up my local feature branch with: <strong>git branch -d foldername/branchname </strong><br><a href="https://www.youtube.com/watch?v=8BQZuWRw43o&amp;t=1240s">20:40</a> Pull down updated code from master with: <strong>git pull</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/08/26/git-command-line-tutorial-with-sql-change-automation-for-ssms-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6551</post-id>	</item>
		<item>
		<title>Key Findings for Database Professionals from the Accelerate State of DevOps Report 2019</title>
		<link>https://littlekendra.com/2019/08/22/key-findings-for-database-professionals-from-the-accelerate-state-of-devops-report-2019/</link>
					<comments>https://littlekendra.com/2019/08/22/key-findings-for-database-professionals-from-the-accelerate-state-of-devops-report-2019/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 22 Aug 2019 16:12:52 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6541</guid>

					<description><![CDATA[The Accelerate: State of DevOps Report 2019 has just been published. This report is the latest in six years of research. With more than 31,000 survey responses, Accelerate is the longest running study of DevOps in academia or industry. In the 2019 edition, research continues to show that DevOps drives business value: high performers at...]]></description>
										<content:encoded><![CDATA[
<p>The <a href="https://services.google.com/fh/files/misc/state-of-devops-2019.pdf" target="_blank" rel="noreferrer noopener"><em>Accelerate: State of DevOps Report 2019 </em></a> has just been published. This report is the latest in six years of research. With more than 31,000 survey responses, <em>Accelerate</em> is the longest running study of DevOps in academia or industry. </p>



<p>In the 2019 edition, research continues to show that DevOps drives business value: high performers at DevOps are &#8220;twice as likely to meet or exceed their organizational goals.&#8221; While this isn&#8217;t a new finding, it&#8217;s very important that this continues to be true: why invest in improving at DevOps if it doesn&#8217;t drive business value? </p>



<p>While there are a ton of valuable insights in the report, in this post I will focus in on the findings which I believe are most relevant to those of us who work &#8220;close to a database.&#8221; There are three very interesting aspects of the research which hit close to home:</p>



<ol><li>Speed and stability are not tradeoffs</li><li>Heavy change processes negatively impact speed<em> and stability</em></li><li>Communities of practice are a common and successful tool to transform culture</li></ol>



<h2>Speed and stability enable one another</h2>



<p><em>Accelerate</em> recommends tracking four key metrics, in addition to availability. Note that half of these are related to speed, and half are related to stability:</p>



<table class="wp-block-table is-style-regular" style="border: 1px solid black;"><tbody><tr><td colspan="2" align="center" style="border: 1px solid black;">Speed</td><td colspan="2" align="center" style="border: 1px solid black;">Stability</td></tr><tr><td style="border: 1px solid black;">Lead time for changes</td><td style="border: 1px solid black;">Deployment frequency</td><td style="border: 1px solid black;">Change failure rate</td><td style="border: 1px solid black;">Time to restore service</td></tr></tbody></table>



<p><em>Accelerate</em> explains that the relationship between these metrics is often misunderstood: &#8220;Many professionals approach these metrics as representing a set of trade-offs, believing that increasing throughput will negatively impact the reliability of the software delivery process and the availability of services. For six years in a row, however, our research has consistently shown that speed and stability are outcomes that enable each other.&#8221; <em>Accelerate: State of DevOps 2019, p17</em></p>



<p>This is a tricky thing for IT professionals who have been in the field for a while to get our head around. </p>



<p>Another way to put this is that, as Microsoft found, &#8220;<a rel="noreferrer noopener" href="https://myinspire.microsoft.com/sessions/47b1c245-db6b-4e99-b36e-fbbccb013508?source=sessions" target="_blank">moving fast with poor quality is as bad as moving slow</a>.&#8221; A raw deployment count doesn&#8217;t give any indication of delivery of value. If many of those deployments are doing rework and making up for poor quality, that needs to be factored in, because the point is <a href="http://donovanbrown.com/post/what-is-devops" target="_blank" rel="noreferrer noopener" aria-label="delivering value to customers (opens in a new tab)">delivering </a><em><a href="http://donovanbrown.com/post/what-is-devops" target="_blank" rel="noreferrer noopener" aria-label="delivering value to customers (opens in a new tab)">value</a></em><a href="http://donovanbrown.com/post/what-is-devops" target="_blank" rel="noreferrer noopener" aria-label="delivering value to customers (opens in a new tab)"> to customers</a>&#8212; hence the importance of stability metrics.  </p>



<p>The important thing for IT leaders and data professionals to notice is that the evidence has surely piled up that DevOps techniques are a tool that helps us improve stability: and when it comes to data, that&#8217;s typically one of the biggest areas where a company cares a great deal about maintaining quality and stability.</p>



<p>There is a clear action for leadership to take here: moving to DevOps means building a team across development and IT silos, and making the metrics above universal outcomes which the entire team moves towards. You must stop rewarding IT based on stability, and stop rewarding software development based on feature delivery: all groups are working towards the full set of metrics.</p>



<h2>Heavy change processes negatively impact speed<em> and stability</em></h2>



<p>IT and database specialists typically act as gatekeepers for production. Traditionally, when things go wrong, heads of IT and their related specialists try to make things better by adding another layer of process to things. This has resulted in complex change approval processes, often including a Change Approval Board.</p>



<p>As much as we like to think that a complex process will make things better by weeding out problematic deployments, <em>Accelerate</em> finds that in our attempt to make things better, we&#8217;re actually making it worse:</p>



<blockquote class="wp-block-quote"><p> <br>&#8230;we investigated whether a more formal approval process was associated with lower change fail rates and we found no evidence to support this hypothesis, consistent with earlier research. We also examined whether introducing more approvals results in a slower process and the release of larger batches less frequently, with an accompanying higher impact on the production system that is likely to be associated with higher levels of risk and thus higher change fail rates. Our hypothesis was supported in the data.</p><cite><em>Accelerate: State of DevOps 2019, pages 50-51</em></cite></blockquote>



<p>This doesn&#8217;t mean that you must get rid of change management. Many organizations simply cannot do that due to regulations, and <em>Accelerate</em> also doesn&#8217;t suggest that as the path to success.</p>



<p>But we do need to work towards significantly changing the way that change management and change approvals are done. This includes clarifying change processes to make it incredibly clear to everyone what needs to be done to have a change approved. This also means transforming the jobs of specialists from production gatekeepers into consultants in the software development process: both to build the most effective change process, and to act as peers to review critical changes early in development, and shape the testing strategies for those changes.</p>



<p>Similarly, leadership on Change Approval Boards should shift into more strategic roles, identifying areas where capabilities are needed the most, and providing guidance and resources on how to improve.</p>



<p>Changes like this are not going to happen overnight, particularly in larger enterprises. Perhaps this is part of why <em>Accelerate</em> found this year for the first time that Enterprises, defined as organizations with more than 5,000 employees, comparatively are lower performers than smaller organizations. However, enterprises <em>can</em> change their culture and processes. On a personal note, I am frequently surprised at the massive level of transformation that I&#8217;ve observed from my friends who work at Microsoft over the last few years, for example. In an Enterprise situation, the game is about persistence and about seizing promising opportunities to work in new ways.</p>



<h2>Communities of practice are a common and successful tool to transform culture</h2>



<p>One question I often get from database developers or DBAs is how they can convince developers to change their habits in one way or another. This is sometimes phrased as, &#8220;they don&#8217;t listen to me.&#8221;</p>



<p><em>Accelerate</em> finds that if you want to change your culture, you&#8217;re probably going to need to get out of your silo. They asked respondents to share how DevOps and Agile is spread at their organizations, and that found that &#8220;Low performers tend to favor Training Centers (also known as DOJOs) and Centers of Excellence (CoE) &#8212; strategies that create more silos and isolated expertise.&#8221; <em>Accelerate: State of DevOps 2019, p71</em></p>



<p>We already have plenty of silos and isolated expertise when it comes to databases, we certainly don&#8217;t want to create more.</p>



<p>Instead, tools like Communities of Practice are found to be more effective. 57% of &#8220;Elite&#8221; performers were found to use Communities of Practice, the heaviest concentration of any single strategy studied.</p>



<p>Communities of Practice build both knowledge and community inside organizations. For IT leadership, it&#8217;s critical to encourage specialist groups in your organization to seed and sponsor these groups, and to participate in them as active community members. For specialists such as DBAs, establishing a Community of Practice around database development is your best tool toward transitioning from being a &#8220;production gatekeeper&#8221; into becoming an internal consultant who shapes how database development is done in your organization &#8212; a key contributor and collaborator in the software development lifecycle.</p>



<h2>Want more insights?</h2>



<p>You can download the <a href="http://cloud.google.com/devops/state-of-devops/" target="_blank" rel="noreferrer noopener"><em>Accelerate: State of DevOps Report 2019 </em></a> today.</p>



<p>Catch a recording of <a href="https://event.on24.com/wcc/r/2067797/C5FA3C28B6227220298169CEECAB6613?partnerref=RGW">our webinar “What You Need to Know About the 2019 DORA Accelerate State of DevOps Report, with Jez Humble and Steve Jones”</a>.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/08/22/key-findings-for-database-professionals-from-the-accelerate-state-of-devops-report-2019/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6541</post-id>	</item>
		<item>
		<title>Azure DevOps: How to Set a Custom Release Branch Folder Filter in Build Pipeline Triggers (video)</title>
		<link>https://littlekendra.com/2019/08/19/azure-devops-how-to-set-a-custom-release-branch-folder-filter-in-build-pipeline-triggers-video/</link>
					<comments>https://littlekendra.com/2019/08/19/azure-devops-how-to-set-a-custom-release-branch-folder-filter-in-build-pipeline-triggers-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 19 Aug 2019 15:00:00 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6539</guid>

					<description><![CDATA[This is the first in a series of posts about simple things that I had a hard time figuring out in Azure DevOps services. It can be very useful to enable Continuous Integration for multiple folders in your DevOps pipeline &#8212; say, for every branch created under releases/ or features/. But configuring this can be...]]></description>
										<content:encoded><![CDATA[
<p>This is the first in a series of posts about simple things that I had a hard time figuring out in Azure DevOps services.</p>



<p>It can be very useful to enable Continuous Integration for multiple folders in your DevOps pipeline &#8212; say, for every branch created under releases/ or features/. But configuring this can be strangely confusing! In this video, I show how to get a custom release branch folder set in your triggers for both build and release pipelines. Then I show a quick test of the automation at work in my demo pipeline.</p>



<p>Spoiler: the fix is to type directly into the filter box and hit enter. It looks like that box is only for filtering existing branches, but you can use it for edits! The fix starts in the video at <a href="https://www.youtube.com/watch?v=73oi-eXKQd8&amp;t=110s">1:50</a> if you only want to see that bit. </p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Azure DevOps: How to Set a Custom Release Branch Folder Filter in Build Pipeline Triggers" width="640" height="360" src="https://www.youtube.com/embed/73oi-eXKQd8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/08/19/azure-devops-how-to-set-a-custom-release-branch-folder-filter-in-build-pipeline-triggers-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6539</post-id>	</item>
		<item>
		<title>SQL Server Management Studio is as Relevant as Ever</title>
		<link>https://littlekendra.com/2019/08/14/sql-server-management-studio-is-as-relevant-as-ever/</link>
					<comments>https://littlekendra.com/2019/08/14/sql-server-management-studio-is-as-relevant-as-ever/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 14 Aug 2019 14:40:45 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<category><![CDATA[Tech Community]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6525</guid>

					<description><![CDATA[After almost fifteen years of heavy usage by developers and database administrators (DBAs), it might seem like Microsoft’s free tool, SQL Server Management Studio (SSMS), is about to go out of style. After all, SSMS is no longer the cool new kid on the block: Microsoft has shown consistent effort to develop their new tool,...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/08/fig-13-08-2019_19-00-34.jpg?resize=150%2C150&#038;ssl=1" alt="" class="wp-image-6526" width="150" height="150" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/08/fig-13-08-2019_19-00-34.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/08/fig-13-08-2019_19-00-34.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 150px) 100vw, 150px" data-recalc-dims="1" /><figcaption>Sometimes you keep a classic around</figcaption></figure></div>



<p>After
almost fifteen years of heavy usage by developers and database administrators
(DBAs), it might seem like Microsoft’s free tool, <a href="https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms">SQL
Server Management Studio</a> (SSMS), is about to go out of style. </p>



<p>After
all, SSMS is no longer the cool new kid on the block: Microsoft has shown consistent
effort to develop their new tool, <a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/what-is">Azure
Data Studio</a> (the artist formerly known as SQL Operations Studio), since
November 2017. Azure Data Studio is built on the modern foundation of Microsoft’s
<a href="https://code.visualstudio.com/">VS Code</a>, whereas SQL Server
Managed Studio is related to the legacy Visual Studio Shell.</p>



<p>Based
on this overview, it might seem like a new SQL Server DBA or developer should primarily
learn Azure Data Studio, not SSMS. And it might similarly seem like vendors
should focus on developing new tooling only for Azure Data Studio.</p>



<p>But
when you look into the details of how Azure Data Studio is being developed, it
becomes clear that SSMS is still just as relevant than ever:</p>



<h2>Azure Data Studio really
shines where it specializes in different functionality than SSMS provides</h2>



<p>While both Azure Data Studio and SSMS each provide an interface to author queries and to execute them against relational database instances, I find that the user experience in Azure Data Studio is often not nearly as smooth as it is in SSMS.</p>



<p>Where Azure Data Studio really shows its value is in unique experiences:</p>



<ul><li><a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/sql-notebooks">SQL
Notebooks</a> (based on Jupyter notebooks) which offer an experience of “interactive
documentation” and more</li><li>The ability for users to connect, manage, and
query different database platforms, using <a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/postgres-extension?">tools
like the PostgreSQL extension</a></li><li>The ability for MacOS or Linux users to run
Azure Data Studio natively, without installing a Windows client</li><li>The ability to work in other languages,<a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/powershell-extension">
such as PowerShell</a></li></ul>



<h2>Azure Data Studio is being built to sometimes connect with SSMS </h2>



<p>One Azure Data Studio feature I noticed recently is “Release of Database Administration Tool Extensions for Windows” <a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/release-notes-azure-data-studio?view=sql-server-2017#june-2019">in June 2019</a>. Here’s the overview of the feature:</p>



<blockquote class="wp-block-quote"><p>This extension launches two of the most used experiences in SQL Server Management Studio <em>from Azure Data Studio</em>.</p><cite><a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/release-notes-azure-data-studio?view=sql-server-2017#june-2019">Release Notes for Azure Data Studio</a> (emphasis mine)</cite></blockquote>



<p>As a MacOS user, I was slightly disappointed that this is a Windows-only feature &#8212; it&#8217;s Windows-only because it requires that SSMS be installed, so the SSMS feature can be launched inside Azure Data Studio. </p>



<p>However, I understand where this is coming from: I don’t need <em>every</em> SSMS feature to work natively in Azure Data Studio on MacOS, and I suspect that this saved a ton of engineering work. If Microsoft plans to support and develop both tools long-term (and I believe this is evidence that they do), it makes sense to strategically create these dependencies.</p>



<h2>SSMS is still under active development</h2>



<p>A
major update to SQL Server Management Studio, SSMS 18.0, released in April 2019.
This release included many improvements and new features. New features have
been regularly added in the versions since this release as well.</p>



<p>This pattern shows evidence to support Dinakar
Nethi’s suggestion in his <a href="https://cloudblogs.microsoft.com/sqlserver/2019/04/24/sql-server-management-studio-ssms-18-0-released-for-general-availability/">SSMS
18.0 release announcement</a> that we should “think of these two tools not as
separate tools doing different things, but as one integrated tool. Each tool
has different experiences built into it and can be launched from the other
seamlessly.”</p>



<h2>Users still care a ton about SSMS – and therefore, &nbsp;vendors care about it as well</h2>



<p>One
comment I have frequently heard over the years from developers and DBAs who
work with multiple platforms is that they are impressed by the richness of
tooling provided for the Microsoft Data Platform at no extra charge. SSMS provides
a very rich experience and covers a vast amount of features – and we users very
much enjoy it. </p>



<p>For this reason, vendors will continue to build new features for SSMS. </p>



<p>For example, at Redgate, we have just created a major new extension for <a href="https://www.red-gate.com/products/sql-development/sql-change-automation/">SQL Change Automation in SSMS</a>, which allows users to author changes in <a href="http://assets.red-gate.com/solutions/database-devops/state-or-migrations-based-database-development.pdf">a migrations-first approach to development</a>. We wish to empower teams to collaborate both across Visual Studio and other IDEs, and we recognize that SSMS continues to be the primary tool for Microsoft Data Platform DBAs and many developers – it remains incredibly valuable to offer users the ability to work in SSMS.</p>



<h2>Where do we go from here?</h2>



<p>SSMS
remains the primary tool for SQL Server specialists. Azure Data Studio is a terrific,
complementary tool, with strong use cases for cross-platform experiences and SQL
Notebooks.</p>



<p>For new database administrators working with the Microsoft Data Platform, it continues to make sense to download and learn SSMS first – but do take a few minutes to install both tools and play around with the SQL Notebook functionality in Azure Data Studio specifically, these can be a great tool for you to document information as you learn. &nbsp;This is also true for developers who need to perform some operational tasks. </p>



<p>For occasional users who only need to connect to existing instances and run queries, either SSMS or Azure Data Studio is a fine choice.  </p>



<p>For odd users like me, who generally run in a MacOS or Linux environment, and who periodically do more in-depth performance tuning and database management tasks, it’s especially valuable to become fluent in both tools. I love using Azure Data Studio for its Notebook experience and running occasional queries against SQL Server running in Docker on my laptop when appropriate, and only firing up a Virtual Machine to use SSMS when I need a more in-depth experience. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/08/14/sql-server-management-studio-is-as-relevant-as-ever/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6525</post-id>	</item>
		<item>
		<title>How to Persuade Your Company to Change</title>
		<link>https://littlekendra.com/2019/07/19/how-to-persuade-your-company-to-change/</link>
					<comments>https://littlekendra.com/2019/07/19/how-to-persuade-your-company-to-change/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 19 Jul 2019 18:31:39 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6520</guid>

					<description><![CDATA[Like a lot of developers and database administrators, I do a fair amount of short-term problem solving during the course of my normal work week. I get to join some Redgate sales calls, often during Proof-of-Concept exercises, and this frequently involves helping brainstorm about the best way to use our tools to solve a specific...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/07/fig-19-07-2019_18-24-46.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6521" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/07/fig-19-07-2019_18-24-46.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/07/fig-19-07-2019_18-24-46.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>Like a lot of developers and database administrators, I do a fair amount of short-term problem solving during the course of my normal work week. I get to join some Redgate sales calls, often during Proof-of-Concept exercises, and this frequently involves helping brainstorm about the best way to use our tools to solve a specific need for monitoring, database development, or automation. I also pick up customer questions from the <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://dbatools.io/slack/" target="_blank">#Redgate channel in the SQL Server Community Slack</a> and <a rel="noreferrer noopener" aria-label="answer forum questions (opens in a new tab)" href="https://forum.red-gate.com/discussion/85596/invoke-databasebuild-with-table-with-a-full-text-index" target="_blank">answer forum questions</a> for Redgate when I can. </p>



<p>Inevitably, when you do a regular amount of troubleshooting and brainstorming with customers, you start to notice patterns and have ideas about how to make things easier, faster, or better in some ways. Sometimes this is an idea for a new process or a new product, or it might be a big change to existing processes or products.</p>



<p>The challenge is getting it to happen, especially when doing so requires time from your coworkers.</p>



<p>I&#8217;m getting close to my <a href="https://littlekendra.com/2018/08/15/im-joining-redgate-software/">one year anniversary at Redgate</a>, which caused me to pause and think critically about the biggest patterns I&#8217;ve seen with one of my favorite Redgate products &#8212; and about some changes I would like to see to make that product even more awesome. (I&#8217;m not going to tell you what the product or the idea is in this post, by the way. The point is how I&#8217;m trying to get the idea done.) I realized that this idea is pretty important to me, and I would <em>really</em> like to see it happen&#8211; but it&#8217;s not a simple or easy thing. So I started to think about what I could do to try to cause some change to happen in this area.</p>



<h2>Saying, &#8220;hey, we should do this thing!&#8221; usually isn&#8217;t enough</h2>



<p>Occasionally, you can successfully initiate change simply by dropping the right idea into the right brains at the right time. But this is pretty rare, in my experience. Usually that &#8220;right time&#8221; described is when you can clearly and quickly show that the change will either result in a large amount of revenue immediately, or avoid a disaster which is provably imminent. </p>



<p>For anything else, even amazing ideas risk falling by the wayside. There are a lot of great ideas out there, but typically all our coworkers and managers already have a direction set for the next few weeks or months, if not longer.</p>



<p>It takes more than mentioning an idea to get it prioritized, much less actually done. So we need to put in more work to give our great idea a better chance at happening.</p>



<h2>Think about the way your company likes to communicate</h2>



<p>Company cultures vary quite a bit. If you work at a startup, you&#8217;re going to pitch ideas quite differently than if you work for a government agency. </p>



<p>At Redgate, I&#8217;ve learned that people <em>love</em> writing and reading. You can see this about us externally by browsing <a rel="noreferrer noopener" aria-label="Simple Talk (opens in a new tab)" href="https://www.red-gate.com/simple-talk/" target="_blank">Simple Talk</a>, our <a href="https://www.red-gate.com/hub/product-learning/">Product Learning articles</a>, and even <a rel="noreferrer noopener" aria-label="our product documentation (opens in a new tab)" href="https://documentation.red-gate.com/sca3/developing-databases-using-sql-change-automation" target="_blank">our product documentation</a>.  We also internally use video quite a bit &#8212; we share video for live meetings and demos, and often share recorded meetings for distributed teams and learning afterward.</p>



<p>For my pitch, I decided to focus mostly on writing, but to use a bit of recorded video as well. I wrote a paper about the change I was advocating, and why it should be done.</p>



<p>Here&#8217;s what I included in the proposal.</p>



<h2>Give an executive summary</h2>



<p>My proposal ended up at around 11 pages, including the table of contents. This is fine for my audience&#8211; like I said, Redgaters like writing and research. Even so, not everyone has time to read 11 pages. Even if they do have time, you should start with a pitch about why they should <em>spend</em> the time with your proposal.</p>



<p>That&#8217;s what an executive summary does. Give a short, high-level, one-paragraph overview of what the problem you&#8217;re solving is, the impact change will have on your organization, and a suggested course of action.</p>



<h2>Explain the problem, and talk in dollar signs whenever you can</h2>



<p>The next thing I did was detail the problem I&#8217;m solving: what thing or things could be much better? How does my idea relate to those problems?</p>



<p>In my experience, the more you can quantify the opportunity you see in revenue, and the more specific you can be about that, the more of a response you will get. </p>



<p>In my case, I explained this in three steps:</p>



<ul><li>The current experience, and why/where it could be improved</li><li>A list of customers who asked for something related to my idea, or who could / would have benefitted from what I am proposing</li><li>Details on how competing tools measure up in this area</li></ul>



<p>This wasn&#8217;t something I did in five minutes &#8212; it took several research sessions. I dug through my email and identified some customers that way, and also asked colleagues for examples they remembered. I searched through Salesforce to identify more examples, and also to be able to quantify the size of deals which might be accelerated or created if my idea was implemented. I also did research on competing tools. </p>



<h2>Be open to other solutions</h2>



<p>Possibly the hardest part about this whole thing is to not get married to your idea. </p>



<p>Yes, you&#8217;re proposing a specific thing. But the really important bit is actually bringing focus to the problem or opportunity that &#8220;thing&#8221; addresses. There may be ways this can be approached more quickly, or ways that that address it more thoroughly &#8212; possibly those things are even more awesome.</p>



<p>Because of this, I didn&#8217;t spend too much time locking my proposal down to the details of the exact thing I&#8217;m recommending. Instead, I wrote more about the types of functionality that I am proposing, and what customers have told me they want to be able to do quickly and easily &#8212; along with some notes about why I believe this is all humanly possible.</p>



<h2>What happens next?</h2>



<p>Redgate has a quite open culture. Earlier this week, I shared my proposal out with my team and a few coworkers. Yesterday, I shared it with the stakeholders for the products involved in my idea. </p>



<p>Today, I got a meeting invite to talk through things with the product teams next week. </p>



<h2>So you&#8217;ve got a meeting. What if nothing happens?</h2>



<p>As much as I like my idea, it&#8217;s not something that&#8217;s likely to happen overnight. It&#8217;s not a small amount of work, and there&#8217;s also other awesome things in the works.  </p>



<p>So, even if my idea gets prioritized, I don&#8217;t consider my proposal to be &#8220;done.&#8221;  I plan to add more customer use cases to it over time as I come across them, and also to regularly ask other people at Redgate if they have new ideas in this problem space that would make a big difference. Since the bulk of the proposal is written, this maintenance piece is not particularly hard to do, and it will keep my proposal fresh &#8212; just right for the exact moment when the stars align and it&#8217;s the right moment for this change.</p>



<h2>This isn&#8217;t the only way to inspire change</h2>



<p>The approach that I described here is one that I&#8217;ve tailored to my situation and my audience. There are other ways to do this. </p>



<p>For some ideas, you may be able to create a working prototype or proof of concept of what you&#8217;re talking about &#8212; even potentially put it to work on a small scale. When that&#8217;s possible, you get even better customer stories and an ability to show the potential impact on dollar signs in another way. Absolutely take the option to &#8220;just get started&#8221; whenever you can.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/07/19/how-to-persuade-your-company-to-change/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6520</post-id>	</item>
		<item>
		<title>Managing Cross-Database Dependencies in Builds (Redgate video)</title>
		<link>https://littlekendra.com/2019/06/25/managing-cross-database-dependencies-in-builds-redgate-video/</link>
					<comments>https://littlekendra.com/2019/06/25/managing-cross-database-dependencies-in-builds-redgate-video/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 25 Jun 2019 15:00:59 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6516</guid>

					<description><![CDATA[Building your database code is an essential practice to ensure that it compiles from source and that dependencies are met. But things can get tricky when you have objects in some databases which is dependent upon objects in other databases &#8212; or even circular dependencies. In this 20 minute video, I give an overview of...]]></description>
										<content:encoded><![CDATA[
<p>Building your database code is an essential practice to ensure that it compiles from source and that dependencies are met. But things can get tricky when you have objects in some databases which is dependent upon objects in other databases &#8212; or even circular dependencies. </p>



<p>In this 20 minute video, I give an overview of the two most popular options that Redgate customers use to manage cross-database dependencies when building SQL Server databases with Redgate&#8217;s <a href="https://www.red-gate.com/products/sql-development/sql-change-automation/">SQL Change Automation</a>.</p>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/20xJTUokUxM" width="800" height="450"></iframe></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/06/25/managing-cross-database-dependencies-in-builds-redgate-video/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6516</post-id>	</item>
		<item>
		<title>How Developers and DBAs Collaborate in a DevOps World (video)</title>
		<link>https://littlekendra.com/2019/06/13/how-developers-and-dbas-collaborate-in-a-devops-world-video/</link>
					<comments>https://littlekendra.com/2019/06/13/how-developers-and-dbas-collaborate-in-a-devops-world-video/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 13 Jun 2019 14:30:48 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6511</guid>

					<description><![CDATA[You&#8217;re a DBA, and your development team is all-in on doing DevOps, and they want to include the database. Should your DBA team limit the permissions or options for automation? Or should you instead re-think how your two teams work together? In this 40 minute episode, Kendra discusses DevOps team topologies, the changing role of...]]></description>
										<content:encoded><![CDATA[
<p>You&#8217;re a DBA, and your development team is all-in on doing DevOps, and they want to include the database. Should your DBA team limit the permissions or options for automation? Or should you instead re-think how your two teams work together? </p>



<p>In this 40 minute episode, Kendra discusses DevOps team topologies, the changing role of DBA teams in DevOps, and the opportunities available in creating communities of practice around database development.</p>



<p><em>Prefer to listen on the go? You can get this episode on </em><a href="https://podcasts.apple.com/ca/podcast/dear-sql-dba/id1117507864?mt=2"><em>iTunes</em></a><em>, </em><a href="http://dearsqldba.libsyn.com/how-do-developers-and-dbas-collaborate-in-a-devops-world"><em>download the audio file</em></a><em>, or find Dear SQL DBA in your favorite podcast app. </em></p>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/WeIASio03vE" width="800" height="450"></iframe></figure>



<h2>Bookmarks of topics covered</h2>



<p><a href="https://www.youtube.com/watch?v=WeIASio03vE&amp;t=30s">00:30</a> &#8211; Our question, from a DBA <br><a href="https://www.youtube.com/watch?v=WeIASio03vE&amp;t=420s">7:00</a> &#8211; Why bother with DevOps? <br><a href="https://www.youtube.com/watch?v=WeIASio03vE&amp;t=563s">9:23</a> &#8211; Team topologies, aka rethinking how the teams work together. This discussion includes notes on where and when DBAs review changes and talk about architecture in a DevOps way of working. <br><a href="https://www.youtube.com/watch?v=WeIASio03vE&amp;t=1280s">21:20</a> &#8211; Changing the DBA role from gatekeepers to internal consultants<br><a href="https://www.youtube.com/watch?v=WeIASio03vE&amp;t=1950s">32:30</a> &#8211; Creating a community of practice <br><a href="https://www.youtube.com/watch?v=WeIASio03vE&amp;t=2318s">38:38</a> &#8211; Recap and wrap up</p>



<h2>Links from the video</h2>



<p>DevOps Topologies &#8211; <a href="https://web.devopstopologies.com/">https://web.devopstopologies.com/</a></p>



<p>Communities of Practice &#8211;  <a href="https://wenger-trayner.com/resources/what-is-a-community-of-practice">https://wenger-trayner.com/resources/what-is-a-community-of-practice</a></p>



<p>Got a question to ask Dear SQL DBA? <a href="https://sqlworkbooks.com/ask">https://sqlworkbooks.com/ask</a></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/06/13/how-developers-and-dbas-collaborate-in-a-devops-world-video/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6511</post-id>	</item>
		<item>
		<title>A letter to my 20 year-old self</title>
		<link>https://littlekendra.com/2019/06/11/a-letter-to-my-20-year-old-self/</link>
					<comments>https://littlekendra.com/2019/06/11/a-letter-to-my-20-year-old-self/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 11 Jun 2019 18:16:11 +0000</pubDate>
				<category><![CDATA[Tech Community]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6508</guid>

					<description><![CDATA[This post is a part of #tsql2sday, a monthly community ritual where a topic is proposed by a community member and everyone is invited to join in. This month&#8217;s topic is from Mohammad Darab, who encouraged us to: &#8220;Write your 20 year old self a letter. If you could go back in time and give...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><a href="https://mohammaddarab.com/t-sql-tuesday-115-dear-20-year-old-self/" target="_blank" rel="noreferrer noopener"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2010/12/tsql2sday150x150_thumb1.jpg?resize=116%2C116&#038;ssl=1" alt="" class="wp-image-1413" width="116" height="116" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2010/12/tsql2sday150x150_thumb1.jpg?w=154&amp;ssl=1 154w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2010/12/tsql2sday150x150_thumb1.jpg?w=150&amp;ssl=1 150w" sizes="(max-width: 116px) 100vw, 116px" data-recalc-dims="1" /></a></figure></div>



<p>This post is a part of <a href="https://twitter.com/search?q=%23tsql2sday&amp;f=live">#tsql2sday</a>, a monthly community ritual where a topic is proposed by a community member and everyone is invited to join in. </p>



<p>This month&#8217;s topic is from Mohammad Darab, who <a href="https://mohammaddarab.com/t-sql-tuesday-115-dear-20-year-old-self/">encouraged us to</a>: &#8220;Write your 20 year old self a letter. If you could go back in time and give yourself advice, what would it be?&#8221;</p>



<p>The advice I would give to my 20 year old self is the same advice I give to myself today, more than 20 years later:</p>



<h2>You are a person who throws yourself into your work &#8212; ALL the way into your work</h2>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/06/fig-11-06-2019_18-13-00.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6510" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/06/fig-11-06-2019_18-13-00.jpg?w=300&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/06/fig-11-06-2019_18-13-00.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>You tend to define yourself by your professional activities, and you expect your work to be consistently of very high quality. </p>



<p>One of your greatest strengths is that you are a creative person, but when you narrow your focus too much, when you make your life too much about work, and when you try to make things &#8216;perfect&#8217;, your creativity suffers. Life is a messy business, and to both be productive and to enjoy life, you need to get out of your &#8220;WORK ROBOT&#8221; mindset quite often.</p>



<p>For these reasons, it is important for you to set some boundaries on your work life, and to also put effort into tending to your life outside of work. </p>



<p>Tactically, this means that you need to practice:</p>



<ul><li>Regularly turning away from work messaging and tasks when you are not at work and not on-call. That email <em>can</em> wait, no matter what that little voice in your head suggests.</li><li>Finding hobbies and activities outside of the workplace and showing up for them, regularly.</li><li>Staying in communication with your friends and family, and practicing getting back in touch with people you value when you drift apart.</li><li>Saying &#8220;no&#8221; at work in a multitude of ways, many of which don&#8217;t use the word &#8220;no&#8221; directly, but do involve you not doing everything yourself. You will feel guilty most times you do this, but that does not mean that the practice is wrong.</li><li>Asking for help at work in a multitude of ways when tasks can&#8217;t be completed as they were estimated.</li><li>Accepting that &#8220;good enough&#8221; is often, in fact, good enough. You will repeatedly be frustrated when you can&#8217;t make something perfect and when you make mistakes. Often, it is best to own up to the flaws in yourself and the situation and simply accept it, then move on to the next challenge where you may be able to contribute more. Look forward, girl, there&#8217;s cool stuff ahead.</li></ul>



<h2>On a personal level, throughout the years you will worry &#8212; you will worry A LOT</h2>



<p>You will worry about being a nerd, and that you will never really be loved because you are too loud / too fat / too nerdy / too opinionated / not nice enough / not pretty enough / not clever enough / too &#8216;much&#8217;.</p>



<p>You will worry that not everyone likes you, and need to constantly remind yourself that it&#8217;s fine and right and normal for not everyone to like you, and that &#8220;being liked&#8221; is not your measure of success.</p>



<p>You will struggle to shore up your confidence, again and again.</p>



<p>You will frequently experience &#8220;<a href="https://en.wikipedia.org/wiki/Impostor_syndrome">Impostor Syndrome</a>,&#8221; and to compensate for this you will tend to spend even more time working, even more time attempting  to work on something so hard that it is beyond criticism.</p>



<p>There is no easy fix for over-worrying. Tending to your non-work life and helping that flourish will help: this wider perspective helps you to better find role models and sponsors, appreciate your strengths, find opportunities to help others, take criticism constructively, let non-constructive trolling roll away into the abyss of the internet, and to enjoy speaking in your own voice. </p>



<p>But there is no way to banish an over-worrying tendency forever. Learning to let your worries pass instead of clinging onto them like the world&#8217;s worst life raft will be a life-long project. You will constantly find new tools. You will always need to adapt.</p>



<p>The good news is that you do seem to love a good long project. </p>



<p>So get at it, friend. There&#8217;s still a lot of awesome things to do. Life passes in a flash, but while we are here, we always have the chance to appreciate it and to make it better.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/06/11/a-letter-to-my-20-year-old-self/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6508</post-id>	</item>
		<item>
		<title>DBAs: Stop Denying Sysadmin to Developers</title>
		<link>https://littlekendra.com/2019/05/30/dbas-stop-denying-sysadmin-to-developers/</link>
					<comments>https://littlekendra.com/2019/05/30/dbas-stop-denying-sysadmin-to-developers/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 30 May 2019 14:00:55 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6504</guid>

					<description><![CDATA[I recent chatted with some folks who have a permissions problem in SQL Server. The permissions problem isn&#8217;t technical &#8212; it&#8217;s a process problem. The issue is that these folks are trying to configure a build for their SQL Server databases using Redgate tools, but they aren&#8217;t allowed sysadmin permissions on any SQL Server instance...]]></description>
										<content:encoded><![CDATA[
<p>I recent chatted with some folks who have a permissions
problem in SQL Server. The permissions problem isn&#8217;t technical &#8212; it&#8217;s a
process problem. </p>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/05/fig-29-05-2019_18-26-10.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6506" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/05/fig-29-05-2019_18-26-10.jpg?w=300&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/05/fig-29-05-2019_18-26-10.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>The issue is that these folks are trying to configure a build for their SQL Server databases using Redgate tools, but they aren&#8217;t allowed sysadmin permissions on <em>any</em> SQL Server instance in their organization (even in development environments), because of a policy set by the Database Administrators in IT.</p>



<h2>Why do DBAs deny sysadmin permissions in development?</h2>



<p>You may find this type of policy puzzling &#8212; and for good reason. After all, if you don&#8217;t trust developers to keep their own development environment running, why would you ever trust any code they&#8217;ve written enough to deploy it to production?</p>



<p>In that question is a bit of an answer: this policy occurs when there is <em>a fundamental lack of trust</em> between development and operations. </p>



<p>The policy that developers can&#8217;t have sysadmin rights in development has two main justifications used by database administrators:</p>



<ol><li>Concerns that development environments will drift so far from production standards that they will introduce risks to code quality</li><li>Concerns that allowing any account sysadmin rights in development will lead to application accounts using sysadmin rights in production</li></ol>



<h2>Denying sysadmin rights to developers locks you into manually controlling environment drift &#8212; instead of managing it the smart way</h2>



<p>If you&#8217;ve worked in IT or in developing changes for databases for a while, you&#8217;ve probably come across development database instances that are a complete mess &#8212; there are databases with odd names which maybe haven&#8217;t been used in a long time (but take up a lot of space), jobs failing, low disk space, and settings which resemble nothing in production. This messy type of development instance isn&#8217;t <em>completely</em> surprising, because developers need room to experiment. </p>



<p>Sometimes when the DBAs get called in to help support and instance like this, they respond by locking down permissions. If developers have to <em>ask</em> to create a database, we won&#8217;t get unexplained databases, and so on. The idea is to prevent the drift of these shared environments.</p>



<p>But treating developers like children won&#8217;t improve the quality of development long term. Removing permissions in development environments instead limits the ability of developers to experiment and automate, and limits the tools you can use to improve code quality.</p>



<h2>How DBAs should fix a drifted shared development environment: blow it up</h2>



<p>It&#8217;s true that nobody wants to support a shared development database environment. But here&#8217;s the thing: <em>you shouldn&#8217;t even have that shared development environment</em>.  As Troy Hunt explains in &#8220;<a href="https://www.troyhunt.com/unnecessary-evil-of-shared-development/">The unnecessary evil of the shared development database</a>,&#8221;  it makes a lot more sense for each developer to have a dedicated environment to work in.</p>



<p>One of the things that happens when you develop in a private environment and use standardized practices for your database code is that you <em>automatically</em> begin to control environment drift, by limiting routes for deployment. </p>



<p>In this world, there is no &#8220;wild west&#8221; shared development environment. Instead you have a workflow like this:</p>



<ul><li>Each developer has a private development environment</li><li>Each developer checks their database code into source control</li><li>Branches in source control are combined with the private development environment to provide isolation / room to experiment for changes (in a way that will not impact other developers)</li><li>When code is ready to be merged in, automated processes build the code &#8212; proving that the code in source compiles properly and that all dependencies are met<ul><li>Having sysadmin rights for the process building your code is helpful for flexibility &#8212; for example, you might want your build to create a SQL Agent job if it does not exist, etc</li></ul></li><li>Automation also provides support for deploying that code to a fresh environment for review</li></ul>



<p>This process emphasizes that development environments need to be able to be quickly reset / recreated whenever needed, and that doing so should not impact other developers. </p>



<p>This approach also forces developers to ensure that configuration changes are standardized and are handled by code as much as possible, as there is no ability for them to do manual configuration to make the build or review process succeed.</p>



<p>Most importantly, this approach reduces environment drift while also using automation to <em>improve code quality</em>.</p>



<p>But a key to making this work is allowing high permission right to the accounts which are carrying out the build and other automation.</p>



<h2>What about the possibility of a &#8220;sysadmin free for all&#8221;?</h2>



<p>The other reason this policy creeps up is the idea that developers can&#8217;t be trusted to follow the <a href="https://en.wikipedia.org/wiki/Principle_of_least_privilege">principle of least privilege</a>, and if you give them sysadmin rights for anything they will use it for everything.</p>



<p>Let&#8217;s assume that&#8217;s a correct assumption for a moment. Giving developers lower privilege won&#8217;t actually fix the problem if they are always going to configure accounts to have the maximum permission allowed (&#8220;everything except sysadmin&#8221;). </p>



<p>This, again, is an issue of trust. </p>



<p>The better answer here is not to focus solely on what developer&#8217;s permissions are in the development environment. The answer is to focus on the permissions that application <em>service accounts</em> have, and to examine when and how code reviews can make sure that the roles used by service accounts are following the principle of least privilege.</p>



<h2>To survive, DBAs need to stop being the TSA</h2>



<p>We increasingly live in a world where the ability to deliver changes in software quickly, without impacting the user experience, is a core requirement to doing business.</p>



<p>However, we still live in a world where database administrator groups create policies that slow down development. </p>



<p>Worse, these policies also prevent the effective use of tools &#8212; like automation for builds and deployment of code to fresh environments for review &#8212; that <em>improve </em>code quality and reduce the risk of environment drift.</p>



<p>If you were a business owner and were investigating how to speed up time to market for your products, would you want your DBA team to be creating and enforcing policies that slow down releases and don&#8217;t improve quality?</p>



<p>Or would you be tempted to replace them with a different team, who would invest in using automation to improve code quality as well as improve release tempo?</p>



<p>Don&#8217;t make your organization choose. As DBAs we need to leave our obsession with policies behind, and focus on how to get what we truly want: high quality deployments and efficient management of our environments.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/05/30/dbas-stop-denying-sysadmin-to-developers/feed/</wfw:commentRss>
			<slash:comments>13</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6504</post-id>	</item>
		<item>
		<title>What&#8217;s Unique About SQL Saturdays: Nearly Everyone Interacts with Other People</title>
		<link>https://littlekendra.com/2019/05/21/whats-unique-about-sql-saturdays-nearly-everyone-interacts-with-other-people/</link>
					<comments>https://littlekendra.com/2019/05/21/whats-unique-about-sql-saturdays-nearly-everyone-interacts-with-other-people/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 21 May 2019 15:00:32 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6492</guid>

					<description><![CDATA[Today I was looped in on an email thread about the pros and cons of attending a specific event. One person on the thread asked if any of us had attended the event in the past, and whether or not event attendees were engaged with presenters and vendor representatives. My immediate thought was: of course...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="240" height="320" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/04/kathi-taking-questions-at-SQL-Saturday-Cambridge.png?resize=240%2C320&#038;ssl=1" alt="" class="wp-image-6493" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/04/kathi-taking-questions-at-SQL-Saturday-Cambridge.png?w=240&amp;ssl=1 240w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/04/kathi-taking-questions-at-SQL-Saturday-Cambridge.png?resize=225%2C300&amp;ssl=1 225w" sizes="(max-width: 240px) 100vw, 240px" data-recalc-dims="1" /><figcaption>My friend and colleague, Kathi Kellenberger, taking questions in her SQL Saturday session on Machine Learning for beginners</figcaption></figure></div>



<p>Today I was looped in on an email thread about the pros and cons of attending a specific event. One person on the thread asked if any of us had attended the event in the past, and whether or not event attendees were engaged with presenters and vendor representatives. </p>



<p>My immediate thought was: <em>of course </em>the attendees were engaged, because the event is a <a href="https://sqlsaturday.com/default.aspx" target="_blank" rel="noreferrer noopener" aria-label="SQL Saturday (opens in a new tab)">SQL Saturday</a>.&nbsp; I&#8217;ve never been to a SQL Saturday where the attendees weren&#8217;t engaged. </p>



<p>But, I realized that it&#8217;s a fair question. </p>



<h2>This level of interaction isn&#8217;t a given for events, much less tech events</h2>



<p>I&#8217;ve been to other tech events &#8212; from free events to very expensive ones &#8212; where attendees didn&#8217;t interact much with anyone else. Mostly people worked away on their laptops/phones/tablets quietly (maybe taking notes, maybe playing Minecraft, hard to say). The speakers seemed a little inaccessible and like they were very busy apart from when they were speaking, and they&#8217;d generally disappear right after their talk.</p>



<p>There are definitely a lot of people who attend SQL Saturday events who aren&#8217;t yet part of the broader SQL Server / Microsoft Data Platform community. They&#8217;re at a crossroads in their career and they&#8217;re not completely sure if this technology is for them yet, and they&#8217;re checking out this free event to see what they might learn from it. But I think the unusual thing about SQL Saturdays is that these events tend to draw these new folks into conversation with people who are already part of the community.</p>



<h2>SQL Saturdays are very casual, and you don&#8217;t need to act like an expert</h2>



<p>It&#8217;s traditional for speakers at SQL Saturdays to encourage questions and comments, and usually at SQL Saturdays there is no lack of attendee questions. </p>



<p>At some tech events, nobody ever &#8220;breaks the ice&#8221; during sessions by asking a question that&#8217;s accessible to beginners, and it can be tough to get the audience to ask questions or make comments. (Aside: if you are a speaker and would like me to ask a dumb question✣ from the audience to break the ice in your session, I am happy to do so! I am proud to provide this free service anytime I am around.) I&#8217;ve never found &#8220;too much quiet&#8221; to be a problem with SQL Saturdays, even at the events in countries where people are traditionally more reserved. I attended a lunchtime session at a SQL Saturday in Cambridge where <a href="https://twitter.com/GFritchey">Grant Fritchey</a> got a room full of British people to share their experiences and pain points throughout the whole hour. </p>



<p>SQL Saturday organizers are also very good at packing their schedules with a variety of sessions that are quite accessible for people at different phases of their career and different experience levels, which helps everyone find content they can relate to.</p>



<h2>A huge factor is that people in the SQL Saturday community are extremely welcoming</h2>



<p>There&#8217;s a certain community vibe at the event that I think newcomers often feel and want to be part of. You see people who are chatting about what they&#8217;re up to, their experiences, and what they want to learn, and it&#8217;s natural to want to be a part of that. </p>



<p>I tend to take this community vibe, and in fact the supportiveness of the whole SQL Server community for granted, most of the time. But it&#8217;s a real thing, and it&#8217;s great to be a part of.</p>



<h2>So, what are you waiting for? </h2>



<p>If you haven&#8217;t been to a SQL Saturday and you&#8217;re reading this, <a href="https://sqlsaturday.com/default.aspx">check out SQLSaturday.com</a> and look for SQL Saturday events in your area or your region. Even if you&#8217;re not committed to working in the Microsoft data platform. Even if you&#8217;re just a little bit curious about learning something for free on a Saturday. It&#8217;s a wonderful event, and it makes it easy for you to meet new people, to check out all sorts of new things, and to get engaged with the community of people involved in the Microsoft Data Platform.</p>



<p>I hope to see you at an event soon.</p>



<hr class="wp-block-separator"/>



<p>✣ On dumb questions: what I generally mean by a &#8220;dumb question&#8221; is one that makes the asker sound like a bit of a newbie / beginner / person who isn&#8217;t in-the-know. I have become a person who loves to ask these, because having the question asked and answered thoughtfully often changes the nature of the dynamic in the room and makes it OK for everyone else to be a bit more vulnerable. It makes it easier for everyone to worry a little bit less about whether they may sound stupid by saying something.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/05/21/whats-unique-about-sql-saturdays-nearly-everyone-interacts-with-other-people/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6492</post-id>	</item>
		<item>
		<title>How to recognize the early stages of burnout, and my treatment plan</title>
		<link>https://littlekendra.com/2019/05/14/how-to-recognize-the-early-stages-of-burnout-and-my-treatment-plan/</link>
					<comments>https://littlekendra.com/2019/05/14/how-to-recognize-the-early-stages-of-burnout-and-my-treatment-plan/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 14 May 2019 15:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6497</guid>

					<description><![CDATA[I recently realized that I&#8217;m in the early stages of burnout. This isn&#8217;t an unfamiliar place for me, but it is new for me to recognize the early signs of burnout in myself before it becomes a full-fledged disaster. This time, I&#8217;m thinking about how I got here, and making an explicit plan to change...]]></description>
										<content:encoded><![CDATA[
<p>I recently realized that I&#8217;m in the early stages of burnout. </p>



<p>This isn&#8217;t an unfamiliar place for me, but it is new for me to recognize the early signs of burnout in myself <em>before</em> it becomes a full-fledged disaster. This time, I&#8217;m thinking about how I got here, and making an explicit plan to change course. </p>



<p>In the hopes of helping someone else out there, I thought some public journaling might be in order.</p>



<h2>How do you recognize if you&#8217;re in the early stages of burnout?</h2>



<p>I have recognized two symptoms which I identify as unusual for me. Together they indicate I&#8217;m heading towards burnout.</p>



<h3>Symptom 1: Lately, I get frustrated and angry by small things</h3>



<p>One warning sign of burnout is when small inconveniences start causing a disproportionately large emotional response.</p>



<p>For example, on a recent weekend I was traveling for work. I was in the Detroit area, about to head to London between a client visit and a conference. It was a beautiful day. I stopped by a local Starbucks and, by chance, another customer was rude to me. </p>



<p>Normally, if I wasn&#8217;t in the early stages of burnout, I would assume the other person was having a bad day, and I&#8217;d shrug this off. It wouldn&#8217;t be something that I&#8217;d even be likely to remember. But in this case, I felt a lot of anger toward that person. I was <em>livid</em>. </p>



<p>I quickly realized that the way I was feeling was more about me than about that random person in the Starbucks, but it took me a long time to shake off the anger.</p>



<p>This aspect of burnout is particularly tricky, because natural little miscommunications at work can slow you down more than normal, as you&#8217;re now having to handle not just the miscommunication, but also keep your own stress and irritability in check.</p>



<h3>Symptom 2: Lack of excitement</h3>



<p>I&#8217;m also just not as interested in work projects as normal. I&#8217;ve got a lot scheduled, but I often feel like I&#8217;m overwhelmed, and that all I can do is the bare minimum.</p>



<p>This lack of excitement contributes to:</p>



<ul><li>Less curiosity and asking fewer questions</li><li>Taking less time to connect with my teammates and chat</li><li>Poorer listening skills</li><li>More hurried work / less critical thinking</li></ul>



<p>Those things together mean that my work quality goes down a bit. And then <em>that</em> frustrates me.</p>



<h2>What causes me to burn out?</h2>



<p>Like I said, I&#8217;ve been here before &#8212; and I&#8217;ve been past this point, to where I simply couldn&#8217;t cope with the stress of my daily job anymore. Looking back, I can see some trends.</p>



<p>I have a tendency to enjoy working a little too much. And I have a few traits that I believe pay the way to burnout:</p>



<p><strong>I tend to be a perfectionist, and I always want to help. </strong> I don&#8217;t like saying no, I always want to be involved when asked. I like finding a way to not only make things work, but to try to give them an interesting twist, too. I spend more hours working than I should &#8212; and by saying, &#8220;more hours than I should,&#8221; I mean&#8230;</p>



<p><strong>I haven&#8217;t been giving myself enough time to recharge.</strong> For good health, I need to spend time away from a computer. I need to get exercise. I need to spend time outside. Meditating on a daily basis helps me ward off anxiety. Spending time with friends in person really helps as well. One of the things I realize now is that I haven&#8217;t been doing <del>enough of </del>these things lately. </p>



<p><strong>I stretched myself thin and didn&#8217;t leave any room for life to happen.</strong> I signed up for a few more work projects than I should have this spring and summer. They are awesome projects, they are interesting and exciting and important. But I maxed out my schedule (plus a little), complete with loads of travel. It looked barely doable &#8212; until my dog, Mister, unexpectedly passed away.  There was no room in my busy schedule for me to grieve my best doggo friend, and he wasn&#8217;t there to wag and say it&#8217;d all be great anymore. I started to feel trapped.</p>



<h2>(( Perfectionist + overcommitment ) &#8211; self-care ) * grief = TIRE FIRE</h2>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/05/fig-07-05-2019_21-17-42.jpg?resize=225%2C225&#038;ssl=1" alt="" class="wp-image-6500" width="225" height="225" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/05/fig-07-05-2019_21-17-42.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/05/fig-07-05-2019_21-17-42.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 225px) 100vw, 225px" data-recalc-dims="1" /></figure></div>



<p>As a career Ops person, I always want leeway. I like to plan a course where I&#8217;ve got a backup plan in my back pocket, and ideally a few viable alternatives behind that.</p>



<p>When you are headed towards burnout, you start feeling like there&#8217;s no leeway. No alternate plans. You have more stress than you can handle. You&#8217;ve got a seat on the struggle bus, and you&#8217;re not sure who is driving it. </p>



<p>So, what to do to change course?</p>



<p>Here&#8217;s my plan.</p>



<h2>Step 1: Book time off</h2>



<p>Yes, I am presently oversubscribed. But the very first thing I did when I recognized that I&#8217;m heading towards burnout was that I went into my calendar and started requesting days off wherever I could possibly make it work, or where someone else might be able to make it work in my absence.</p>



<p>This sounds counter-intuitive, but it&#8217;s necessary. While I can&#8217;t take a week or two weeks off right now, what I can do is:</p>



<ul><li>Make a proposal for days off</li><li>Explain why I&#8217;m asking for those days off to my colleagues and boss, and ask for help to make it happen</li><li>Commit to <em>not working</em> during that time off &#8212; no notifications, no emails, nothing</li></ul>



<p>Oddly enough, I find that it&#8217;s harder to disconnect from work than normal when I&#8217;m close to burnout. It&#8217;s something about the stress&#8211; it makes it harder to put work down. But disconnecting is truly needed, and for me I think this is one of the biggest ways to avoid burnout.</p>



<p>Putting work on pause and having time off helps give needed perspective on life. It reduces stress, eases the tension causing those knee jerk reactions. </p>



<p>It will also pay itself back by helping make me more focused and efficient when I am at work.</p>



<h2>Step 2: Spend time with humans (of the non-work variety)</h2>



<p>The second thing I did after recognizing the symptoms of burnout was to email my friends at home and suggest getting together. I was lucky to have a good friend who had just started up a conversation about this, but I looked around at my other friendships and thought about others who I haven&#8217;t seen in a while, as well.</p>



<p>As an adult, it can be tough to make and maintain friendships. But the time and effort is so worth it. For me, it makes me a happier person, and that happiness extends into my work life.</p>



<p>Just like disconnecting from work, shifting gears and making time for friendships can be a mentally tough thing when you&#8217;re feeling burnt out. My mind tends to fixate on the problems at work, and it wants to stay there. </p>



<p>But I know from experience that planning a hike with a buddy is so much better for me in the long run, so a big part of my &#8220;anti-burnout&#8221; plan is making sure that I&#8217;m getting at least four hours of non-nerd-time human contact a week for the next few months. (I know, it&#8217;s just so &#8220;perfectionist&#8221; of me to set an hourly goal, right? I like specific targets.)</p>



<h2>Step 3: Pick an anti-anxiety habit (or two)</h2>



<p><strong>For me, daily meditation is very helpful.</strong><em> </em>I have learned in the past that this is a simple tool that is quite effective at reducing my stress and anxiety. When I start doing this on a daily basis, it has a more significant effect each day.</p>



<p>I&#8217;m starting this slowly at just five minutes a day of meditation. At first my whole goal is simply to re-establish this as a habit, without mentally scolding myself if I skip a day. The point is to keep starting until it becomes something that I look forward to each day and it is once again natural.</p>



<p>I find that when I do practice meditation, I have a more balanced view of things and I am more able to ask for help. I&#8217;m also better at thinking of alternatives for how something could work when someone has a request that I can&#8217;t fulfill due to time commitments.</p>



<p><strong>Journaling is also helpful for me.</strong> I&#8217;ve started writing for this blog in a new way. I&#8217;m finding that it&#8217;s helpful in a similar way that journaling helps me think through things. </p>



<p>For example, I dictated the first draft of this blog post aloud while walking around a hotel room looking out the window. An app on my phone recorded the audio and uploaded it to the cloud. Another app created a transcript, which I edited for the post. </p>



<p>This method encourages me to be more conversational and more personal in my writing.&nbsp; That&#8217;s very very helpful for me right now, because it&#8217;s a little bit more about my experiences and it&#8217;s a little bit more about getting my thoughts out in a way that is helpful and therapeutic for me. It also just makes me more excited about writing again, which is incredibly welcome.</p>



<h2>What if I don&#8217;t have time?</h2>



<p>The voice of burnout in your head is likely to make an objection: <em>we don&#8217;t have time for this. That&#8217;s the whole point.</em></p>



<p>Well, here&#8217;s the thing that I&#8217;ve learned from the past: it may hurt to make time, but it&#8217;s going to hurt even more if you don&#8217;t.</p>



<p>It&#8217;s not easy to ask for help with your workload. You may need to negotiate to make it happen. It&#8217;s not a good feeling to say that you can&#8217;t do things which you&#8217;ve agreed to. If you&#8217;re in a culture of over-achievers, it can be quite difficult to say that you don&#8217;t want to work as much as everyone else is working. </p>



<p>However, the thing about burnout is that <em>you can&#8217;t sustain it</em>. If you don&#8217;t take action and you just keep your nose to the grindstone, chances are good that you&#8217;ll become desperate for a job change, and that you&#8217;ll either quit your job or take something, anything, for a change. </p>



<p>Burnout leads to bad choices. </p>



<p>It&#8217;s a much better choice to start doing the tough work and speak up for your own needs, before you are so burned out that you can&#8217;t. Get yourself into a more productive place before making any big decisions about the future &#8212; and things <em>will</em> look better from your new vantage point.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/05/14/how-to-recognize-the-early-stages-of-burnout-and-my-treatment-plan/feed/</wfw:commentRss>
			<slash:comments>16</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6497</post-id>	</item>
		<item>
		<title>Paying down technical debt</title>
		<link>https://littlekendra.com/2019/05/07/paying-down-technical-debt/</link>
					<comments>https://littlekendra.com/2019/05/07/paying-down-technical-debt/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 07 May 2019 15:00:21 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6489</guid>

					<description><![CDATA[One of the cool things that I do as an Evangelist at Redgate is to periodically visit company headquarters in Cambridge. The other Evangelists and I get to meet with every software developer, product manager, and UX designer at Redgate over a series of meetings. That&#8217;s really cool. We talk about things that they&#8217;ve released...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/04/fig-23-04-2019_17-39-55.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6490" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/04/fig-23-04-2019_17-39-55.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/04/fig-23-04-2019_17-39-55.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>One of the cool things that I do as an Evangelist at <a href="https://www.red-gate.com/" target="_blank" rel="noreferrer noopener" aria-label="Redgate (opens in a new tab)">Redgate</a> is to periodically visit company headquarters in Cambridge. The other Evangelists and I get to meet with every software developer, product manager, and UX designer at Redgate over a series of meetings. That&#8217;s really cool. We talk about things that they&#8217;ve released lately, what they&#8217;re looking at doing in the near future, and we get to give feedback based on what we hear from the community and from folks in the sales process. We also get to share what we personally think should happen in these products now.</p>



<h2>As you might imagine, I have a wish list for features in a variety of different Redgate products</h2>



<p>Our products are great, and one of the things about great products is that users are always inspired to want to use them in new ways, so I never lack for ideas.</p>



<p>So, I have a lot of opinions about things that I think should happen, and features that I would love to have for customers. And, of course, I&#8217;d like those features <em>right now</em>, please. </p>



<h2>In a recent meetings with one of the teams, they mentioned that most of their work over the next couple of sprints involves working on their continuous integration process</h2>



<p>This sounds like a bummer, right? It&#8217;s a time period when the features on my wishlist, and <a href="https://twitter.com/way0utwest" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)">Steve</a>&#8216;s wishlist, and <a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://twitter.com/GFritchey" target="_blank">Grant</a> and <a rel="noreferrer noopener" aria-label="Kathi (opens in a new tab)" href="https://twitter.com/auntkathi" target="_blank">Kathi</a>&#8216;s wish lists aren&#8217;t getting worked on.</p>



<p>But what the team explained was that this application has been around for a while, and a large amount of tests have accumulated. It currently takes more than 10 hours for the build and test process to run. There may be duplicate work going on in the tests, and there are probably tasks that can be made much more efficient. The long build and test time currently makes it painfully slow for the team to iterate on developing and testing new features.&nbsp; </p>



<p>The team said that in the long run it&#8217;s worth paying down some debt and making the automated build and testing cycle more efficient, so that they can iterate on features faster in the future, instead of having to find other things to do while waiting for the CI process to complete. </p>



<p>This news wasn&#8217;t greeted with cheers from all the Evangelists present &#8212; but, to be fair, when we do respond to something with cheers it makes some of the teams look at us oddly, as we&#8217;re in the UK and that&#8217;s not something they see every day at work. (Hey, I bring my American enthusiasm everywhere!) </p>



<p>But everyone in the room agreed that speeding up the build and test cycle as much as possible is a necessary and reasonable thing to do</p>



<p>Like any other set of users, we want what we want (and we want it ASAP), but we respect that to make software development work well, you occasionally have to step back and pay down some technical debt.</p>



<h2>This is also true for database development</h2>



<p>It&#8217;s not always obvious that when doing DevOps, stability is just as important as release frequency, but that is the case, and maintaining that stability requires being diligent about tidying up one&#8217;s processes. </p>



<p>As database professionals, as developers and DBAs, I believe what we should see as the ideal release cycle is one in which we are free to release features every day without any manual work, and we have a software development cycle in place that ensures that the risk of our changes is minimized, that coding patterns are being used that ensure system stability, and that we have a response process in place that restores services as quickly as needed should there be a performance, availability, or functionality problem.</p>



<p>But that doesn&#8217;t mean that we <em>actually</em> release changes every single day. In order to do that effectively, we usually have to have paid down a lot of technical debt. That means stepping back periodically and working on improving our processes, rather than relentlessly focusing on shipping, shipping, shipping, shipping.</p>



<h2>This is even more critical with legacy applications, where there is a significant amount of technical debt to pay down</h2>



<p>Spending release cycles on making continuous integration and continuous delivery/deployment work better isn&#8217;t the part of DevOps that gets business owners and users really excited. But it&#8217;s still important to talk about, because this is a critical activity that enables us to deliver value on a regular basis &#8212; and that <em>is</em> what gets those folks excited. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/05/07/paying-down-technical-debt/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6489</post-id>	</item>
		<item>
		<title>What is Automation?</title>
		<link>https://littlekendra.com/2019/04/29/what-is-automation-in-the-software-development-life-cycle/</link>
					<comments>https://littlekendra.com/2019/04/29/what-is-automation-in-the-software-development-life-cycle/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 29 Apr 2019 12:00:00 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6494</guid>

					<description><![CDATA[Today I got a bit closer to a meaningful definition of automation, as it applies to the software development process. I&#8217;ve been turning this concept over in my head for a while, which is partly related to the dreaded question of licensing. Why should licensing an automation product be related to the number of users?...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/photo-1522051311534-1f53d56b49df.jpeg?resize=192%2C256&#038;ssl=1" alt="" class="wp-image-6495" width="192" height="256" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/photo-1522051311534-1f53d56b49df.jpeg?resize=768%2C1024&amp;ssl=1 768w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/photo-1522051311534-1f53d56b49df.jpeg?resize=225%2C300&amp;ssl=1 225w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/photo-1522051311534-1f53d56b49df.jpeg?resize=560%2C747&amp;ssl=1 560w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/photo-1522051311534-1f53d56b49df.jpeg?w=1275&amp;ssl=1 1275w" sizes="(max-width: 192px) 100vw, 192px" data-recalc-dims="1" /><figcaption>Photo by&nbsp;<a href="https://unsplash.com/photos/tXB7yfP9gg0?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">수안 최</a>&nbsp;on&nbsp;<a href="https://unsplash.com/search/photos/robot?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div>



<p>Today I got a bit closer to a meaningful definition of automation, as it applies to the software development process. I&#8217;ve been turning this concept over in my head for a while, which is partly related to the dreaded question of licensing.</p>



<h2>Why should licensing an automation product be related to the number of users?</h2>



<p>A few weeks ago, I was chatting a bit in the SQL Server Community Slack Channel.✣ One community member was frustrated with running into situations with per-user licensing for monitoring and automation products.</p>



<p>This isn&#8217;t the first time I&#8217;ve heard grumbling about per-user licensing, of course &#8212; with <em>any</em> licensing model, you&#8217;re going to hear grumbling about it, that&#8217;s just how licensing goes. </p>



<p>But I think per-user licensing can make a lot of sense when it comes to automation products, because of the nature of automation. I work for <a rel="noreferrer noopener" aria-label="Redgate (opens in a new tab)" href="https://www.red-gate.com/" target="_blank">Redgate</a>, which does per-user licensing. I also often do demos of how our tools integrate with Microsoft&#8217;s <a rel="noreferrer noopener" aria-label="Azure DevOps Services (opens in a new tab)" href="https://azure.microsoft.com/en-us/pricing/details/devops/azure-devops-services/" target="_blank">Azure DevOps Services</a> (formerly VSTS / or TFS-in-the-cloud), which does licensing based on user numbers.</p>



<p>But not everyone thinks this makes sense. </p>



<p>That&#8217;s because they see automation as:</p>



<ul><li>Something that <em>one person</em> sets up on a server, which that person may occasionally tweak; and&#8230;</li><li>A script or orchestrated set of scripts and products that replace the work that people (maybe more people than the person who set it up) would do manually</li></ul>



<p>This definition isn&#8217;t dumb or naive at all. This is classically what automation <em>has been</em> in IT for many years: I&#8217;ve got a problem. I create a script. The script  helps save me and my team some time and I only ever look at it again if it stops working.</p>



<p>Based on that definition, it would seem most natural way to be charged for automation tools would be based on something like the number of times the tools are run, the number of servers/cores they are run on, etc. ✣✣</p>



<h2>The nature of automation has changed dramatically in recent years</h2>



<p>Like I said, I&#8217;ve been having a hard time putting a definition of what automation means <em>now</em> into words. Then I saw a link to <a rel="noreferrer noopener" aria-label="this job description for a Sr. Resilience Engineering Advocate at Netflix (opens in a new tab)" href="https://jobs.netflix.com/jobs/869465" target="_blank">this job description for a Sr. Resilience Engineering Advocate at Netflix</a>.</p>



<p>There are a lot of interesting things about the job description, but one sentence that leapt off the page to me was that the team values:</p>



<blockquote class="wp-block-quote"><p>Automation as a team player&nbsp;versus automation as a replacement for humans</p><cite>Netflix Cloud and Platform Engineering SRE Team<br></cite></blockquote>



<p>This is a huge part of the evolving definition of automation. Automation is now:</p>



<ul><li>Something that a <em>team</em> configures, interacts with, and improves on a daily basis</li><li>A script or orchestrated set of scripts and products that are an integral part of the productivity of the team</li></ul>



<p>The big reason that per-user licensing makes logical sense to me when it comes to tools that are designed to be a key part of the software development life cycle is that the tools are meant to be experimented with freely. The tools will work best if they&#8217;re able to be tinkered with and adapted over time, to suit the needs of the team at that point. Licensing based on cores or CPU cycles or usage naturally reduces experimentation if it is going to drive up cost.</p>



<p>Also, the tools are meant to be team players: they are meant to be available to have every team member interact with them. Automation in the SDLC for database changes doesn&#8217;t mean that every time a change is committed, the change rockets toward production without a human being ever needing to think about it again. Instead, automation is a player in a process that can absolutely include rigorous review (both automated and human-powered), testing, and even approval gates when needed. </p>



<h2>Automation looks different in different teams</h2>



<p>One observation: team size matters. If you&#8217;re one person in a small shop and you&#8217;re setting up automation to reduce the amount of manual work that you personally have to do, this high-faultin&#8217; definition of automation as a &#8220;team player&#8221; probably isn&#8217;t going to resonate with you. You&#8217;re much more likely to continue to see automation in the classically defined sense.</p>



<p>But, on the other hand, you don&#8217;t have to have a team <em>nearly</em> as large as Netflix to start seeing the advantages of thinking about automation differently.  It just takes a few people working together collaboratively and thinking about how to more consistently and reliably deliver values to customers to start changing the way automation exists in the workplace.</p>



<hr class="wp-block-separator"/>



<p>✣ The SQL Server Community Slack channel is great, <a rel="noreferrer noopener" aria-label="join up here (opens in a new tab)" href="https://dbatools.io/slack/" target="_blank">join up here</a> </p>



<p>✣✣ I don&#8217;t mean to make this post about how much software should cost. I actually don&#8217;t think that&#8217;s too terribly related to licensing model choice at all &#8212; whatever you are charging by, whether it be people, cores, tentacles, or whatnot, you can find a way to make it cheaper or more expensive.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/04/29/what-is-automation-in-the-software-development-life-cycle/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6494</post-id>	</item>
		<item>
		<title>Should release cadence be slowed if you don&#8217;t have database load testing?</title>
		<link>https://littlekendra.com/2019/04/23/should-release-cadence-be-slowed-if-you-dont-have-database-load-testing/</link>
					<comments>https://littlekendra.com/2019/04/23/should-release-cadence-be-slowed-if-you-dont-have-database-load-testing/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 23 Apr 2019 15:00:06 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[Performance Tuning]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6483</guid>

					<description><![CDATA[I got a question recently about a panel discussion on Database Development Disasters at SQL in the City Streamed. I had framed a question as, &#8220;how fast should development go without load or performance testing?&#8221; I got a follow-up question from my friend Chris Randvere at Redgate: he asked for more information about what the...]]></description>
										<content:encoded><![CDATA[
<p>I got a question recently about <a rel="noreferrer noopener" aria-label="a panel discussion on Database Development Disasters at SQL in the City Streamed (opens in a new tab)" href="https://www.youtube.com/watch?v=yB5uM7Hr74Y" target="_blank">a panel discussion on Database Development Disasters at SQL in the City Streamed</a>. I had framed a question as, &#8220;how fast should development go without load or performance testing?&#8221; </p>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/fig-22-04-2019_18-43-42.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6484" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/fig-22-04-2019_18-43-42.jpg?w=300&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/04/fig-22-04-2019_18-43-42.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>I got a follow-up question from my friend <a rel="noreferrer noopener" aria-label="Chris Randvere at Redgate (opens in a new tab)" href="https://www.linkedin.com/in/chris-randvere-689080a/" target="_blank">Chris Randvere at Redgate</a>: he asked for more information about what the question meant? I realized that my wording had been pretty unclear. I had meant to ask the panelists what their thoughts were on release cadence when a team lacks tooling to do automated load and performance testing outside of production.</p>



<h2>Should the lack of automated performance testing ability change the rate at which we deploy software?</h2>



<p>In other words, if we can&#8217;t do performance and load testing, does that mean that we should or shouldn&#8217;t deploy a change to a database every weekday? </p>



<p>I don&#8217;t think we covered this super-well in the panel because I worded the question poorly.  So I wanted to share my experience around this, and also talk about why it can be fairly common for teams to lack automated load testing ability outside of production. </p>



<h2>Why doesn&#8217;t everyone have an environment where they can validate performance by replaying activity against an updated database before it ever gets released?</h2>



<p>We have some built-in tools for this in SQL Server. The current version of this is called <a href="https://docs.microsoft.com/en-us/sql/tools/distributed-replay/sql-server-distributed-replay?view=sql-server-2017" target="_blank" rel="noreferrer noopener" aria-label="Distributed Replay (opens in a new tab)">Distributed Replay</a>. These tools are not the most lovingly tended by Microsoft in terms of updates. A frequent complaint that I&#8217;ve heard about distributed replay is that the current version of the tooling still requires you to feed it with old style profile traces done with the old SQL Trace.</p>



<p>You don&#8217;t necessarily have to have the Profiler app running while you do the trace, but the old-style SQL Trace results are what it takes in in other words. You can&#8217;t do a more modern Extended Events trace and feed that into the tool.</p>



<p>But that lack of updates isn&#8217;t the main reason why not everyone runs Distributed Replay. </p>



<h3>Distributed replay is tricky to set up</h3>



<p>The more complex your environment, the trickier it is to set it up. If you&#8217;ve got things like linked servers or SQL Server transactional replication creating interesting patterns in which your SQL Server communicates with other SQL Servers, that can make using Distributed Replay particularly tricky.</p>



<p>There are absolutely people out there who&#8217;ve configured Distributed Replay on complex systems, but they all say it wasn&#8217;t something they set up in just two hours. So one factor is the complexity. </p>



<h3>Another factor: distributed replay is designed to <em>replay </em>not to amplify</h3>



<p>When we&#8217;re doing performance or load testing, we are not always interested in: how will the system perform under the current load? A lot of times we&#8217;re interested in: how will the system perform if it&#8217;s under even more load?  150% of the load, or 200%, or more.</p>



<p>But with any replay tool &#8212; I&#8217;m not just dogging on distributed replay here &#8212; if we think about the nature of any database replay tool, we can&#8217;t replay the exact same commands and expect to learn how performance will be at a higher load rate. </p>



<p>For example, a delete command. If a delete command on the first run finds 10,000 rows to delete, that could be a fair amount of work.</p>



<p>If we replay that same delete command, depending on what the criteria are in the delete, it possibly will find zero rows to delete the second time, because it&#8217;s already completed. Similar things can happen with updates. We may also have constraints that mean we can&#8217;t just insert the same thing twice depending on the nature of the data.</p>



<p>So the way modifications work, just amping up the load in a replay isn&#8217;t the same as adding <em>true</em> additional load.</p>



<p>Now, there are other ways you can do load testing. There are third-party tools that you can buy to get around this problem of repeated modifications.</p>



<p>They can be expensive. But they also require a fair amount of coding, because you&#8217;ve got to put in commands that help you get to a state where you can check: Hey, let&#8217;s turn let&#8217;s turn the volume of activity up to 200%, to 300%. </p>



<p>So, some folks do that. but because of the cost and the effort put into it, folks only tend to do this with third party tools when it&#8217;s <em>really</em> worth their while, and their management is deeply invested in the idea of having load testing.</p>



<h3>Even then, the load testing needs to be updated for some changes</h3>



<p>For some changes, you can test them with load testing tools without any changes. For example, if I refactor a function for performance tuning, but don&#8217;t change any inputs or outputs, I could test that with an existing configuration of a load testing tool.</p>



<p>But what if I add a new parameter onto a stored procedure? If I don&#8217;t change the load testing, will that be appropriate, or not? Should I be running the load test with a variety of values for that?</p>



<p>Or what if my change involves dropping one procedure and adding in another one? A replay system would have no idea what to do, and with a load testing system I&#8217;d need to adjust what gets executed, how often, etc.</p>



<p>When it comes to testing database changes, load testing tools are excellent, but I&#8217;d expect some human work to be required as well.</p>



<h2>So, most people don&#8217;t have automated performance and load testing. Should that impact how frequently we deploy changes to production?  </h2>



<p>What we&#8217;re really looking to find with load testing in the SDLC cycle is regressions in <em>performance</em>. We should have other testing to catch true defects such as making sure that the right results are returned, etc. </p>



<p>With database changes, there is a fair amount of work we can do to make sure that things perform well without load testing. There is other due diligence that can help: we can maintain and use a staging or pre-production environment with production size datasets and the same data distribution as production, for example.</p>



<p>In that environment, we can testing that confirms: what indexes is the modified code using, and are they optimal for the modified code? How long are queries taking? We can make educated guesses about production performance instead of waiting until after a release to see what it&#8217;s like.</p>



<p>This level of manual performance testing can work extremely well, and it unlocks us to do frequent deployments, in my experience.</p>



<h2>Without load testing, it&#8217;s best to frequently deploy small database changes</h2>



<p>By small, I mean <em>as small as possible. </em>A lot of these database changes are going to be things that our customers shouldn&#8217;t notice at all. Like, hey, we add a new column to this table. We&#8217;re not actually using it, though. We&#8217;re going to use it in the future for a feature that&#8217;s coming out soon.</p>



<p>But we regularly trickle out the staging steps for a future change. Each of these steps is backwards compatible and deployed well ahead of the point in which we &#8220;turn on&#8221; the new feature for our customers, which is often handled via an application control called a feature flag.</p>



<p>This regular stream of very small changes is helpful for speedily resolving any performance issues which may occur.  </p>



<p>If performance does change, we haven&#8217;t released a big batch of 50 changes all at once &#8212; that&#8217;s a lot of things to go through to find the culprit. Instead, we&#8217;ve released maybe 7-10 changes in the last week, and we can look at the most recent ones first, and check if they could be related to the issue.</p>



<h2>What do you mean by &#8220;frequent&#8221;?</h2>



<p>By &#8220;frequent&#8221;, I mean that daily releases shouldn&#8217;t be a big deal.</p>



<p>But remember: batch size is critical. This isn&#8217;t like a race car, this is like a steadily dripping faucet.</p>



<h2>Complexity: sometimes performance problems don&#8217;t happen right after a change is released </h2>



<p>There can be changes that we make where performance is fine for a while, and then something happens. Maybe it&#8217;s even three weeks after the change was released, but suddenly performance is terrible.</p>



<p>One particular tricky issue in SQL Server that can cause this is what&#8217;s called parameter sniffing. If we are using queries that are parameterized, a lot of the way that things perform depends on the execution plan that is cached with the first set of parameters that are passed into the query or procedure when it&#8217;s compiled, because SQL Server reuses that execution plan until something causes it to recompile. </p>



<p>Maybe the thing that causes the query to recompile is enough data has changed that statistics automatically update. Maybe it&#8217;s that there&#8217;s a failover in an Availability Group. Maybe the SQL Server is restarted. Maybe someone manually clears the execution plan cache.</p>



<p>A very wide variety of things can change, but if we happen to we have a recompile and we happen to have a compilation with a set of parameters that leads to an execution plan that doesn&#8217;t work so well, then we can suddenly run into performance issues. </p>



<p>But this risk of parameter sniffing doesn&#8217;t mean that we shouldn&#8217;t release that changes frequently. We&#8217;re going to have the same risk whether or not we&#8217;re releasing a big batch of changes or whether we are regularly releasing small changes.</p>



<p>For issues like this, I like the recent auto-tuning features in SQL Server. Essentially the<a rel="noreferrer noopener" aria-label=" automatic plan correction feature (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/relational-databases/automatic-tuning/automatic-tuning?view=sql-server-2017#automatic-plan-correction" target="_blank"> automatic plan correction feature</a> will look cases where a query is sometimes fast and sometimes slow, and attempt to identify &#8220;bad&#8221; execution plans which are periodically cached for a query.</p>



<p>You have to have the built-in Query Store feature enabled, and when using on-prem SQL Server this feature requires Enterprise Edition for production (Developer Edition has all the features of Enterprise for non-production environments). But if you do have a SQL Server where performance is critical, this feature is a huge deal. It gives you the option to either let it temporarily correct the plan for you, or to notify you in a DMV that it&#8217;s spotted a problem that needs tuning.</p>



<p>This feature allows can either work with automated load testing &#8212; you can use the feature to spot parameter sniffing problems before deployment &#8212; or it can give you early warning of performance problems before your customers start containing. It also gives you insight into how to reproduce these tricky problems outside of production.</p>



<h2>A quick recap</h2>



<p>Automated load testing is fantastic, if you have the time and budget to take it on for your team.</p>



<p>But if you don&#8217;t have it, the lack of automated load testing shouldn&#8217;t block you from frequently deploying small changes to production.  By combining targeted manual performance testing into properly planned changes, you can still deploy frequent changes safely into high performance and high uptime environments successfully.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/04/23/should-release-cadence-be-slowed-if-you-dont-have-database-load-testing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6483</post-id>	</item>
		<item>
		<title>Upcoming full day training: &#8220;How to Architect Successful Database Changes&#8221;</title>
		<link>https://littlekendra.com/2019/04/19/upcoming-full-day-training-how-to-architect-successful-database-changes/</link>
					<comments>https://littlekendra.com/2019/04/19/upcoming-full-day-training-how-to-architect-successful-database-changes/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 19 Apr 2019 18:24:21 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6480</guid>

					<description><![CDATA[I&#8217;m excited to be teaching a full day session with Steve Jones at the SQL PASS Summit on Tuesday, November 5, in Seattle. Steve and I will be discussing proven patterns to version and deploy changes successfully Read more about this precon session, or check out the video below where I give a brief overview...]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m excited to be teaching a full day session with <a rel="noreferrer noopener" aria-label="Steve Jones (opens in a new tab)" href="https://twitter.com/way0utwest" target="_blank">Steve Jones</a> at the SQL PASS Summit on Tuesday, November 5, in Seattle.</p>



<h2>Steve and I will be discussing proven patterns to version and deploy changes successfully</h2>



<p><a rel="noreferrer noopener" aria-label=" (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92841" target="_blank">Read more about this precon session</a>, or check out the video below where I give a brief overview of what Steve and I will cover.  </p>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/WIJvcaerblo" width="800" height="450"></iframe></figure>



<h2>Will you teach me how to use Redgate tools?</h2>



<p>Nope&#8211; not in this session.</p>



<p>While Steve and I both work for <a href="https://www.red-gate.com/">Redgate</a>, we will be showing patterns and approaches that work with both vendor and custom tooling, and we&#8217;ll do demos with a variety of tools, including free tools when possible. This is <em>absolutely not</em> a product-specific session, and the patterns discussed have been proven in the industry by developers and DBAs using a wide variety of tooling.</p>



<p>If you&#8217;d like to learn more about Redgate tools, check out the<a rel="noreferrer noopener" aria-label=" Redgate SQL in the City Summit Precon that will be held on Monday, November 4 (opens in a new tab)" href="https://www.pass.org/summit/2019/Learn/SessionDetails.aspx?sid=92888" target="_blank"> Redgate SQL in the City Summit Precon that will be held on Monday, November 4</a>. That day of training has 100% different content, so if you&#8217;d like to go all-in on DevOps, join us for both!</p>



<h2>Reserve your spot</h2>



<p>You can currently <a rel="noreferrer noopener" aria-label="register for an individual pre-conference session for $499, or bundle pre-conference sessions with the conference (opens in a new tab)" href="https://www.pass.org/summit/2019/RegisterNow.aspx" target="_blank">register for an individual pre-conference session for $499, or bundle pre-conference sessions with the conference</a>.</p>



<p>Hope to see you at PASS Summit!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/04/19/upcoming-full-day-training-how-to-architect-successful-database-changes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6480</post-id>	</item>
		<item>
		<title>The SQL Server Data Row Size Question: Why is It Bigger?</title>
		<link>https://littlekendra.com/2019/03/19/the-sql-server-data-row-size-question-why-is-it-bigger/</link>
					<comments>https://littlekendra.com/2019/03/19/the-sql-server-data-row-size-question-why-is-it-bigger/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 19 Mar 2019 15:00:32 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://sqlworkbooks.com/?p=71897</guid>

					<description><![CDATA[This morning, I received the following question from a user: Hello Madam, Could you please clarify SQLServer &#8220;Data Row&#8221; size: If I run the script below on SQL Server 2012, then Slot(row) Size is 710 bytes if I run the same script against SQL Server 2016 and above, then Slot(row) Size is 724 bytes. They...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i2.wp.com/sqlworkbooks.com/wp-content/uploads/2019/03/Row-Size-Corgi-Ruler.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-71898" width="300" height="300" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/03/Row-Size-Corgi-Ruler.jpg?w=600&amp;ssl=1 600w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/03/Row-Size-Corgi-Ruler.jpg?resize=300%2C300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/03/Row-Size-Corgi-Ruler.jpg?resize=150%2C150&amp;ssl=1 150w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/03/Row-Size-Corgi-Ruler.jpg?resize=100%2C100&amp;ssl=1 100w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/03/Row-Size-Corgi-Ruler.jpg?resize=350%2C350&amp;ssl=1 350w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>This morning, I received the following question from a user:</p>



<blockquote class="wp-block-quote"><p>Hello Madam, </p><p>Could you please clarify SQLServer &#8220;Data Row&#8221; size:</p><p>If I run the script below on SQL Server 2012, then Slot(row) Size is 710 bytes</p><p>if I run the same script against SQL Server 2016 and above, then Slot(row) Size is 724 bytes.<br></p></blockquote>



<p>They then provided a script which creates and inserts a few rows into a sample table, runs the DBCC IND command to find a list of pages for the sample table, then uses the DBCC PAGE command to examine the page.</p>



<h2>The first thing I looked for: how many bytes is the difference? Is it 14 bytes?</h2>



<p>I love it when someone sends me a repro script, but in this case I didn&#8217;t need to run it. The first thing I did was to look at the two numbers given for row size, and to subtract the smaller one from the larger one: 724 &#8211; 710 = 14 bytes of difference.</p>



<p>That bit of information alone gave me an immediate guess of what was going on. </p>



<h2>Row versioning in SQL Server has a 14-byte row overhead</h2>



<p>You can reduce blocking in SQL Server by enabling &#8220;optimistic&#8221; locking. There are trade-offs for this approach, however: row versions are enabled in tempdb, and 14 bytes of overhead may be required on impacted rows. (For a quick overview of this row versioning process, check out this <a rel="noreferrer noopener" aria-label="Simple Talk post by Kalen Delaney (opens in a new tab)" href="https://www.red-gate.com/simple-talk/sql/t-sql-programming/row-versioning-concurrency-in-sql-server/" target="_blank">Simple Talk post by Kalen Delaney</a>.)</p>



<p>My guess is that row versioning is enabled only on the SQL Server 2016 and above instances that are being tested in this case. This could be because of <em>any</em> of the following</p>



<ul><li>Snapshot isolation is allowed on the database</li><li>Read committed snapshot isolation is enabled on the database</li><li>The database has a readable secondary in an availability group</li></ul>



<h2>You might wonder &#8211; why would having a readable secondary cause the row to grow?</h2>



<p>Readable secondaries in SQL Server allow you to offload read workloads. </p>



<p>It&#8217;s important to minimize blocking against those readable secondaries, though: you don&#8217;t want data modifications flowing through to the readable secondary to be blocked by reporting queries that you are running against the secondary, after all. You also want reads to be as consistent as possible.</p>



<p>For this reason, queries that are run against readable secondaries are automatically escalated to snapshot isolation. And snapshot isolation requires row versioning &#8212; those 14 bytes of space are needed too help make it all work.</p>



<p>But readable secondaries are <em>read-only</em>, right? So how can it it write those 14 bytes? The answer is that it&#8217;s complicated. Here&#8217;s the documentation from in the &#8220;capacity planning&#8221; concerns in Microsoft&#8217;s docs:</p>



<blockquote class="wp-block-quote"><p>When you configure read-access for one or more secondary replicas, the primary databases add 14 bytes of overhead on deleted, modified, or inserted data rows to store pointers to row versions on the secondary databases for disk-based tables. This 14-byte overhead is carried over to the secondary databases. As the 14-byte overhead is added to data rows, page splits might occur.</p><p>The row version data is not generated by the primary databases. Instead, the secondary databases generate the row versions. However, row versioning increases data storage in both the primary and secondary databases.</p><cite><a rel="noreferrer noopener" aria-label="Offload read-only workload to secondary replica of an Always On availability group (opens in a new tab)" href="https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/active-secondaries-readable-secondary-replicas-always-on-availability-groups?view=sql-server-2017#bkmk_CapacityPlanning" target="_blank">Offload read-only workload to secondary replica of an Always On availability group</a><br></cite></blockquote>



<p>To dig into the details of this more, click the link &#8212; there&#8217;s even more info on the full page.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/03/19/the-sql-server-data-row-size-question-why-is-it-bigger/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71897</post-id>	</item>
		<item>
		<title>Take the 2019 State of SQL Server Monitoring Survey: Here&#8217;s What&#8217;s in It For You</title>
		<link>https://littlekendra.com/2019/03/19/the-2019-state-of-sql-server-monitoring-survey-is-open-heres-whats-in-it-for-you/</link>
					<comments>https://littlekendra.com/2019/03/19/the-2019-state-of-sql-server-monitoring-survey-is-open-heres-whats-in-it-for-you/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 19 Mar 2019 15:00:23 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6473</guid>

					<description><![CDATA[Calling all Database Administrators, Developers, Analysts, Consultants, and Managers: Redgate has a survey open asking how you monitor your SQL Servers. Take the survey before April 5, 2019. Your time is valuable. The survey will take 5 &#8211; 10 minutes to complete. That&#8217;s not a ton of time, but it&#8217;s a noticeable part of your...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-18-03-2019_19-19-08.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6474" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-18-03-2019_19-19-08.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-18-03-2019_19-19-08.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>Calling all Database Administrators, Developers, Analysts, Consultants, and Managers: Redgate has a survey open asking how you monitor your SQL Servers.</p>



<p><a href="https://www.surveymonkey.com/r/ZZ3G289" target="_blank" rel="noreferrer noopener" aria-label=" (opens in a new tab)">Take the survey before April 5, 2019</a>.</p>



<p>Your time is valuable. The survey will take 5 &#8211; 10 minutes to complete. That&#8217;s not a ton of time, but it&#8217;s a noticeable part of your day, and there <em>should</em> be something in it for you. Here&#8217;s why it&#8217;s worthwhile to take the survey.</p>



<h2>Database use patterns and monitoring trends are valuable to everyone in the community &#8212; and we&#8217;ve been missing out on this trend information!</h2>



<p>This isn&#8217;t the only survey from Redgate &#8212; you may also have heard of the annual <a rel="noreferrer noopener" aria-label="here's the 2019 results (opens in a new tab)" href="https://www.red-gate.com/solutions/database-devops/report-2019" target="_blank">State of Database DevOps Report</a>. </p>



<p>But this survey is different in important ways: it asks how you manage and monitor your SQL Server database environment, regardless of whether you think about DevOps at all.</p>



<p>Redgate <a href="https://www.red-gate.com/products/dba/sql-monitor/resources/state-of-sql-server-monitoring">shared the results of the State of SQL Server Monitoring Survey with readers last year</a>, and will do so again in 2019. 2018 was the first time we know of that a survey of this kind had been done, and it will be especially interesting to notice what has changed in the past year.</p>



<h2>If you fill out the 2019 State of SQL Server Monitoring survey, you&#8217;ll get an advance copy of the results by email</h2>



<p>The results will help you understand:</p>



<h3>What do other DBAs, Developers, and IT Professionals see as their biggest challenges over the coming year?</h3>



<p>In last year&#8217;s report the biggest challenges were seen as:</p>



<blockquote class="wp-block-quote"><p> 1. Migrating to the cloud </p><p> 2. How to deploy changes faster to larger environments </p><p> 3. Protecting data – especially for compliance reasons </p><cite><a rel="noreferrer noopener" href="https://www.red-gate.com/products/dba/sql-monitor/resources/state-of-sql-server-monitoring-survey" target="_blank">2018 State of  SQL Server Monitoring Report﻿</a></cite></blockquote>



<p>I&#8217;m curious to see if these priorities have changed after a year. With GDPR implementation having come to pass and more states and countries around the world passing increasing privacy regulations, I suspect that &#8216;protecting data&#8217; may move up from number 3 on the list, but I won&#8217;t know until we see the data.</p>



<h3>How much time do your peers spend examining SQL Server health and resolving issues?</h3>



<p>This is a great question on the survey &#8212; and I think this one is absolutely worth some reflection after you take the survey (and after the results come out). Do you spend more time firefighting than you should? If so, what ideas you have to change that? </p>



<h3>At what point to most organizations move from manual monitoring to a third party tool?</h3>



<p>If you work for a growing company and are interested in making the case to purchase monitoring to your management, it may be useful to know information like this&#8230;</p>



<blockquote class="wp-block-quote"><p>Respondents with fewer than 10 servers were twice as likely to rely on manual monitoring as to use a paid-for tool. Those with 10 or more servers were more likely to use third-party software. </p><cite><a href="https://www.red-gate.com/products/dba/sql-monitor/resources/state-of-sql-server-monitoring-survey" target="_blank" rel="noreferrer noopener" aria-label="2018 State of  SQL Server Monitoring Report (opens in a new tab)">2018 State of  SQL Server Monitoring Report</a></cite></blockquote>



<h2>Survey results will help you prioritize what to learn</h2>



<p>Are you curious as to whether you should learn another database platform, such as MongoDB, Oracle, MySQL, Cosmos DB, or PostGres? The survey will show how much respondents report that they are using each platform, and whether they think the amount will increase or decrease.</p>



<p>Want to know whether you should invest time (and maybe ask for some budget) to explore cloud technologies like Azure Managed Instances, Azure SQL Database, or Amazon RDS? The survey will show how many of your peers are using each one.</p>



<h2>Also, You Could Win Money</h2>



<p>Everyone who completes the  survey and provides their details at the end will be entered into a  prize draw to win a $250 Amazon Voucher (or equivalent in your local currency).</p>



<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-red-background-color" href="https://www.surveymonkey.com/r/ZZ3G289">Take the 2019 State of SQL Server Monitoring Survey</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/03/19/the-2019-state-of-sql-server-monitoring-survey-is-open-heres-whats-in-it-for-you/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6473</post-id>	</item>
		<item>
		<title>Why to Avoid Using the Current Database Name in Object Definitions in SQL Server</title>
		<link>https://littlekendra.com/2019/03/18/why-you-shouldnt-hardcode-the-current-database-name-in-your-views-functions-and-stored-procedures/</link>
					<comments>https://littlekendra.com/2019/03/18/why-you-shouldnt-hardcode-the-current-database-name-in-your-views-functions-and-stored-procedures/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 18 Mar 2019 15:00:22 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6461</guid>

					<description><![CDATA[I&#8217;ve recently published an article, &#8220;Why You Shouldn’t Hardcode the Current Database Name in Your Views, Functions, and Stored Procedures,&#8221; over on Simple Talk. In the article, I discuss: Why referencing the current database name creates a dependency What &#8216;deferred name resolution&#8217; is, and why the dependency may be more noticeable in views and some...]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve recently published an article, <a rel="noreferrer noopener" aria-label="&quot;Why You Shouldn’t Hardcode the Current Database Name in Your Views, Functions, and Stored Procedures,&quot; over on Simple Talk (opens in a new tab)" href="https://www.red-gate.com/simple-talk/opinion/editorials/why-you-shouldnt-hardcode-the-current-database-name-in-your-views-functions-and-stored-procedures/?utm_source=dlvr.it&amp;utm_medium=twitter" target="_blank">&#8220;Why You Shouldn’t Hardcode the Current Database Name in Your Views, Functions, and Stored Procedures,&#8221; over on Simple Talk</a>.</p>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_22-46-32.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6464" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_22-46-32.jpg?w=300&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_22-46-32.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /><figcaption>Hello, my name is FINE</figcaption></figure></div>



<p>In the article, I discuss:</p>



<ul><li>Why referencing the current database name creates a dependency</li><li>What &#8216;deferred name resolution&#8217; is, and why the dependency may be more noticeable in views and some functions (rather than stored procedures)</li><li>Which activities are most likely to break if you place dependencies on the current database name</li></ul>



<p><a href="https://www.red-gate.com/simple-talk/opinion/editorials/why-you-shouldnt-hardcode-the-current-database-name-in-your-views-functions-and-stored-procedures/?utm_source=dlvr.it&amp;utm_medium=twitter" target="_blank" rel="noreferrer noopener" aria-label="Read the full article here (opens in a new tab)">Read the full article here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/03/18/why-you-shouldnt-hardcode-the-current-database-name-in-your-views-functions-and-stored-procedures/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6461</post-id>	</item>
		<item>
		<title>PASS Summit 2019 Call for Speakers is Open &#8211; How I Sketch Out My Submission Ideas</title>
		<link>https://littlekendra.com/2019/03/13/pass-summit-2019-call-for-speakers-is-open-how-i-sketch-out-my-submission-ideas/</link>
					<comments>https://littlekendra.com/2019/03/13/pass-summit-2019-call-for-speakers-is-open-how-i-sketch-out-my-submission-ideas/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 13 Mar 2019 15:00:11 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6458</guid>

					<description><![CDATA[Are you interested in speaking at the Professional Association for SQL Server&#8217;s annual Summit conference? The call for speakers is now open, and you may submit up to three sessions between now and March 31, 2019. I&#8217;m currently in the process of sketching out my ideas for what sessions that I&#8217;d like to submit, and...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_19-00-32.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6459" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_19-00-32.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_19-00-32.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>Are you interested in speaking at the Professional Association for SQL Server&#8217;s<a href="https://www.pass.org/summit/2019/Home.aspx" target="_blank" rel="noreferrer noopener" aria-label=" annual Summit conference (opens in a new tab)"> annual Summit conference</a>? The call for speakers is now open, and you may <a rel="noreferrer noopener" aria-label="ubmit up to three sessions between now and March 31, 2019 (opens in a new tab)" href="https://www.pass.org/summit/2019/Speakers/Callforspeakers.aspx?utm_source=cnctr&amp;utm_medium=email&amp;utm_campaign=Summit_CFS_2019&amp;mkt_tok=eyJpIjoiWXprMVlUa3pNamRqWVRCaSIsInQiOiJ1RUF2V1owZlRKbmNVK2FSRzdJNjUyMXZOZ3A5TTBcLzk4OGR6aFh6bTQyejc0MUVTWlFLbzNicGFRbm5VNHNKWkU4NmprV0Roa3hWbGlVZHFyQnVYWGNhRTZNYzNndG43WVZQSHVLXC83VU50aDUzRTRMRGpSeXlVTDJWbHhrempwIn0%3D" target="_blank">submit up to three sessions between now and March 31, 2019</a>. </p>



<p>I&#8217;m currently in the process of sketching out my ideas for what sessions that I&#8217;d like to submit, and I thought I&#8217;d share my process here.</p>



<h2>Generating ideas: what am I interested in spending six months thinking about?</h2>



<p>I&#8217;m a bit selfish when it comes to topic selection, and I think that&#8217;s fine: it needs to be something that I&#8217;m interested in thinking about for more than half a year.</p>



<p>That does NOT mean that it needs to be super-advanced rocket science content. Figuring out how to present introductory level content clearly, in an easy-to-understand way takes a lot of time. The topic simply needs to compelling enough for me to stay interested.</p>



<h2>A filter: is the topic relevant to enough people?</h2>



<p>When I first began speaking, I thought I needed to speak on topics that were unique to me, which other people in the community didn&#8217;t already &#8220;have covered.&#8221; This led me to somewhat esoteric concepts. There&#8217;s a big downside to that: your talks simply won&#8217;t be relevant to many people.</p>



<p>Now, I encourage myself (and you) to use the opposite filter: think about talks that will be be helpful to a <em>lot</em> of people. That means you probably won&#8217;t be the first one in the world to deliver a talk on the topic, and that&#8217;s perfectly fine: your perspective is valuable!</p>



<p>There is definitely a &#8220;three bears&#8221; aspect to this filter. Your talk doesn&#8217;t need to be useful to everyone at the event. But do think about your intended audience, and whether you&#8217;ll help a significant portion of the audience at the event.</p>



<h2>Sketching out ideas and audiences</h2>



<p>For this year&#8217;s PASS Summit talks, I currently have two topics I&#8217;m quite passionate about, which I&#8217;d love to share. </p>



<p>Right now I don&#8217;t have abstracts. I&#8217;ve started by creating notes on:</p>



<ul><li>Subject matter area / rough title</li><li>What the talk would include &#8211; a problem summary (which I write as quickly as possible, just throwing out ideas) and a bulleted list of content ideas</li><li>Who would care (audience) and why they would care</li></ul>



<p>Here&#8217;s where I&#8217;m at with my two topics.</p>



<h2>Topic 1: Source Controlling Index Code in a Changing World&nbsp; </h2>



<p><strong>Alternate title</strong>: I prefer, &#8220;How to Standardize Index Code in a Changing World.&#8221; Not everyone may get that Standardize = Source Control, however &#8212; not sure if that&#8217;s simply how I think of it.</p>



<p><strong>Problem summary</strong>: It&#8217;s critical to get database code standardized into source control to manage collaboration, store and version your organization&#8217;s intellectual property, and to track and audit what has happened in your database code. The database code for indexes, however, is increasingly difficult to standardize: new features in Azure SQL DB automate the process of tuning index schema. Single-tenant database architectures often standardize table schemas, but require customizations of indexes for performance in individual databases. And index schema often needs to &#8220;drift&#8221; in production as operations teams respond to critical performance problems. How do you adapt successfully to this chaos, yet still maintain your sanity by managing your database code in source control?</p>



<p><strong>Topics to include:</strong></p>



<ul><li>Differences in source controlling indexes with state vs migrations approaches to database code<ul><li>Strategies for working around limitations on advanced index features with a state approach</li></ul></li><li>How to manage drift that occurs with automatic indexing in Azure SQL Database </li><li>How to manage incidents where indexes are manually changed/drifted in production due to a critical need without going through a full release cycle&nbsp;</li><li>How to manage single-tenant environments where the indexes are customized in individual databases&nbsp;</li></ul>



<p><strong>Audience / who would care:</strong></p>



<ul><li>Developers and DBAs who have their databases in source control, but who struggle with &#8220;drift&#8221; in some areas</li><li>Developers and DBAs interested in getting databases into source control &#8212; sometimes thinking ahead about these more advanced issues at the beginning can help you learn fast</li><li>Architects thinking about using single-tenant designs</li></ul>



<h2>Topic 2: Best Practices for Branching Database Code in Git&nbsp; </h2>



<p><strong>Problem summary: </strong>There are quite a few discussions and patterns available online for branching application code, but special considerations apply when it comes to database code &#8212; and hardly anyone has written about this! This talk helps DBAs and developers design the simplest branching strategy that meets the needs of their organization. I will share key considerations for designing a branching strategy for database code, and we will discuss multiple popular branching models along with &#8220;fit notes&#8221; describing the strengths and weaknesses of each model.</p>



<p><strong>Topics to include:</strong></p>



<ul><li>The overarching rule of “keep it simple”, but why this leads to different practices for small teams (1-2 devs checking in code) vs larger teams </li><li>State-first vs migrations-first and explain what that means for branching  &#8211; a migrations approach that <em>doesn’t</em> include a state component will SUCK for merging &#8230; maybe don&#8217;t use the word SUCK in all caps in the final abstract tho</li><li>Why shared vs dedicated development databases is important when considering branching &#8211; why object locking is a necessarily evil of a shared model, so don’t do shared if you can avoid it (esp considering that Dev Edition is free for SQL Server, side-eye at Oracle)</li><li>What feature branches are and how to tell if you need them&nbsp;</li><li>What release branches are and how to tell if you need them&nbsp;</li><li>Pull requests&nbsp;</li><li>Rebasing&nbsp;</li><li>Branching diagrams for multiple popular models, and &#8220;fit notes&#8221; for the teams using them</li></ul>



<p><strong>Audience / who would care:</strong></p>



<ul><li>Me!!! Hahahaha, I find this topic fascinating, even if there were five people in the room I&#8217;d be thrilled (but I do think this would be quite popular with dev-minded folks, I don&#8217;t think it&#8217;s just me)</li><li>Developers and DBAs who want to get database code into source control</li><li>Developers and DBAs who have code in source control, and who struggle with:<ul><li>Managing concurrent changes to objects</li><li>Building the codebase from scratch to a specific release / version</li><li>Managing drift in different environments / comparing database versions to source versions</li></ul></li></ul>



<h2>Next steps: mulling these over</h2>



<p>I feel pretty good about these topics so far: I think that I care enough about them to want to spend a good amount of time with them, and I think that enough people at the conference care about the problems discussed to make them worthwhile. </p>



<p>These two talks are a bit more focused than talks I&#8217;ve done in the past, in that they&#8217;re specific to managing code in source control. I&#8217;m strongly of the opinion that <em>everyone</em> should be managing their database code in source control, though, so I&#8217;m fine with the level of focus &#8212; source control should be the norm!</p>



<p>I am presently waiting a few days before writing and revising &#8220;real&#8221; abstracts. I&#8217;ve got some time before the deadline, and I find it&#8217;s good that I sit with a topic for a few days to see if a bright new idea occurs to me, or to see if I may want to go in a different direction.</p>



<h2 id="mce_44">First time speaker? Go ahead and submit!</h2>



<p>Writing an abstract and choosing a title for a talk can be daunting. I personally find it easier to start with making notes about a potential talk like I&#8217;ve shown here, and then refining those notes. I am hoping that helps some potential speakers out there to get started.</p>



<p><a rel="noreferrer noopener" href="https://www.pass.org/summit/2019/Speakers/Callforspeakers.aspx?utm_source=cnctr&amp;utm_medium=email&amp;utm_campaign=Summit_CFS_2019&amp;mkt_tok=eyJpIjoiWXprMVlUa3pNamRqWVRCaSIsInQiOiJ1RUF2V1owZlRKbmNVK2FSRzdJNjUyMXZOZ3A5TTBcLzk4OGR6aFh6bTQyejc0MUVTWlFLbzNicGFRbm5VNHNKWkU4NmprV0Roa3hWbGlVZHFyQnVYWGNhRTZNYzNndG43WVZQSHVLXC83VU50aDUzRTRMRGpSeXlVTDJWbHhrempwIn0%3D" target="_blank">Here&#8217;s that link to the call of speakers again &#8212; submit by March 31, 2019</a>. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/03/13/pass-summit-2019-call-for-speakers-is-open-how-i-sketch-out-my-submission-ideas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6458</post-id>	</item>
		<item>
		<title>Contest: Tell Your Database Development Disaster Story (5 winners get $150 USD or more each)</title>
		<link>https://littlekendra.com/2019/03/12/contest-tell-your-database-development-disaster-story-5-winners-get-150-usd-or-more-each/</link>
					<comments>https://littlekendra.com/2019/03/12/contest-tell-your-database-development-disaster-story-5-winners-get-150-usd-or-more-each/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 12 Mar 2019 15:00:54 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6462</guid>

					<description><![CDATA[Redgate is building a library of real-world stories about database development disasters. Your mission: Tell us a true story in 500 words or less about a time when you were involved in an Agile or DevOps project that went full steam ahead in speeding up delivery of application code, but didn’t modernize database development practices....]]></description>
										<content:encoded><![CDATA[
<p>Redgate is building a library of real-world stories about database development disasters.</p>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_20-59-29.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6463" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_20-59-29.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2019/03/fig-11-03-2019_20-59-29.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p><strong>Your mission:</strong> Tell us a true story in 500 words or less about a time when you were involved in an Agile or DevOps project that went full steam ahead in speeding up delivery of application code, but didn’t modernize database development practices. Did trouble follow? <a rel="noreferrer noopener" aria-label="Give us the scoop here (opens in a new tab)" href="https://www.red-gate.com/hub/entrypage/competition" target="_blank">Check out the prizes and give us the scoop here</a> <strong>before March 20, 2019</strong>.</p>



<h3>Enter today, time&#8217;s almost up!</h3>



<ol><li><a href="https://www.red-gate.com/hub/entrypage/competition" target="_blank" rel="noreferrer noopener" aria-label="Share your story using the form here (opens in a new tab)">Share your story using the form here</a></li><li>The story must be true – but never fear, we will anonymize all stories and the names of the winners</li><li>Enter as often as you’d like (but each person may only win once)</li></ol>



<h2>Need inspiration?</h2>



<h3>Grant&#8217;s sample entry (the short version)</h3>



<p>&#8220;Our organization built a new application using an Object Relational Mapping (ORM) tool. The team worked without any DBAs or database developers for speed. We ended up with an incredibly slow application that nobody could report from at the end – and deployments dropped and recreated tables! We had to implement weird workarounds to make deployments safe. The project delivered late and required a lot of unexpected budget from consultants. If our teams had been able to work together on the database as part of the project, we would have saved the company a lot of time and money.&#8221;  &#8230;<a href="https://www.red-gate.com/simple-talk/sql/database-devops-sql/devops-without-the-database-a-cautionary-tale/">Read Grant&#8217;s full article</a></p>



<h3>My own development disaster story: The V1 Team&#8217;s Doomed Redesign</h3>



<p>Once upon a time, I worked for a startup which purchased another startup. For the first year, the acquired company&#8217;s applications operated independently, as they were originally designed. After that point, developers from both organizations began merging together, and a team was created and assigned the task of redesigning the applications of the purchased company to be more scalable. Let&#8217;s call this the &#8220;V1 Team.&#8221;</p>



<p>The existing production legacy applications involved complex data processing. The idea was that the V1 Team would reproduce almost all functionality of the legacy applications in the initial release of the redone application.</p>



<p>The V1 Team went off and began work. As they worked through their long development cycle, features continued to be added to the production application. These were added to the workload of the V1 Team, continuously increasing the scope of their project and delaying their initial release date.</p>



<p>There were a lot of quite smart developers on the V1 Team, people I enjoyed working with, but I found myself stopping by their area less frequently over time &#8211; frankly, it was a depressing place to visit. The team was overworked and frustrated. They were never releasing any code to production, and there were no design meetings with anyone.</p>



<p>Finally, we heard that the redesigned applications were going to be ready to launch soon! This was good news, as the legacy applications were not easy to support.</p>



<p>The first thing I remember about the database deployments for the V1 Team&#8217;s new application is that… well, they didn&#8217;t actually deploy. The V1 Team had been stuck in a prototype environment for so long that quite a bit of work was needed to bring the codebase into a deployable state for pre-production and production domains.</p>



<p>The second thing I remember is looking at one example table in one of the V1 Team&#8217;s new databases, and finding that the clustered primary key was defined as being the combination of four uniqueidentifier columns (GUIDs). </p>



<p>I&#8217;m not the kind of DBA who sees a uniqueidentifier column as being universally bad or a sign of doom. However, keeping clustering keys relatively narrow is generally a good practice for scalability in SQL Server&#8211; and a 64 byte surrogate key is a particularly bad sign. And it was too late to make any changes: the poor V1 Team was desperate to get anything in front of a customer at this point. </p>



<p>It was a tricky and painful struggle for both the V1 Team and the operations teams to get that code into production and to begin supporting it. Performance wasn&#8217;t great, and customer response was lukewarm at best&#8211; after all, they&#8217;d been told the whole project was about scalability. </p>



<p>Nobody declared victory, least of all the customers.</p>



<p>Scoping and architecture discussions, I learned, are critical for any project.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/03/12/contest-tell-your-database-development-disaster-story-5-winners-get-150-usd-or-more-each/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6462</post-id>	</item>
		<item>
		<title>Watch: Kendra Breaks and Fixes SQL Source Control (9 minutes)</title>
		<link>https://littlekendra.com/2019/03/04/watch-kendra-breaks-and-fixes-sql-source-control-9-minutes/</link>
					<comments>https://littlekendra.com/2019/03/04/watch-kendra-breaks-and-fixes-sql-source-control-9-minutes/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 04 Mar 2019 16:23:03 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6454</guid>

					<description><![CDATA[I love breaking technology. Well, I love breaking technology on purpose, in a place where it&#8217;s not going to slow anyone else down. It&#8217;s a great way to learn more about how everything works and what your options are to fix the situation when things go sideways. In this 9 minute video, I ignore SQL...]]></description>
										<content:encoded><![CDATA[
<p>I love breaking technology.</p>



<p>Well, I love breaking technology <em>on purpose</em>, in a place where it&#8217;s not going to slow anyone else down. It&#8217;s a great way to learn more about how everything works and what your options are to fix the situation when things go sideways.</p>



<p>In this 9 minute video, I ignore SQL Source Control&#8217;s valiant attempts to keep me out of trouble, and put the database code in my local git repository into an inconsistent state. Can I fix it? (Spoiler: yes I can.) </p>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/psiss9iZJzM" width="800" height="450"></iframe></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/03/04/watch-kendra-breaks-and-fixes-sql-source-control-9-minutes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6454</post-id>	</item>
		<item>
		<title>New Free Videos on SQL Prompt, SQL Compare, and SQL Doc with Redgate&#8217;s SQL Change Automation</title>
		<link>https://littlekendra.com/2019/02/15/new-free-videos-on-sql-prompt-sql-compare-and-sql-doc-with-redgates-sql-change-automation/</link>
					<comments>https://littlekendra.com/2019/02/15/new-free-videos-on-sql-prompt-sql-compare-and-sql-doc-with-redgates-sql-change-automation/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 15 Feb 2019 15:38:45 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6445</guid>

					<description><![CDATA[I&#8217;m excited to have just clicked &#8216;publish&#8217; on four new videos in the brand new Evangelist Tutorials playlist on Redgate&#8217;s YouTube channel. These videos step through setting up and working with a project in one of my favorite Redgate tools: SQL Change Automation. The awesome thing about SQL Change Automation is that it gives you...]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;m excited to have just clicked &#8216;publish&#8217; on four new videos in the brand new<a rel="noreferrer noopener" aria-label=" Evangelist Tutorials playlist on Redgate's YouTube channel (opens in a new tab)" href="https://www.youtube.com/playlist?list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc" target="_blank"> Evangelist Tutorials playlist on Redgate&#8217;s YouTube channel</a>.</p>



<p>These videos step through setting up and working with a project in one of my favorite Redgate tools: <a rel="noreferrer noopener" aria-label="SQL Change Automation (opens in a new tab)" href="https://www.red-gate.com/products/sql-development/sql-change-automation/index" target="_blank">SQL Change Automation</a>. The awesome thing about SQL Change Automation is that it gives you two things:</p>



<ol><li>Fine-grained control to tune and order the execution of changes to your database with a migrations-first approach to source controlling your code</li><li>A view of the state of your database, which is crucial for code reviews, controlling environment drift, and communicating about changes between developers and database administrators</li></ol>



<p>The tricky thing is that there&#8217;s a lot to learn when starting out with SQL Change Automation if you haven&#8217;t used a migrations-first approach in the past, or aren&#8217;t used to working in Visual Studio. </p>



<p>That&#8217;s where these videos come in: you can follow along with the demos in your own installation of Visual Studio and Redgate&#8217;s SQL Toolbelt, or just watch and learn. I take it slow and don&#8217;t assume that you&#8217;re an expert in Visual Studio. </p>



<h2>In one hour of demos, you will learn&#8230;</h2>



<ul><li>How to set up a SQL Change Automation project with Microsoft&#8217;s Northwind sample database</li><li>What a baseline is and how to create one</li><li>What programmable objects are, and how to edit one offline in Visual Studio</li><li>What the offline schema model is, and how to work with it in Visual Studio</li><li>How to use branches and SQLCompare with SQL Change Automation projects</li><li>How to automate the production of database documentation with the SQL Change Automation PowerShell cmdlets</li><li>How to build and deploy with SQL Change Automation PowerShell cmdlets</li></ul>



<h2>Why aren&#8217;t you working in SSMS in the videos?</h2>



<p>If you prefer working in SQL Server Management Studio or Azure Data Studio, you can choose to make database changes there, then import the changes into SQL Change Automation as scripts that you tweak as desired in Visual Studio. That&#8217;s a valid workflow, and I often use it myself.</p>



<p>In these videos I show how to do all the work in Visual Studio &#8212; because although I&#8217;m a long time SSMS fan, it&#8217;s pretty convenient to know how to do your work in multiple tools.</p>



<h2>Tools used in the videos</h2>



<ul><li><a rel="noreferrer noopener" aria-label="Microsoft (opens in a new tab)" href="https://visualstudio.microsoft.com/downloads/" target="_blank">Microsoft Visual Studio 2017</a></li><li><a href="https://www.red-gate.com/products/sql-development/sql-toolbelt/index">Redgate SQL Toolbelt</a> &#8211; Free Trial available</li><li><a href="https://code.visualstudio.com/">VSCode</a> &#8211; I use this for PowerShell script execution &#8211; you could use the PowerShell ISE instead, or just execute scripts from the command line</li></ul>



<h2>Using SQL Toolbelt Components with SQL Change Automation: Create Your Demo Environment</h2>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/4at2X4qz4MM" width="800" height="450"></iframe></figure>



<p>This is the first of four videos on using SQL Toolbelt components (SQL Prompt, SQL Compare, and SQL Doc) with SQL Change Automation Projects. Follow along to set up the demo environment used in the next three videos. <br><a href="https://www.youtube.com/watch?v=4at2X4qz4MM&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=1&amp;t=67s">1:07</a> &#8211; Download the Northwind Sample Database script from Microsoft: <a rel="noreferrer noopener" href="https://www.youtube.com/redirect?v=4at2X4qz4MM&amp;redir_token=AgAvEsgFkGTD6gUZ3EAFq8Mrnot8MTU1MDI1OTE3MUAxNTUwMTcyNzcx&amp;event=video_description&amp;q=http%3A%2F%2Fbit.ly%2Fmsftnorthwind" target="_blank">http://bit.ly/msftnorthwind</a><br><a href="https://www.youtube.com/watch?v=4at2X4qz4MM&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=1&amp;t=135s">2:15</a> &#8211; Create the Northwind Database and the empty NorthwindDev database from Visual Studio <br><a href="https://www.youtube.com/watch?v=4at2X4qz4MM&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=1&amp;t=260s">4:20</a> &#8211; Create the SQL Change Automation project and create a baseline script <br><a href="https://www.youtube.com/watch?v=4at2X4qz4MM&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=1&amp;t=510s">8:30</a> &#8211; View pending deploy of the project to the NorthwindDev database <br><a href="https://www.youtube.com/watch?v=4at2X4qz4MM&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=1&amp;t=533s">8:53</a> &#8211; View location of baseline script, programmable objects, and offline schema model in Solution Explorer. Check for &#8216;Unsupported&#8217; folder. <br><a href="https://www.youtube.com/watch?v=4at2X4qz4MM&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=1&amp;t=604s">10:04</a> &#8211; Deploy to the NorthwindDev database</p>



<h2>Using SQL Prompt with SQL Change Automation in Visual Studio</h2>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/x3Ro7-Nd4I4" width="800" height="450"></iframe></figure>



<p>Learn how SQL Prompt can help you quickly improve TSQL scripts in Visual Studio with SQL Change Automation. <br>The PowerShell script shown is available at: <a rel="noreferrer noopener" href="https://www.youtube.com/redirect?v=x3Ro7-Nd4I4&amp;redir_token=0ebzH9z77iSTeb-nt2lUMvk4NkR8MTU1MDI1OTEzMkAxNTUwMTcyNzMy&amp;event=video_description&amp;q=http%3A%2F%2Fbit.ly%2F2IfgmUK" target="_blank">http://bit.ly/2IfgmUK</a> <br>In this video: <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;index=2&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;t=20s">00:20</a> &#8211; Overview of programmable objects in SQL Change Automation <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;index=2&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;t=75s">01:15</a> &#8211; Overview of the offline schema model in SQL Change Automation <a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=2&amp;t=130s">2:10</a> &#8211; Demo of refactoring a stored procedure (a programmable object) begins <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=2&amp;t=450s">7:30</a> &#8211; Saving the &#8220;offline edit&#8221; to the programmable object triggers option to deploy to development database <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=2&amp;t=548s">9:08</a> &#8211; Test full build and deploy of first committed change in VS Code with PowerShell components <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;index=2&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;t=795s">13:15</a> &#8211; Demo of editing an index on a table with SQL Server Data tools and generating a migration script begins. This demo shows the &#8220;offline schema model&#8221; <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=2&amp;t=1219s">20:19</a> &#8211; Deploy the edited migration script <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;index=2&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;t=1360s">22:40</a> &#8211; Perform build and deploy with PowerShell cmdlets <br><a href="https://www.youtube.com/watch?v=x3Ro7-Nd4I4&amp;index=2&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;t=1440s">24:00</a> &#8211; Review release artifact</p>



<h2>Using SQL Compare with SQL Change Automation</h2>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/Bv2rb_ORZnc" width="800" height="450"></iframe></figure>



<p>Learn how you can use SQL Compare with SQL Change Automation projects in Visual Studio to compare database state at different points in your project. <br><a href="https://www.youtube.com/watch?v=Bv2rb_ORZnc&amp;t=16s&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=3">00:16</a> &#8211; How the SQL Compare is used by SQL Change Automation under the hood <br><a href="https://www.youtube.com/watch?v=Bv2rb_ORZnc&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=3&amp;t=63s">1:03</a> &#8211; Demo begins with a view of the Northwind SQL Change Automation Project in Visual Studio <br><a href="https://www.youtube.com/watch?v=Bv2rb_ORZnc&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=3&amp;t=110s">1:50</a> &#8211; Demo of setting up the source and target in SQL Compare, with discussion of how this comparison uses programmable objects and the offline schema model <br><a href="https://www.youtube.com/watch?v=Bv2rb_ORZnc&amp;t=263s&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=3">4:23</a> &#8211; View of the results of the comparison <br><a href="https://www.youtube.com/watch?v=Bv2rb_ORZnc&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=3&amp;t=306s">5:06</a> &#8211; Demo of creating and checking out a branch in Git via Visual Studio <a href="https://www.youtube.com/watch?v=Bv2rb_ORZnc&amp;t=397s&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=3">6:37</a> &#8211; Demo of refreshing SQL Compare after the branch switch in Visual Studio, and how and why the results change <br><a href="https://www.youtube.com/watch?v=Bv2rb_ORZnc&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=3&amp;t=473s">7:53</a> &#8211; Demo of switching back to the master branch and a few of how this once again changes the comparison being performed (in a good way)</p>



<h2>Automating SQL Doc with SQL Change Automation</h2>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/xRjmWKe7MgQ" width="800" height="450"></iframe></figure>



<p>Learn how to automate the production of database documentation using the SQL Change Automation PowerShell cmdlets to produce SQL Doc documentation. <br>The PowerShell script shown is available at: <a rel="noreferrer noopener" href="https://www.youtube.com/redirect?q=http%3A%2F%2Fbit.ly%2F2V14Lui&amp;event=video_description&amp;redir_token=_Fxx2Ry8Emww3igK_QCByxTaIbh8MTU1MDI1OTk2NUAxNTUwMTczNTY1&amp;v=xRjmWKe7MgQ" target="_blank">http://bit.ly/2V14Lui</a> <br>In this video: <br><a href="https://www.youtube.com/watch?v=xRjmWKe7MgQ&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=4&amp;t=66s">1:06</a> &#8211; Start of demo in VSCode, walk through of some key points of the script <br><a href="https://www.youtube.com/watch?v=xRjmWKe7MgQ&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=4&amp;t=208s">3:28</a> &#8211; Explanation of why I am specifying a SQL Server instance for the documentation and not using LocalDB <br><a href="https://www.youtube.com/watch?v=xRjmWKe7MgQ&amp;list=PLhFdCK734P8B6c78JliKyv2U0StNC0Skc&amp;index=4&amp;t=225s">3:45</a> &#8211; View of the resulting documentation in a .zip output file begins</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/02/15/new-free-videos-on-sql-prompt-sql-compare-and-sql-doc-with-redgates-sql-change-automation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6445</post-id>	</item>
		<item>
		<title>What a Software Evangelist Does &#8211; and Where the Job is Going (Dear SQL DBA Episode 67)</title>
		<link>https://littlekendra.com/2019/01/29/what-a-software-evangelist-does-and-where-the-job-is-going-dear-sql-dba-episode-67/</link>
					<comments>https://littlekendra.com/2019/01/29/what-a-software-evangelist-does-and-where-the-job-is-going-dear-sql-dba-episode-67/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 29 Jan 2019 16:00:29 +0000</pubDate>
				<category><![CDATA[Dear SQL DBA]]></category>
		<guid isPermaLink="false">https://sqlworkbooks.com/?p=71624</guid>

					<description><![CDATA[I&#8217;ve been working as an Evangelist at Redgate for close to six months now, and one question keeps coming up: what exactly does an Evangelist do at a software company? In 21 minutes, I explain the core mission of Evangelists, and why I think being part of the sales process is an important part of...]]></description>
										<content:encoded><![CDATA[
<p> I&#8217;ve been working as an Evangelist at Redgate for close to six months  now, and one question keeps coming up: what exactly does an Evangelist  do at a software company? In 21 minutes, I explain the core mission of  Evangelists, and why I think being part of the sales process is an  important part of the future of software evangelism. </p>



<p>A transcript is below the video if you&#8217;d rather read. You can also <a href="https://dearsqldba.libsyn.com/" target="_blank" rel="noreferrer noopener" aria-label="subscribe to the podcast to listen on the go (opens in a new tab)">subscribe to the podcast to listen on the go</a>.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="What a Software Evangelist Does - and Where the Job is Going (Dear SQL DBA Episode 67)" width="640" height="360" src="https://www.youtube.com/embed/ksTpbSAgCZc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2>Episode Transcript</h2>



<p><em>Note: I generated the images below for this episode with </em><a rel="noreferrer noopener" aria-label="buffer.com's free too, Pablo (opens in a new tab)" href="https://pablo.buffer.com/" target="_blank"><em>buffer.com&#8217;s free tool, Pablo</em></a><em>.</em></p>



<p>Hello and welcome to Dear SQL DBA, a podcast, YouTube show, and now a twitch stream for database developers and database administrators.</p>



<p>I am Kendra little from Redgate software and from SQLWorkbooks. Today I want to chat about what it is it evangelists do. My job at Redgate&#8212; my job title is that I&#8217;m an Evangelist. I&#8217;ve gotten the question from multiple folks, including people at passport control, as to what exactly is it that you do as an evangelist? Because it really really isn&#8217;t always obvious, and I think it&#8217;s changing as well. I think the role of Evangelists who&#8217;ve been around in software companies for a while is evolving.</p>



<h3>How I first encountered an &#8216;Evangelist&#8217;: a man yelling into a phone</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i0.wp.com/sqlworkbooks.com/wp-content/uploads/2019/01/angry-fist-eek.png?resize=256%2C256&#038;ssl=1" alt="" class="wp-image-71625" width="256" height="256" data-recalc-dims="1" /></figure></div>



<p>I first heard of this job title way back when I first was working at Microsoft. I think I was still a contractor there. I got a job at Microsoft as a contractor, and I was very very excited to be working at Microsoft. It was an amazing job. I worked a lot and I learned a ton&#8211; of course I was an hourly employee so working a lot was actually to my benefit. I eventually did become a full-time employee at Microsoft and kept learning more and more there as well, and it was great. But at this time, I was still a contractor.</p>



<p>The first encounter I had with an evangelist was&#8230; we were in these buildings where everyone was in offices. They weren&#8217;t cube farms at all. Everybody was in offices. Lots of us did share offices with other people. My office mates were always good people to work with. It was nice, actually, to share an office, because you could learn a lot. The people you were sitting with were often on your team or on a related team, so you could figure out lots of stuff about what it was like to support different products. But our offices weren&#8217;t all together for the team, so you had neighbors who worked in completely different parts of the organization.</p>



<p>One of the neighbors had a little nameplate that mentioned this person was an Evangelist. I don&#8217;t even know what team this person was on. It was a man, and the only things I knew about this Evangelist were that their door to their office was usually shut, and they were often yelling angrily into a telephone.</p>



<p>I was just like: I don&#8217;t know exactly what this job is, I don&#8217;t know if that the job is for really angry people, or if this just happens to be a really angry person&#8211; but there seems to be a <em>lot</em> of yelling involved. To this day I&#8217;m surprised by that. Even now, I cannot reconcile what all of this anger and yelling had to do with this person&#8217;s job. In my job as an Evangelist there is <em>not</em> a lot of yelling, there is not a lot of anger, and I don&#8217;t even use the phone that much. So everything is really different from that first encounter with an Evangelist. But it did teach me that different Evangelists may have very very different jobs, because that is not at all the job that I&#8217;m in in now.</p>



<h3>Rebranding: &#8216;Evangelist&#8217; &#8211;&gt; &#8216;Developer Advocate&#8217;</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i0.wp.com/sqlworkbooks.com/wp-content/uploads/2019/01/advocate-errrr-wut.png?resize=256%2C256&#038;ssl=1" alt="" class="wp-image-71631" width="256" height="256" data-recalc-dims="1" /></figure></div>



<p>These days a lot of people who do the job of what was formerly known as Evangelists  are changing their job title, because the the word &#8216;Evangelist&#8217; has religious overtones. To the many people I think it brings up the Crusades, and it brings up violence. I don&#8217;t know if that&#8217;s related to the angry person in their office screaming into the phone or not. But at Microsoft, for example, I do know that many evangelists now have the job title Developer Advocate.</p>



<p>I appreciate why the name might change, but I don&#8217;t know if Developer Advocate is the perfect name, either. When I think of an advocate it brings up to me someone you might get if you were in a difficult legal proceeding or if you were in a tough healthcare situation and you needed someone to advocate for you. It represents being a little bit helpless.</p>



<p>Maybe that&#8217;s not the right understanding of Advocates. Maybe that&#8217;s a bias on my part. But naming things is about understanding cultural bias. Is Developer Advocate a better name than Evangelist? Maybe. But it isn&#8217;t a name I&#8217;m rushing out to adopt &#8212; not yet. </p>



<p>I feel like I kind of haven&#8217;t come up with the perfect job title yet.</p>



<h3>So what does an Evangelist do?</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i2.wp.com/sqlworkbooks.com/wp-content/uploads/2019/01/giraffes-evangelists.png?resize=256%2C256&#038;ssl=1" alt="" class="wp-image-71630" width="256" height="256" data-recalc-dims="1" /></figure></div>



<p>Let&#8217;s talk about what Evangelists actually do. A lot of what I do has to do with communication between my company and our customers, and our potential customers out in the wild. This is communication that goes two ways. </p>



<p>One of my main tasks is figuring out: what are the difficult things that people are encountering, what are the problems that people really need to solve? How do our products or different techniques related to our products help with that? That is a big part of my job: Patterns and practices that can help people be more successful. </p>



<p>Now, the two-way communication involves both listening to people about what&#8217;s difficult and what&#8217;s hard (which our products could help with) AND finding where our products could improve. Identifying: what are those pain points that our existing products help with, AND what might we be able to do with them that could really help fill this need?</p>



<p>I&#8217;m tasked with channeling communication back to our development teams and saying, hey, here&#8217;s what I&#8217;m hearing from our customers. I get asked by our development teams a ton: what are you hearing from people in the marketplace? What are you hearing from consultants? What are you hearing from potential customers? What are you hearing from people at conferences? They really want to know, what are the opportunities we have, what&#8217;s working well with people, what could we do better? </p>



<p>When listening to a customer, the job of an Evangelist is not <em>only</em> to understand, okay there&#8217;s a product that could help you out. The job of an Evangelist is also to understand patterns about how people work. If we are going to apply a technology or a product or a process, what are the things that will actually make a team successful at that? What are the ways that people interact that need to change? What are the dependencies on really making this work well? </p>



<p>The idea isn&#8217;t just to sell the products. In my talks, I&#8217;m going to talk about things where, yeah, our products could make it easier. But there&#8217;s always a bunch of different ways to do things. When I design talks, I&#8217;m  interested in thinking about: what are the ways to make people successful? Yes, if our products fit into this, that&#8217;s amazing. And I do have a bias, because I do have an employer, right? I want to be clear about that all the time. Evangelists aren&#8217;t unbiased and neutral. But part part of the job is also to be quite open, and to not only think about the products, but to also think about how people work and how people can be successful &#8212; even if parts of that are outside of the products. Or even if our products aren&#8217;t required to make you successful.</p>



<p>Because the truth about the modern world and technology is you can absolutely write a bunch of code yourself to do a lot of things. Is it gonna take you a long time? Yes. But there&#8217;s always more than one way to do something. Buying products from different vendors can make your life easier, though.</p>



<p>So, to me, the point of being an Evangelist is really about helping people get set up to succeed. The parts I&#8217;m gonna be the best at, the parts I&#8217;m gonna look at the most are in the areas around where my company&#8217;s focus is. Because in fact, I am really passionate about that. </p>



<p>I took an Evangelist job at a place where I was passionate about what we are doing. I wouldn&#8217;t have taken an Evangelist job if I didn&#8217;t think these were important problems to solve, if I didn&#8217;t think they were good tools to solve the problems. </p>



<p>It&#8217;s really hard to say this in a nutshell, but I think an Evangelist is someone who helps people be successful with the technology from that company&#8211; and further helps set people up for making an informed decision about how they can be successful. What this ends up meaning is Evangelist may be useful to you even if you&#8217;re not a customer of that company&#8217;s products. Because when it comes to a good Evangelist, they&#8217;re giving you information that &#8212; yeah, it&#8217;s gonna really help you if you use that company&#8217;s products, but they&#8217;re also giving you really valuable information that&#8217;s going to have implications agnostic of what products you&#8217;re using.</p>



<p>For me, I want to deliver value and insights about DevOps however you&#8217;re doing DevOps. I want it to be valuable to you. I would love it if you would use our products, but even if you aren&#8217;t, in everything I do I want there to be takeaways that are valuable. Even if you&#8217;re not doing DevOps right now, the information can be useful if you&#8217;re keeping it in the possible things you might do. If you <em>are</em> doing DevOps now, I want to include concepts and patterns you can work in regardless of the products that you&#8217;re using.  </p>



<h3 id="mce_4">My job at Redgate combines Evangelism with involvement in the sales process</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i2.wp.com/sqlworkbooks.com/wp-content/uploads/2019/01/promotion.png?resize=256%2C256&#038;ssl=1" alt="" class="wp-image-71628" width="256" height="256" data-recalc-dims="1" /></figure></div>



<p>An interesting thing about my job is &#8212; my job personally is not a &#8220;pure Evangelist job&#8221;. (I don&#8217;t know if there is such a thing as a pure Evangelist job.) But my job at Redgate is a mix. The job advertisement for my position said: up to 40% of your time is going to be spent working with the sales folks, as part of the sales process. But not as a salesperson, as an Evangelist.</p>



<p>This might sound kind of weird, because I have said hey, part of Evangelism is including things that are meaningful even if you aren&#8217;t using the products. That&#8217;s still true. </p>



<p>The interesting thing I think about sales &#8212; and I think this is an evolution of the sales process&#8211;  is more and more companies need to tap into insights about the customer and really understand the customer&#8217;s problems. Companies are turning to different models of purchase, different subscription models. Organizations don&#8217;t want to sell you something you buy one time. They want to sell something that you <em>renew</em>.</p>



<p> Renewal is incredibly important to software companies. The points in sales is not just to sell a product once, you need your customers to use your products and to become successful with them, because you want them to continue happily using (and renewing) your product in the future. That is a huge important thing. So really understanding where the customer is coming from, what their problems are, and how to solve those problems is a very important part of the sales process. </p>



<h3 id="mce_5">Working with customers is the best part of my job</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i2.wp.com/sqlworkbooks.com/wp-content/uploads/2019/01/you-are-what-you-listen-to.png?resize=256%2C256&#038;ssl=1" alt="" class="wp-image-71627" width="256" height="256" data-recalc-dims="1" /></figure></div>



<p>My absolute favorite part of my job is interacting with new and renewing customers as part of the sales process. Because when you interact with potential customers and existing customers, you learn about all these different real world scenarios. I think the value that I provide to Redgate as an Evangelist is that I&#8217;ve been a database person for twenty years. For a long time, I&#8217;ve been working with how to write code, how to optimize SQL Servers, how to optimize processes.  I&#8217;m always learning more. So in terms of my experience, it helps me really understand where customers are coming from when they&#8217;re struggling with: how do we safely deliver database changes at a high rate? How do we do this without overworking our people so that they&#8217;re dragging in the next morning and aren&#8217;t even awake enough to do code review? How do we optimize this process and make happy teams that work well, that have stable systems, and we have everything humming perfectly&#8211; so we can really churn changes through? </p>



<p>That&#8217;s not easy, but my job as an Evangelist is to have insights into: how do we safely make these changes? Working with different customers, it resonates with so many different experiences I&#8217;ve had. </p>



<p>Every software development group is unique. Everyone has their own problems, and everybody has a certain amount of anti patterns that work for us. The job isn&#8217;t just, hey, there&#8217;s these best practices. It&#8217;s much more about figuring out: how do we come up with unique ways to solve these problems and get to the result we want. We&#8217;re gonna follow a lot of best practices, but probably we can&#8217;t just implement <em>all</em> these best practices. Because there&#8217;s always unique requirements and unique factors that mean not every best practice fits.</p>



<p>So a lot of what I do is listen for: what are the really important requirements, and how do we map best practices to this? How do we creatively come up with solutions to the places where the best practices don&#8217;t match? That helps us picture the future state. Then there&#8217;s the further problem of: how do we get from here to the desired future state? Often we can&#8217;t do it all in one go. Often we may have to take smaller steps to get there. </p>



<p>Working with customers in the sales process &#8212; I have found that it&#8217;s the secret to making Evangelism exciting for me. Because I get to hear from customers about real problems, and I get to help brainstorm creatively to come up with solutions for those&#8211; and help unstick people from getting blocked. To me that is just a ton of fun. </p>



<h3 id="mce_6">The culture of your sales team matters</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i1.wp.com/sqlworkbooks.com/wp-content/uploads/2019/01/sales-handshake.png?resize=256%2C256&#038;ssl=1" alt="" class="wp-image-71629" width="256" height="256" data-recalc-dims="1" /></figure></div>



<p>I do think that the culture of the sales team you&#8217;re working with matters. I&#8217;ve worked with different sales teams throughout my career, and I&#8217;m not gonna name any names here &#8212; I&#8217;m not talking about now at Redgate&#8211; I have worked with sales teams who tended to over-promise. They promised vaporware. They were selling things that don&#8217;t quite exist.</p>



<p>Being an Evangelist in that context would be deeply uncomfortable, and probably wouldn&#8217;t work. Because a big part of being an Evangelist is being straightforward with people. Being honest and and having credibility. </p>



<p>I can&#8217;t sell vaporware. I&#8217;m not going to sell vaporware. We&#8217;re working in a culture where  that would be a hard fit. I do think I think more and more with software, because of the importance of renewals, because of the importance of customer happiness, I don&#8217;t think those practices are gonna survive and thrive. </p>



<p>I think more and more sales processes are going to need to become more transparent to be successful. Otherwise, later on, people are going to be looking at those deals and they&#8217;re gonna say: why why didn&#8217;t this customer renew? Well, if we sell them something that doesn&#8217;t exist, if we sell them something that doesn&#8217;t work for them, that customer is not going to end up being super satisfied. </p>



<p>So I have been thriving as being part of the sales process, but if you&#8217;re if you&#8217;re looking at different Evangelists in other companies, their ability to be part of sales will depend on on the sales culture. </p>



<h3 id="mce_7">The future for Evangelists / Developer Advocates</h3>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i1.wp.com/sqlworkbooks.com/wp-content/uploads/2019/01/inbound-marketing-strategy.png?resize=256%2C256&#038;ssl=1" alt="" class="wp-image-71626" width="256" height="256" data-recalc-dims="1" /></figure></div>



<p>I think Evangelist jobs are great. It&#8217;s definitely a specific personality type: you have to like to talk, you have to like to listen, you have to like to interact with people, as well as create presentations and things like that. But if you are a person who is interested in teaching and in learning, it can be a fantastic fit. </p>



<p>My job does technically sit within a marketing department. I think that&#8217;s great. In the past, I thought of marketing as being just a department that put out a good image. &#8220;We need to make things look good.&#8221; More and more, that is changing.</p>



<p>With the business changes that are happening inside companies &#8212; with the &#8220;digital transformations&#8221; that get talked about at the executive level &#8212; the role of marketing is about helping the company have insight into the customer. </p>



<p>What is the customer saying? What is the customer doing? What resonates with the customer? What excites the customer? What frustrates the customer? These insights are incredibly critical to helping a company survive both in terms of the messages you&#8217;re giving to people &#8212; because you want to help people understand when you can solve their biggest pains. But also in terms of shaping the product design. Customers can easily compare and easily switch service providers more quickly than ever using phones and computers. People have choice.</p>



<p>We have more and more interesting ways of delivering messages to people, too &#8211; and I think Evangelists are a really important part of that. That has to do both with reaching people through things like podcasts, through things like Twitch, through trying out new communication methods. </p>



<p>But also in terms of listening to the customers, I get insights from customers in Slack channels, for example the SQL Server community Slack channel. Sometimes I get them by email, I get them by messages on my website. I also get them through that contact with customers. The great thing about that [contact with customers] is that I can learn in-depth about: what are the problems that you&#8217;re facing? What are the real pains you have? What&#8217;s really important to you, and what is the best plan to get there? </p>



<p>Do our company&#8217;s products fit in that plan? Sometimes they will. Sometimes they won&#8217;t. The success of marketing and the success of sales is finding places where it really works, because those are going to be the customers that not only buy, but the customers that renew. The customers that tell other customers: hey we found a great way to solve these problems using those solutions.</p>



<p>So, have I found a short answer to what an evangelist that I could say at passport control? Well, to be honest, at passport control, I think it&#8217;s just easier to say that I am a software developer or sales engineer. We can all describe our jobs in different ways, right? My job is not a sales engineer, but a related job title is a little bit easier to explain to someone who doesn&#8217;t work in software. For better or for worse, the term &#8216;Evangelist&#8217; is just very heavily loaded.</p>



<p>If you have ideas about the best possible job title for an Evangelist, I would love to hear it &#8212; because I still haven&#8217;t come up with that perfect term yet. I like the term Developer Advocate, but I&#8217;m still not 100% sold that it&#8217;s the best way to describe the job. </p>



<p>So, anyhow, this episode is for all of those have you been asking, &#8220;hey Kendra, what is it that you&#8217;ve been doing these days?&#8221; I&#8217;ve got some more episodes in the queue coming up, I&#8217;ve got some more questions to answer. Looking forward to talking to you folks again soon, and making Dear SQL DBA more regularly again. Thanks, folks!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/29/what-a-software-evangelist-does-and-where-the-job-is-going-dear-sql-dba-episode-67/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71624</post-id>	</item>
		<item>
		<title>State vs Migration for Database Source Control &#8211; decide based on one question</title>
		<link>https://littlekendra.com/2019/01/23/state-vs-migration-for-database-source-control-the-core-question/</link>
					<comments>https://littlekendra.com/2019/01/23/state-vs-migration-for-database-source-control-the-core-question/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 23 Jan 2019 16:00:32 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6407</guid>

					<description><![CDATA[One controversial topic in database development is how to properly store and deploy database changes. This is generally described as choosing between two options, which are approximately as easy to understand as Greek philosophy: State based &#8211; A Platonic view of the database as a snapshot of a set of forms in a given state...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/12/fig-24-12-2018_23-36-15.jpg?resize=300%2C300&#038;ssl=1" alt="Bust of Developocritus, the Forgotten Greek Philosopher" class="wp-image-6411" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/12/fig-24-12-2018_23-36-15.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/12/fig-24-12-2018_23-36-15.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /><figcaption>Bust of Developocritus, the Forgotten Greek Philosopher</figcaption></figure></div>



<p>One controversial topic in database development is how to properly store and deploy database changes.</p>



<p>This is generally described as choosing between two options, which are approximately as easy to understand as Greek philosophy:</p>



<ul><li><strong>State based </strong>&#8211; A Platonic view of the database as a snapshot of a set of forms in a given state at a point in time</li><li><strong>Migrations</strong> &#8211; An Aristotelian view of the database defined as a series of scripts which generate change over time</li></ul>



<p>Yeah, I never really liked arguing about philosophers, either.</p>



<p>Scratch all that. There&#8217;s a simple question that you can use to decide whether a state-based or migrations-based approach is right for a given database.</p>



<p>Here&#8217;s that question:</p>



<h2>Do you want at least 95% of your database changes to deploy using auto-generated code?</h2>



<p>There you go, that&#8217;s it.</p>



<p>Look back on your life-long experience with Clippy, with Siri, with every automated telephone system you&#8217;ve called in the past, including those where you ended up yelling &#8220;CANCEL MY ACCOUNT!&#8221; or &#8220;OPERATOR! PLEASE CAN I SPEAK TO AN OPERATOR?!?!&#8221; into the line because you were stuck in a loop.</p>



<p>Think about Alexa, who may get into conversations with your television sometimes. Think about the driving directions from Waze that have you make four left turns in a row. Think about those times when you wonder if Google Maps is sending you somewhere simply so it can pick up traffic info, or if it really thought that was a good idea.</p>



<p>If you think about those examples and want to use un-modified computer generated database change scripts 95% of the time, a <strong>primarily state-based approach</strong> is right for you.</p>



<p>That&#8217;s because a state-based approach looks at the current state of the in source control, compares it against a live database representing the desired state, and generates the shortest &#8220;directions&#8221; to get from one to the other.</p>



<p>If you want to give custom directions 5% of the time or more, a <strong>primarily migrations based approach</strong> is right for you.</p>



<h2>Why 95%?</h2>



<p>There are 50 ways to leave your lover, and there are definitely more than two ways to store and deploy your database changes. That&#8217;s because vendors have created hybrid versions between state and migration approaches that allow you to primarily use one approach, and occasionally use a bit of the other. (Disclaimer: <a href="http://assets.red-gate.com/solutions/database-devops/state-or-migrations-based-database-development.pdf">I work for one of those vendors, here&#8217;s a whitepaper where we talk about state-first vs migration-first, and why we offer hybrids rather than absolutes</a>.)</p>



<p>But these two approaches are difficult to unify, so even a &#8220;hybrid approach&#8221; has a strong side.</p>



<h2>Do you mean migrations-first tools don&#8217;t help me write SQL?</h2>



<p>Nope. Migrations based database deployment tools may have very nice engines to auto-generate changes for you, too.</p>



<p>The differences are that a migrations-first tool generally makes it <em>much </em>easier for humans to review change code and customize those scripts &#8212; making it easier for you to control exactly what happens, and how many steps are taken to make it happen.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/23/state-vs-migration-for-database-source-control-the-core-question/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6407</post-id>	</item>
		<item>
		<title>DBA Jobs: Threats and Opportunities (Dear SQL DBA Episode 66)</title>
		<link>https://littlekendra.com/2019/01/18/dba-jobs-threats-and-opportunities-dear-sql-dba-episode-66/</link>
					<comments>https://littlekendra.com/2019/01/18/dba-jobs-threats-and-opportunities-dear-sql-dba-episode-66/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 18 Jan 2019 16:00:12 +0000</pubDate>
				<category><![CDATA[Dear SQL DBA]]></category>
		<guid isPermaLink="false">https://sqlworkbooks.com/?p=71589</guid>

					<description><![CDATA[Jobs change over time, and database administrator jobs are no different. In this 35 minute recorded Twitch livestream (my first ever!) I talk about threats to DBA jobs and the related opportunities. It&#8217;s been a few months since I published an episode of Dear SQL DBA. I like the idea of doing future episodes with...]]></description>
										<content:encoded><![CDATA[
<p>Jobs change over time, and database administrator jobs are no different. In this 35 minute recorded Twitch livestream (my first ever!) I talk about threats to DBA jobs and the related opportunities.</p>



<p>It&#8217;s been a few months since I published an episode of Dear SQL DBA. I like the idea of doing future episodes with livestreaming on <a href="https://www.twitch.tv/kendra_little">my Twitch channel</a>, so I&#8217;m hoping to make this a regular thing again. The audio in this episode isn&#8217;t perfect, but I reminded myself that perfect is the enemy of good, and that sometimes it&#8217;s OK to be imperfect: people will choose if they want to listen or not. But I&#8217;ll work on getting audio quality back up in the next episode for sure.</p>



<p>And with that, here&#8217;s the recording:</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="DBA Jobs - Threats and Opportunities (Dear SQL DBA Episode 66)" width="640" height="360" src="https://www.youtube.com/embed/4hksGvt-VYI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/18/dba-jobs-threats-and-opportunities-dear-sql-dba-episode-66/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71589</post-id>	</item>
		<item>
		<title>3 Key Points from My Upcoming Talk, &#8220;DevOps: What, Who, Why, and How?&#8221;</title>
		<link>https://littlekendra.com/2019/01/17/3-key-points-from-my-upcoming-talk-devops-what-who-why-and-how/</link>
					<comments>https://littlekendra.com/2019/01/17/3-key-points-from-my-upcoming-talk-devops-what-who-why-and-how/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 17 Jan 2019 18:29:46 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6420</guid>

					<description><![CDATA[Next week, I&#8217;m giving a free webcast for Redgate on DevOps fundamentals. DevOps is something I am a big proponent of for database administrators, developers, and company leaders. The webcast will be held on Wednesday, Jan 23 at 8 am Pacific / 11 am Eastern. Click here to register and get a reminder to attend...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/01/fig-17-01-2019_18-26-57.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6422" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/01/fig-17-01-2019_18-26-57.jpg?w=300&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2019/01/fig-17-01-2019_18-26-57.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>Next week, I&#8217;m giving a free webcast for Redgate on DevOps fundamentals. DevOps is something I am a big proponent of for database administrators, developers, and company leaders. The webcast will be held on Wednesday, Jan 23 at 8 am Pacific / 11 am Eastern.</p>



<p><a href="https://register.gotowebinar.com/register/853744786602494467?source=KB">Click here to register and get a reminder to attend the live webcast, or to watch the recording after it airs</a>.</p>



<p>I&#8217;ll share a lot of information in the talk. As a preview, here are three points which are often the source of misunderstandings:</p>



<h2>Developer productivity is a top concern of C-level executives</h2>



<p>Implementing DevOps isn&#8217;t something you do in an afternoon. Often, DevOps implementations begin from the C-suite as part of a digital transformation effort. DevOps can also be originated from small teams in the company who transform their own practices, share their success with the company, and enlist executive support to spread these practices to other teams.</p>



<p>Many DBAs and developers worry about the costs of implementing DevOps: not only the costs for tools, but also slow-downs in delivering new features while working on important projects that are the foundation of DevOps, such as standardizing the database code in Version Control and writing tests.</p>



<p>We should all be less worried about opening this conversation with company leaders, however. In September, 2018, Stripe performed<a href="https://stripe.com/reports/developer-coefficient-2018"> a study with Harris Poll on software engineering efficiency</a>. They got the following response from more than 1,000 C-level executives:</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/01/productivity-of-develoeprs-stripe-harris-poll-sept-2018.jpg?resize=684%2C122&#038;ssl=1" alt="" class="wp-image-6421" width="684" height="122" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/01/productivity-of-develoeprs-stripe-harris-poll-sept-2018.jpg?w=912&amp;ssl=1 912w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/01/productivity-of-develoeprs-stripe-harris-poll-sept-2018.jpg?resize=300%2C53&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/01/productivity-of-develoeprs-stripe-harris-poll-sept-2018.jpg?resize=768%2C136&amp;ssl=1 768w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2019/01/productivity-of-develoeprs-stripe-harris-poll-sept-2018.jpg?resize=560%2C99&amp;ssl=1 560w" sizes="(max-width: 684px) 100vw, 684px" data-recalc-dims="1" /><figcaption>96% of C-Level execs polled believe that increasing productivity of developers is a high or medium priority<br></figcaption></figure></div>



<p>Slowdowns in productivity can be painful. But if they result in increasing the overall productivity of developers afterward, that slowdown pays off quickly.</p>



<p>The study overall found that a &#8220;lack&#8221; of developers is not the main problem: instead the problem is leveraging existing talent within companies better. DevOps directly addresses this problem.</p>



<h2>Having a team who does DevOps &#8220;for you&#8221; doesn&#8217;t work</h2>



<p>It&#8217;s common for companies seeking to release code changes faster to implement a &#8220;DevOps team.&#8221; While specialists can help larger teams adapt DevOps practices, inspire DevOps culture, and suggest patterns for work that get the cycle of continuous improvement started, these teams can&#8217;t do DevOps &#8220;for&#8221; other teams.</p>



<p>Andrew Hatch, Platform Engineering Manager at SEEK, has written about why SEEK created a DevOps team, what happened with the team, and why they ultimately <a href="http://bit.ly/2Fv7dFv">decided they no longer need a DevOps Team</a>.</p>



<p>In his article, Andrew Shared that the DevOps team took over the build, deployment, and operational support for the organization&#8217;s critical websites, but:</p>



<blockquote class="wp-block-quote"><p>We had made rapid advances in our delivery processes but we still faced torrid nights on-call with software systems straining under the sheer volume of product being deployed to them.” </p><cite><a href="http://bit.ly/2Fv7dFv">Why We Don&#8217;t Need a DevOps Team</a> by Andrew Hatch<br></cite></blockquote>



<p>Doing DevOps is not <em>only</em> about release tempo. Other measures regarding stability are hugely important:</p>



<ul><li>Time to restore service</li><li>Rate of failure of changes</li></ul>



<p>By spreading the DevOps culture into developer and IT teams and making them autonomous units who could support their own releases, the team at SEEK were able to improve quality and maintain their higher release frequency.</p>



<h2>Doing well at DevOps means including the database</h2>



<p>Dr. Nicole Forsgren of <a href="https://devops-research.com/about.html">DevOps Research and Assessment</a> (now part of Google) is an internationally known researcher into DevOps practices. In the <a href="https://devops-research.com/research.html">2018 State of DevOps Report by DORA</a>, they found that&#8230;</p>



<blockquote class="wp-block-quote"><p>Teams that do well at continuous delivery store database changes as scripts in version control and manage these changes in the same  way as production application changes. </p><cite><a href="https://devops-research.com/research.html">2018 State of DevOps Report, DORA</a>, Dr. Nicole Forsgren, Jez Humble, Gene Kim</cite></blockquote>



<p>Making this work well doesn&#8217;t mean getting rid of database specialists. Instead, DBAs are part of the DevOps culture:</p>



<blockquote class="wp-block-quote"><p>Furthermore, when changes to the application require database changes, these teams discuss them with the people responsible for the production database and ensure the engineering team has visibility into the progress of pending database changes. <strong>When teams follow these practices, database changes don’t slow them down, or cause problems when they perform code deployments.</strong></p><cite>(Emphasis mine) <a href="https://devops-research.com/research.html">2018 State of DevOps Report, DORA</a>, Dr. Nicole Forsgren, Jez Humble, Gene Kim </cite></blockquote>



<h3>I have lots more to share!</h3>



<p>In my upcoming webcast,  we&#8217;ll talk more about what DevOps is, who is involved in DevOps, and the impact DevOps has on organizations.</p>



<p><a href="https://register.gotowebinar.com/register/853744786602494467?source=KB">Register here to&nbsp;join me in&nbsp;next&nbsp;week&#8217;s&nbsp;webcast</a>. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/17/3-key-points-from-my-upcoming-talk-devops-what-who-why-and-how/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6420</post-id>	</item>
		<item>
		<title>Watch all my free PASS Summit recordings&#8211; and more videos at Pass.org</title>
		<link>https://littlekendra.com/2019/01/16/watch-all-my-free-pass-summit-recordings-and-more-videos-at-pass-org/</link>
					<comments>https://littlekendra.com/2019/01/16/watch-all-my-free-pass-summit-recordings-and-more-videos-at-pass-org/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 16 Jan 2019 16:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6416</guid>

					<description><![CDATA[A magical thing happened this week in the SQL Community Slack (it&#8217;s free to join, by the way, sign up here). In the midst of a discussion about the cost of attending conferences, Benni De Jagere shared the following tweet from Cathrine Wilhelmsen: I follow Cathrine, but apparently I need to follow her more closely,...]]></description>
										<content:encoded><![CDATA[
<p>A magical thing happened this week in the SQL Community Slack (it&#8217;s free to join, by the way, <a href="https://dbatools.io/slack/">sign up here</a>). In the midst of a discussion about the cost of attending conferences, <a href="https://twitter.com/bennidejagere">Benni De Jagere</a> shared the following tweet from <a href="https://twitter.com/cathrinew">Cathrine Wilhelmsen</a>:</p>



<figure class="wp-block-embed-twitter wp-block-embed is-type-rich is-provider-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">Did you know that ALL the session recordings from PASS Summit 2017 (and earlier) are available for free? 🙂 Get your learning on here: <a href="https://t.co/zDJ9DAyr1U">https://t.co/zDJ9DAyr1U</a> <a href="https://twitter.com/hashtag/SQLPass?src=hash&amp;ref_src=twsrc%5Etfw">#SQLPass</a> <a href="https://twitter.com/hashtag/PASSsummit?src=hash&amp;ref_src=twsrc%5Etfw">#PASSsummit</a> <a href="https://twitter.com/hashtag/SQLFamily?src=hash&amp;ref_src=twsrc%5Etfw">#SQLFamily</a></p>&mdash; Cathrine Wilhelmsen (@cathrinew) <a href="https://twitter.com/cathrinew/status/1084804828818169856?ref_src=twsrc%5Etfw">January 14, 2019</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p>I follow Cathrine, but apparently I need to follow her more closely, as I&#8217;d missed this tweet on the 14th. I had no idea these recordings were free and searchable.</p>



<h2>These free sessions include way more than the Summits</h2>



<p>I checked out which recordings are available, and my mind was blown &#8212; it&#8217;s not just past PASS Summit recordings (excluding the 2018 Summit, most of which are not currently free), but also user group talks, 24 Hours of PASS Recordings, everything!</p>



<h2>How do I watch?</h2>



<ul><li>Head to <a rel="noreferrer noopener" aria-label="https://www.pass.org/Learning/Recordings/Listing.aspx (opens in a new tab)" href="https://www.pass.org/Learning/Recordings/Listing.aspx" target="_blank">https://www.pass.org/Learning/Recordings/Listing.aspx</a></li><li>Search for recordings by topic or speaker name<ul><li>To find mine, simply type &#8216;Kendra&#8217; in the search box on the left</li></ul></li><li>Log in when prompted, or create a free account</li><li>Watch away</li></ul>



<p>That&#8217;s about it. It&#8217;s a treasure trove of stuff.</p>



<h2>A list of my PASS Sessions you can find on pass.org/learning</h2>



<p>Here&#8217;s a list of my sessions on the PASS Site, along with notes of their &#8220;freshness&#8221; today:</p>



<h3>2019</h3>



<ul><li>Get Inspired: Celebrate the Careers of Three DevOps Heroes with Kendra Little<ul><li>WIT Virtual Chapter, Jan 2019</li><li>Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul></li></ul>



<h3>2018</h3>



<ul><li>Fix My Functions: Speeding Up Scalar and Table Valued UDFs <ul><li>Summit 2018</li><li>Note: this one isn&#8217;t showing as free on the &#8216;Learning&#8217; site, but it was livestreamed during the Summit, so it&#8217;s available via other channels. <a rel="noreferrer noopener" aria-label="Watch the recording on SQLWorkbooks (opens in a new tab)" href="https://sqlworkbooks.com/2018/11/fix-my-functions-speeding-up-scalar-and-table-valued-udfs-video/" target="_blank">Watch the recording on SQLWorkbooks</a>.</li><li> Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </li></ul></li><li>How Keys &amp; Included Columns Work by Kendra Little<ul><li>Data Architecture Virtual Chapter, June 2018</li><li> Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" />  </li></ul></li><li>Why is that Data Wrong? How Choosing the Wrong Isolation Level Causes Bad Results<ul><li>24 Hours of PASS, June 2018</li><li> Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" />   </li></ul></li></ul>



<h3>2017</h3>



<ul><li>When Partitioning Indexes Hurts Performance (and How to Fix It)<ul><li>PASS Summit, 2017</li><li> Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/263a.png" alt="☺" class="wp-smiley" style="height: 1em; max-height: 1em;" /> &#8211; batch mode for rowstore is coming up soon, but other than that it&#8217;s quite current</li></ul></li><li>Why Did My Clever Index Change Backfire?<ul><li>PASS Summit, 2017</li><li> Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul></li><li>SSMS Shortcuts &amp; Secrets &#8211; Kendra Little<ul><li>DBA Fundamentals Virtual Chapter, Sept 2017</li><li>Freshness  <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul></li><li>Why Did My Clever Index Change Backfire?<ul><li>24 Hours of PASS, Summit Preview, 2017</li><li>Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> &#8211; note, this is a preview of the live summit session above</li></ul></li></ul>



<h3>2016</h3>



<ul><li>The Great Performance Robbery: Locking Problems and Solutions<ul><li>PASS Summit 2016</li><li> Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul></li><li>3 Skills Every Junior DBA Must Know<ul><li>DBA Fundamentals Virtual Chapter, July 2016</li><li>Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul></li></ul>



<h3>2015</h3>



<ul><li>Take the SQL Server Index Quiz! <ul><li>24 Hours of PASS Summit Preview, 2015</li><li>Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/263a.png" alt="☺" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </li></ul></li><li>How to Configure Quorum in SQL Server <ul><li>HA/DR Virtual Group, May 2016</li><li>Freshness &#8212; a lot has changed in this area since 2015 <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f611.png" alt="😑" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </li></ul></li></ul>



<h3>2014</h3>



<ul><li>World&#8217;s Worst Performance Tuning Techniques<ul><li>PASS Summit 2014</li><li>Freshness <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul></li><li>Why Does SQL Server Keep Asking for this Index?<ul><li>PASS Summit 2014</li><li>Freshness &#8211; main points are still true, but I haven&#8217;t tested the demo against higher compatibility levels to see if the same execution plans are still generated</li></ul></li></ul>



<h3>2013</h3>



<ul><li>How to Tell When Storage Is a Problem<ul><li>PASS Summit 2013</li><li>Freshness is surprisingly high &#8212; I&#8217;m talking about interpreting DMVs and perf counters here, not which SAN to buy, so it&#8217;s still spot on  <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul></li></ul>



<h3>2012</h3>



<ul><li>Index Psychiatry: Diagnose and Treat the Top 5 Disorders <ul><li>PASS Summit 2012</li><li>Freshness &#8211; I show the sp_BlitzIndex procedure in this talk. That procedure has changed a lot since the talk, so it&#8217;ll look different. Concepts discussed are still true for disk based nonclustered rowstore <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f4af.png" alt="💯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </li></ul></li><li>SQL Server First Responder Kit <ul><li>PASS Summit 2012</li><li>Freshness &#8211; medium  <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f611.png" alt="😑" class="wp-smiley" style="height: 1em; max-height: 1em;" />   </li></ul></li></ul>



<h3>2011</h3>



<ul><li>No More Bad Dates: Best Practices for Working With Dates and Times <ul><li>PASS Summit 2011</li><li>Freshness &#8211; medium <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f611.png" alt="😑" class="wp-smiley" style="height: 1em; max-height: 1em;" />   </li></ul></li></ul>



<h2>Thanks to PASS for publishing these videos for free!</h2>



<p>I had a lot of fun looking through my own videos, and I <em>love</em> having this library of free videos as a learning site for fundamental concepts. </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/16/watch-all-my-free-pass-summit-recordings-and-more-videos-at-pass-org/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6416</post-id>	</item>
		<item>
		<title>Watch: Can This Team Succeed at DevOps? Panel discussion</title>
		<link>https://littlekendra.com/2019/01/10/watch-can-this-team-succeed-at-devops-panel-discussion/</link>
					<comments>https://littlekendra.com/2019/01/10/watch-can-this-team-succeed-at-devops-panel-discussion/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 10 Jan 2019 16:00:10 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[Webcasts and Conference Sessions]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6399</guid>

					<description><![CDATA[I recently participated in a panel discussion for the SQL PASS DevOps virtual chapter. If you didn&#8217;t make the meeting, you can catch our 90 minute discussion here about how to make three different teams successful at database DevOps: Abstract: DevOps sounds great in theory, but in reality it&#8217;s tricky to transform your people, process,...]]></description>
										<content:encoded><![CDATA[
<p>I recently participated in a panel discussion for the <a href="https://devops.pass.org/" target="_blank" rel="noreferrer noopener" aria-label="SQL PASS DevOps virtual chapter (opens in a new tab)">SQL PASS DevOps virtual chapter</a>. If you didn&#8217;t make the meeting, you can catch our 90 minute discussion here about how to make three different teams successful at database DevOps:</p>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/vC77Dt4w8-U" width="800" height="450"></iframe></figure>



<p><strong>Abstract</strong>: DevOps sounds great in theory, but in reality it&#8217;s tricky to transform your people, process, and tools.</p>



<p>In&nbsp;this&nbsp;interactive, poll-packed panel discussion, we will use real-world scenarios to clarify what DevOps principles are and how they help reduce manual work and improve productivity for software developers and database administrators.</p>



<p>We&#8217;ll step through situations that are tricky when it comes to making database changes, sharing patterns to avoid and how to approach and conquer problematic entrenched processes.</p>



<p>This&nbsp;session is designed to be accessible to both beginners and advanced practitioners: we&#8217;ll talk through definitions of DevOps terms and patterns and will encourage audience discussion.</p>



<p>Your panelists:</p>



<ul><li>Kendra Little &#8211; Product Evangelist, Redgate</li><li>Hamish Watson &#8211; Alchemist, Morph iT</li><li>William Durkin &#8211; Data Platform Architect, Data Masterminds</li><li>Rob Sewell &#8211; Beard Twizzler</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/10/watch-can-this-team-succeed-at-devops-panel-discussion/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6399</post-id>	</item>
		<item>
		<title>What ‘Digital Transformation’ Means, and How You Can Use It to Advance Your Career (video)</title>
		<link>https://littlekendra.com/2019/01/03/what-digital-transformation-means-and-how-you-can-use-it-to-advance-your-career-video/</link>
					<comments>https://littlekendra.com/2019/01/03/what-digital-transformation-means-and-how-you-can-use-it-to-advance-your-career-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 03 Jan 2019 16:00:07 +0000</pubDate>
				<category><![CDATA[DevOps & IT Processes]]></category>
		<category><![CDATA[Webcasts and Conference Sessions]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6398</guid>

					<description><![CDATA[I recently spoke at the GroupBy free online conference. It was loads of fun, and the recordings from the event are now available. Here&#8217;s the hour long session I presented. Check out more free GroupBy sessions here. Session abstract: Whether you love or hate buzzwords, the big ones signify critical cultural changes. In this session,...]]></description>
										<content:encoded><![CDATA[
<p>I recently spoke at the <a rel="noreferrer noopener" aria-label="GroupBy free online conference (opens in a new tab)" href="https://groupby.org/" target="_blank">GroupBy free online conference</a>. It was loads of fun, and the recordings from the event are now available. Here&#8217;s the hour long session I presented. </p>



<p><a rel="noreferrer noopener" aria-label=" Check 'em out here (opens in a new tab)" href="https://groupby.org/watch-past-sessions/" target="_blank"> Check out more free GroupBy sessions here</a>.</p>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/g558T1vbZYQ?t=30" width="800" height="450"></iframe></figure>



<p><strong>Session abstract: </strong>Whether you love or hate buzzwords, the big ones signify critical cultural changes. In this session, Kendra Little will explain what executives mean when they describe a ‘digital transformation’, why this transformation is happening across all industries, and how understanding this gives developers and database administrators an advantage in building their careers. You will learn what motivates CEOs to modify their business models in a digital transformation, and patterns and anti-patterns of companies that have attempted these transformations – with different results. You’ll leave the session with an understanding of the core ideas and philosophies behind digital transformation that will help you prioritize what to learn, guide your interactions at work, and strategize your career path </p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/03/what-digital-transformation-means-and-how-you-can-use-it-to-advance-your-career-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6398</post-id>	</item>
		<item>
		<title>Do 75% of data breaches really come from &#8220;insiders&#8221;?</title>
		<link>https://littlekendra.com/2019/01/02/do-75-of-data-breaches-really-come-from-insiders/</link>
					<comments>https://littlekendra.com/2019/01/02/do-75-of-data-breaches-really-come-from-insiders/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 02 Jan 2019 16:00:24 +0000</pubDate>
				<category><![CDATA[Privacy, Security, Compliance]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6380</guid>

					<description><![CDATA[There&#8217;s a lot of information out there on data breaches. I&#8217;ve written before about one source that I trust &#8212; the Verizon Data Breach Report (DBIR). The 2018 DBIR studied a sample of 2,216 confirmed data breaches, and of these it found that 28% involved internal actors. The DBIR uses a publicly accessible database of...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/hackerman.png?resize=350%2C350&#038;ssl=1" alt="" class="wp-image-6383" width="350" height="350" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/hackerman.png?w=700&amp;ssl=1 700w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/hackerman.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/hackerman.png?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/hackerman.png?resize=350%2C350&amp;ssl=1 350w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/hackerman.png?resize=600%2C600&amp;ssl=1 600w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/hackerman.png?resize=560%2C560&amp;ssl=1 560w" sizes="(max-width: 350px) 100vw, 350px" data-recalc-dims="1" /></figure></div>



<p>There&#8217;s a lot of information out there on data breaches. I&#8217;ve written before about <a href="https://littlekendra.com/2018/12/03/where-do-data-breaches-come-from/">one source that I trust &#8212; the Verizon Data Breach Report (DBIR)</a>. </p>



<p>The 2018 DBIR studied a sample of 2,216 confirmed data breaches, and of these it found that 28% involved internal actors. The DBIR uses a publicly accessible <a rel="noreferrer noopener" aria-label="database of security incidents (opens in a new tab)" href="https://github.com/vz-risk/VCDB" target="_blank">database of security incidents</a>, and applies quality filters to data before including it in the report.</p>



<h2>Only 28%? I heard that 75% of breaches come from &#8220;insiders&#8221;</h2>



<p> Different studies sample different breaches, so it&#8217;s natural that there would be some variance on findings about who is behind breaches. However, I heard about a report where the variance was enough that I wanted to look into it: a presentation at the PASS Summit in 2018 cited a 2017 article which found that three quarters of data breaches came from &#8220;insiders.&#8221;</p>



<p>This figure seems very high to me. Every day we hear about data breaches in the news &#8212; from <a rel="noreferrer noopener" aria-label="bagels  (opens in a new tab)" href="https://littlekendra.com/2018/12/03/where-do-data-breaches-come-from/" target="_blank">bagels </a>to literally <a rel="noreferrer noopener" aria-label="everything else (opens in a new tab)" href="https://www.businessinsider.com/data-hacks-breaches-biggest-of-2018-2018-12" target="_blank">everything else</a>. Could three quarters of these really be due to the malice or incompetence of employees?</p>



<p>Let&#8217;s find out where that number comes from.</p>



<h2>Follow the article trail</h2>



<p>I&#8217;m not going to link to the articles involved in spreading this statistic, because I think they&#8217;re clickbait. I followed a trail of:</p>



<ul><li>A somewhat legitimate looking security article which says, &#8220;nearly three-quarters of incidents are due to&nbsp;insider threats.&#8221; The article doesn&#8217;t define what insider threats <em>are</em>, but says &#8220;Not all insider threats are deliberate,&#8221; and then references a different study.</li><li>The source referenced for the &#8220;nearly three-quarters&#8221; stat in that article is an ebook by a security tools retailer. In the undated eBook, they write&#8230; <ul><li>&#8220;According to the most recent Clearswift Insider Threat Index (CITI) report, 74% of security breaches originate from within the extended global enterprise. &#8221; </li></ul></li></ul>



<p>It looks like the original source of the &#8220;75%&#8221; number is the security company Clearswift. They used to publish their &#8220;Threat Index&#8221; as a PDF, but more recent years appear to simply be simpler press releases, <a rel="noreferrer noopener" aria-label="such as this one for 2017 (opens in a new tab)" href="https://www.clearswift.com/about-us/pr/press-releases/insider-threat-74-security-incidents-come-extended-enterprise-not-hacking-groups" target="_blank">such as this one for 2017</a>.</p>



<h2>What do we know about the methodology?</h2>



<p>Studying data breaches is hard, for a few reasons. Not everyone wants to talk about them. Often, it&#8217;s a long time until the breach is discovered. And getting to the bottom of the breaches can be tough.</p>



<p>The folks at Clearswift describe their research as having&#8230;</p>



<blockquote class="wp-block-quote"><p>surveyed 600 senior business decision makers and 1,200 employees across the UK, US, Germany and Australia</p><cite><a href="https://www.clearswift.com/about-us/pr/press-releases/insider-threat-74-security-incidents-come-extended-enterprise-not-hacking-groups">Clearswift 2017 threat index</a></cite></blockquote>



<p>It&#8217;s not clear how many of these respondents had confirmed data breaches that impacted customers, or the nature of how the causes of the breaches were assessed. </p>



<p>Reading the press release, here&#8217;s some clarification on the numbers for 2017:</p>



<ul><li> &#8220;Threats from an employee &#8211; inadvertent or malicious &#8211; make up 42% of incidents&#8221;</li><li> &#8220;When looking at the extended enterprise – employees, customers, suppliers, and ex-employees – this number reaches 74%, compared to 26% of attacks from parties unknown to the organization.&#8221;</li></ul>



<h2>Looking at sources: do they define &#8216;data breach&#8217; and &#8216;security incident&#8217;?</h2>



<p>The folks who write the Verizon DBIR are very careful about defining terms at the beginning of their report &#8212; which is one of the reasons I&#8217;m such a big fan of it. Here are the definitions from the 2018 DBIR:</p>



<ul><li>Security incidents are: “a security event that compromises the integrity, confidentiality or availability of an information asset”.&nbsp;</li><li>Data breaches are: “an incident that results in the&nbsp;confirmed disclosure&nbsp;— not just potential exposure —&nbsp;of data to an unauthorized party.”</li></ul>



<p>Clearswift uses both of these terms, but their threat indexes do not define them or differentiate against them. It often reads as if they use the terms interchangeably. That&#8217;s a big problem &#8212; and it may be that the people who are taking their surveys aren&#8217;t sure what the definitions are, either.</p>



<h2>These numbers shouldn&#8217;t add up, should they?</h2>



<p>Another puzzling thing about the Clearswift numbers is that they add up a bit <em>too</em> neatly. </p>



<p>If 74% of attacks originate from &#8216;inside&#8217; (the extended enterprise, due to malice and accident) and 26% originate from hackers outside, then were there 0% of cases where hackers collaborated with a malicious employee? Or where hackers took advantage of a mistake?</p>



<p>Isn&#8217;t it natural, and even likely, that many data breaches have multiple points of origin?</p>



<h2>Separating the research from the clickbait</h2>



<p>When I&#8217;m reading about data breaches, I ask these questions:</p>



<ul><li>Is the source study clearly referenced and available for review?</li><li>Does the source study define its terms clearly?</li><li>Does the source study clearly state how many distinct confirmed data breaches were analyzed?</li><li>Does the source study allow multiple causes for a data breach?</li></ul>



<p>If all of those are a &#8216;yes&#8217;, it&#8217;s probably not clickbait. </p>



<p>In this case, I think it probably is.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2019/01/02/do-75-of-data-breaches-really-come-from-insiders/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6380</post-id>	</item>
		<item>
		<title>Watch: The Best of 2018 and Predictions for 2019 (video)</title>
		<link>https://littlekendra.com/2018/12/27/watch-the-best-of-2018-and-predictions-for-2019-video/</link>
					<comments>https://littlekendra.com/2018/12/27/watch-the-best-of-2018-and-predictions-for-2019-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 27 Dec 2018 16:00:04 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<category><![CDATA[Webcasts and Conference Sessions]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6400</guid>

					<description><![CDATA[I recently got together with fellow Microsoft Data Platform MVPs Steve Jones, Kathi Kellenberger and Grant Fritchey to discuss the highlights of innovations we&#8217;ve seen in 2018 and predictions for 2019. The 63 minute recording is available to watch anytime here.]]></description>
										<content:encoded><![CDATA[
<p>I recently got together with fellow Microsoft Data Platform MVPs Steve Jones, Kathi Kellenberger and Grant Fritchey to discuss the highlights of innovations we&#8217;ve seen in 2018 and predictions for 2019. The 63 minute recording is available to watch anytime here.</p>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/QnoztgV9PyY" width="800" height="450"></iframe></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/12/27/watch-the-best-of-2018-and-predictions-for-2019-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6400</post-id>	</item>
		<item>
		<title>Adding Microsoft MVP Contributions with PowerShell &#8211; Lessons Learned using the MVP API</title>
		<link>https://littlekendra.com/2018/12/26/adding-microsoft-mvp-contributions-with-powershell-lessons-learned-using-the-mvp-api/</link>
					<comments>https://littlekendra.com/2018/12/26/adding-microsoft-mvp-contributions-with-powershell-lessons-learned-using-the-mvp-api/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 26 Dec 2018 16:20:47 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6387</guid>

					<description><![CDATA[One of the things that brings Microsoft MVPs together each year is complaining about the pains of reporting community contributions to Microsoft. This is a typical first world problem, but with a history of reporting tools ranging from temperamental Infopath forms to websites where you painstakingly click here and there for hours, there have been...]]></description>
										<content:encoded><![CDATA[
<p>One of the things that brings <a href="https://mvp.microsoft.com" target="_blank" rel="noreferrer noopener" aria-label="Microsoft MVPs (opens in a new tab)">Microsoft MVPs</a> together each year is complaining about the pains of reporting community contributions to Microsoft.</p>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/fig-24-12-2018_17-12-23.jpg?resize=300%2C300&#038;ssl=1" alt="" class="wp-image-6389" width="300" height="300" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/fig-24-12-2018_17-12-23.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/12/fig-24-12-2018_17-12-23.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>This is a typical first world problem, but with a history of reporting tools ranging from temperamental Infopath forms to websites where you painstakingly click here and there for <em>hours</em>, there have been reasons for the complaints.</p>



<p>This year I decided to try out using PowerShell to add my contributions. This has been available for about a year thanks to <a href="https://github.com/lazywinadmin/MVP/graphs/contributors">François-Xavier Cat and a few friends</a>, but I&#8217;d completely forgotten that it was possible until <a rel="noreferrer noopener" aria-label="William Durkin (opens in a new tab)" href="https://twitter.com/sql_williamd" target="_blank">William Durkin</a> <a rel="noreferrer noopener" aria-label="reminded me about it on Twitter (opens in a new tab)" href="https://twitter.com/sql_williamd/status/1062431060930297858" target="_blank">reminded me about it on Twitter</a>.</p>



<p>First time ever, I didn&#8217;t wait until the last minute to start thinking about my annual contributions. Instead, I took a little time to learn about how this works &#8212; and now I&#8217;ll keep my contributions in a spreadsheet and then upload them right before the deadline.</p>



<p>Here are my notes on what I found, and why I&#8217;ll still wait to upload.</p>



<h2>Some setup is required</h2>



<p>The documentation for setup is quite good. I used <a href="https://github.com/lazywinadmin/MVP/blob/master/README.md#Install">the main documentation and it went very smoothly</a>.</p>



<p>One note: in the docs it mentions that your request will be reviewed and accepted by an administrator within a couple of business days. Mine appeared to be auto-approved and I didn&#8217;t have to wait at all, I was able to start using my subscription right away.</p>



<h2>Caching sounds great, until it&#8217;s not</h2>



<blockquote class="wp-block-quote"><p>There are only two hard things in Computer Science: cache invalidation and naming things.</p><cite>Phil Karlton</cite></blockquote>



<p>The most painful part of uploading contributions with PowerShell wasn&#8217;t getting the upload to work: it was figuring out that <a rel="noreferrer noopener" aria-label="the cache for the MVP website doesn't get cleared by the tool. (opens in a new tab)" href="https://github.com/lazywinadmin/MVP/issues/15" target="_blank">the cache for the MVP website doesn&#8217;t get cleared by PowerShell uploads which use the API.</a></p>



<p>This means that the contributions you see on your profile on the website are probably not the current version at all if you&#8217;re uploading via PowerShell, because that cache is way out of date.</p>



<p>This is true if you are:</p>



<ul><li>Looking at your contributions from a logged out state</li><li>Editing your contributions while logged in. The website doesn&#8217;t even invalidate the cache reliably if you&#8217;re editing your contributions, I&#8217;ve found <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f602.png" alt="😂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li></ul>



<h2>Workaround: export all your contributions to a .csv file from the API and review them that way</h2>



<p>I&#8217;m no scripting genius, but I came up with a simple command to export all my contributions for review:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
 
Get-MVPContribution -Limit 500 | export-csv exportedcontributions.csv

</pre></div>


<p>This also gives you the ContributionId for each of your contributions, in case you want to delete any.</p>



<h2>Inserts are easy, updates are hard</h2>



<p>One of the main questions I had when starting out was whether re-running New-MVPContribution would be smart enough to identify matching existing contributions with the same date and description, and update other  information, such as the &#8216;AnnualReach&#8217;.</p>



<p>Why this matters: Microsoft doesn&#8217;t publish the criteria they use to select MVPs, but if I was them, I&#8217;d pay a lot of attention to those reach numbers.</p>



<p>So when it comes to items like videos, I want to report the reach at the end of the review cycle, not just after I post the video.</p>



<p>Finding: New-MVPContribution does not find and update contributions. If you rerun an import for a .csv file with contributions, it&#8217;s very easy to create duplicates.</p>



<h2>If you accidentally create duplicate contributions, no worries</h2>



<p>It&#8217;s simple to get a list of all your contributions using Get-MVPContribution (see my workaround above), and then <a href="https://github.com/lazywinadmin/MVP/blob/master/README.md#RemoveMvpContributionMultiple">run a delete loop using the ContributionIds with  code like this sample in the documentation</a>.)</p>



<h2>All in all, I like this way of managing contributions</h2>



<p>My new way of doing this is&#8230;</p>



<ol><li>Use <a rel="noreferrer noopener" aria-label="a simple spreadsheet saved as a .csv file (opens in a new tab)" href="https://github.com/lazywinadmin/MVP/blob/master/README.md#NewMvpContributionMultiple" target="_blank">a simple spreadsheet saved as a .csv file</a> to track my contributions: I&#8217;ll update it once a month with a summary of the talks that I&#8217;ve done that month, and links to videos I&#8217;ve posted.</li><li>A couple of weeks before contributions are due, I&#8217;ll update the reach numbers for the videos in the spreadsheet. I&#8217;ll also add in entries for aggregate information where helpful &#8212; for example, I add a single line for all my blog posts with reach information, instead of a line for each post. Then I&#8217;ll do a single upload for the year from the .csv file.</li><li>After upload, I&#8217;ll manually edit a contribution in the GUI and see if this triggers a cache clear to validate display of the contributions (I&#8217;ve had mixed results). Setting a reminder to see how they display the next day isn&#8217;t a bad idea, either.</li></ol>



<p>It&#8217;s certainly not perfect, but it&#8217;s waaaaaaay better than an old infopath form, so I&#8217;m happy to have it.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/12/26/adding-microsoft-mvp-contributions-with-powershell-lessons-learned-using-the-mvp-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6387</post-id>	</item>
		<item>
		<title>Where do data breaches come from?</title>
		<link>https://littlekendra.com/2018/12/03/where-do-data-breaches-come-from/</link>
					<comments>https://littlekendra.com/2018/12/03/where-do-data-breaches-come-from/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 03 Dec 2018 15:00:17 +0000</pubDate>
				<category><![CDATA[Privacy, Security, Compliance]]></category>
		<category><![CDATA[Data breach]]></category>
		<category><![CDATA[Data privacy and protection]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6370</guid>

					<description><![CDATA[I recently did a bit of research on the source of data breaches. In this post, I&#8217;ll talk a bit about my current favorite source for breach information, and a bit of what I learned. Verizon publishes the &#8216;Data Breach Investigations Report&#8217; annually&#160; The 2018 edition of this free report by Verizon Enterprise Solutions is...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="300" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/fig-30-11-2018_18-22-18.jpg?resize=300%2C300&#038;ssl=1" alt="A man in a zip-up flannel jacket holding a laptop awkwardly, wearing a mask and hat. Text over the photo reads, &quot;Common hacker fashion&quot;" class="wp-image-6371" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/fig-30-11-2018_18-22-18.jpg?w=300&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/fig-30-11-2018_18-22-18.jpg?resize=150%2C150&amp;ssl=1 150w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></figure></div>



<p>I recently did a bit of research on the source of data breaches. In this post, I&#8217;ll talk a bit about my current favorite source for breach information, and a bit of what I learned. </p>



<h2>Verizon publishes the &#8216;Data Breach Investigations Report&#8217; annually&nbsp;</h2>



<p>The 2018 edition of<a href="https://enterprise.verizon.com/resources/reports/dbir/"> this free report by Verizon Enterprise Solutions</a> is the 11th edition &#8212; they&#8217;ve had some practice. The reports are extremely well detailed, and shockingly, they&#8217;re even&nbsp;<em>entertaining</em>&nbsp;to read.</p>



<p>The reports don&#8217;t claim to discover all data breaches. After all, not all data breaches are discovered, and those that are discovered aren&#8217;t necessarily reported. </p>



<h2>2,216 breaches, analyzed</h2>



<p>The 2018 <a rel="noreferrer noopener" aria-label="The 2018 report covers 53,000 incidents (defined as &quot;a security event that compromises the integrity, confidentiality or availability of an information asset&quot;).&nbsp; (opens in a new tab)" href="https://enterprise.verizon.com/resources/reports/dbir/" target="_blank">report</a> covers 53,000 incidents, defined as &#8220;a security event that compromises the integrity, confidentiality or availability of an information asset&#8221;.&nbsp;</p>



<p>It also covers 2,216 breaches, which are defined as &#8220;an incident that results in the <strong>confirmed disclosure</strong> &#8212; not just potential exposure &#8212; <strong>of data to an unauthorized party</strong>.&#8221;</p>



<p>These numbers (and the screenshots I&#8217;m sharing below), do NOT include&nbsp; breach data involving botnets. 43,000 &#8220;successful accesses via stolen credentials&#8221; associated with botnets are handled in a special insights section of the report.</p>



<h2>Are data breaches caused mainly by insiders or outsiders?</h2>



<p>A colleague of mine mentioned that he&#8217;d recently seen some numbers suggesting that data breaches were mainly perpetuated by insiders to an organization &#8212; but he hadn&#8217;t been able to track down the source of those figures or substantiating data. With the number of data breaches we see these days, that&#8217;s a pretty dark view of employee-employer relationships!</p>



<p>Here&#8217;s what the <a rel="noreferrer noopener" aria-label="Here's what the Verizon report shows in terms of who is behind the breaches: (opens in a new tab)" href="https://enterprise.verizon.com/resources/reports/dbir/" target="_blank">Verizon report</a> shows in terms of who is behind the breaches:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" width="318" height="341" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/verizon-data-breach-investigation-report-who-is-behind-breaches-screenshot.jpg?resize=318%2C341&#038;ssl=1" alt="A screenshot from the Verizon Data Breach Investigations Report 2018, showing 73% perpetuated by outsiders, 28% involving internal actors, 2% involving partners, 2% featuring multiple parties, 50% carried out by organized criminal groups, 12% involved actors identified as nation-state or state-affiliated" class="wp-image-6372" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/verizon-data-breach-investigation-report-who-is-behind-breaches-screenshot.jpg?w=318&amp;ssl=1 318w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/verizon-data-breach-investigation-report-who-is-behind-breaches-screenshot.jpg?resize=280%2C300&amp;ssl=1 280w" sizes="(max-width: 318px) 100vw, 318px" data-recalc-dims="1" /><figcaption>2018 Data Breach Investigations Report, 11th Edition, Verizon, page 5</figcaption></figure></div>



<p>These figures are regarding those confirmed data breaches, not all security incidents. While 28% involve internal actors, the bulk of data breaches are coming from people outside the organization, finding their way in by using malware or social attacks, or by exploiting vulnerabilities created due to errors.</p>



<h2>Who can a database administrator trust?</h2>



<p>For those internal actors involved in data breaches, my first thought was, &#8220;Well, so WHO WAS IT?&#8221;</p>



<p>That&#8217;s answered a couple pages later. While the exact internal actors weren&#8217;t found for all of the reported data breaches, analysis was done for 277 data breaches:</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/verizon-data-breach-investigation-report-who-is-behind-breaches-internal-actor-screenshot.jpg?resize=362%2C425&#038;ssl=1" alt="A screenshot from the Verizon Data Breach Investigations Report 2018, showing internal actors: 72 system admin, 62 end user, 62 other, 32 doctor or nurse, 15 developer, 9 manager, 8 executives" class="wp-image-6373" width="362" height="425" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/verizon-data-breach-investigation-report-who-is-behind-breaches-internal-actor-screenshot.jpg?w=483&amp;ssl=1 483w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/verizon-data-breach-investigation-report-who-is-behind-breaches-internal-actor-screenshot.jpg?resize=256%2C300&amp;ssl=1 256w" sizes="(max-width: 362px) 100vw, 362px" data-recalc-dims="1" /><figcaption><br>2018 Data Breach Investigations Report, 11th Edition, Verizon, page 9</figcaption></figure></div>



<p>As much as database administrators like to focus on denying permissions to developers for production, developers were&nbsp;<em>much</em>&nbsp;less likely to be involved in data breaches than system admins.</p>



<p>And who exactly are system admins?</p>



<p>Well, I&#8217;m guessing that includes&#8230; the DBAs.&nbsp;</p>



<p>Awkward.</p>



<h2>This is remarkable given that you don&#8217;t need production access to cause a data breach</h2>



<p>It&#8217;s a pretty normal practice in an Enterprise to make copies of production data for use in internal environments. Copies of data are used by analysts, developers, product managers, marketing professionals, and more.</p>



<p>Redgate&#8217;s 2018 <a rel="noreferrer noopener" aria-label="Redgate's 2018 State of Database DevOps Report found&nbsp; (opens in a new tab)" href="https://www.red-gate.com/solutions/database-devops/report-2018" target="_blank">State of Database DevOps Report</a> found that 67% of respondents use production data in development, test, or QA Environments, and that 58% of respondents reported that production data should be masked when in use in these environments:</p>



<div class="wp-block-image"><figure class="aligncenter"><a href="https://www.red-gate.com/solutions/database-devops/report-2018" target="_blank" rel="noreferrer noopener"><img loading="lazy" width="715" height="303" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/redgate-state-of-database-devops-report-production-data.jpg?resize=715%2C303&#038;ssl=1" alt="Screenshot showing two questions and responses: &quot;Do you use production data in your dev, test, or QA environments?&quot; 67% yes, 28% no, 5% not sure. &quot;Would your production data need to be modified or masked before use in dev, test, or QA environments?&quot; 57% yes, 33% no, 10% not sure." class="wp-image-6374" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/redgate-state-of-database-devops-report-production-data.jpg?w=715&amp;ssl=1 715w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/redgate-state-of-database-devops-report-production-data.jpg?resize=300%2C127&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/redgate-state-of-database-devops-report-production-data.jpg?resize=560%2C237&amp;ssl=1 560w" sizes="(max-width: 715px) 100vw, 715px" data-recalc-dims="1" /></a><figcaption>The 2018 State of Database Devops, Redgate, p12</figcaption></figure></div>



<p>There are good reasons that production data is spread around like this: performance is extremely difficult to predict using data that doesn&#8217;t have a very similar distribution and similar size to production data.</p>



<p>But after many years of working in IT, I know that most often this data is not modified or masked after being duplicated. These environments tend to be far less secure than production environments, and they are a very rich target for data breaches &#8212; even if it&#8217;s not the developers themselves intentionally causing the data breach.</p>



<p>The rise of malware and social attacks means that all environments in our company can the the source of a data breach.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/12/03/where-do-data-breaches-come-from/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6370</post-id>	</item>
		<item>
		<title>Why You Should Take the &#8216;State of Database DevOps Survey&#8217; Today (even if you don&#8217;t do DevOps)</title>
		<link>https://littlekendra.com/2018/11/27/why-you-should-take-the-state-of-database-devops-survey-today-even-if-you-dont-do-devops/</link>
					<comments>https://littlekendra.com/2018/11/27/why-you-should-take-the-state-of-database-devops-survey-today-even-if-you-dont-do-devops/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 27 Nov 2018 15:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6225</guid>

					<description><![CDATA[Update: The survey is now closed, thanks folks! When I began working with databases, nobody talked about DevOps. It was a few years before I heard the words &#8216;Agile&#8217; and &#8216;Extreme Programming&#8217;, (which I still read as &#8220;EXTREEEEEEMMMMME programmin!&#8221;). A lot has changed since then. But a lot&#160;hasn&#8217;t&#160;changed as well.&#160; Please help us track the...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><a href="https://redgate.com/dbdsurvey" target="_blank" rel="noreferrer noopener"><img loading="lazy" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/state-of-database-devops-survey.png?resize=400%2C266&#038;ssl=1" alt="" class="wp-image-6226" width="400" height="266" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/state-of-database-devops-survey.png?zoom=2&amp;resize=400%2C266&amp;ssl=1 800w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/state-of-database-devops-survey.png?zoom=3&amp;resize=400%2C266&amp;ssl=1 1200w" sizes="(max-width: 400px) 100vw, 400px" data-recalc-dims="1" /></a><figcaption><em>The survey contains 32 questions and should take less than 10 minutes to complete.</em></figcaption></figure></div>



<p><strong>Update: The survey is now closed, thanks folks!</strong></p>



<p>When I began working with databases, nobody talked about DevOps. It was a few years before I heard the words &#8216;Agile&#8217; and &#8216;Extreme Programming&#8217;, (which I still read as &#8220;EXTREEEEEEMMMMME programmin!&#8221;).</p>



<p>A lot has changed since then. But a lot&nbsp;<em>hasn&#8217;t</em>&nbsp;changed as well.&nbsp;</p>



<p>Please help us track the history of how we work with databases by <a href="https://redgate.com/dbdsurvey">taking the Redgate State of Database DevOps survey today</a>. I believe it&#8217;s helpful to our whole community to participate in this survey, and this post explains a few reasons why.&nbsp;</p>



<h2>The survey&#8230;</h2>



<ul><li>Is hosted by SurveyMonkey, no login is required</li><li>Takes around 10 minutes</li><li>Allows you to remain anonymous OR provide contact info to get a chance at winning a $250 Amazon gift card</li><li>Is for everyone who works with databases, regardless of whether you use DevOps or are a Redgate customer</li><li>Closes Friday, November 30th</li></ul>



<h2>The survey creates a history of how we manage database changes</h2>



<p>I was recently listening to a podcast on <a href="https://go.forrester.com/what-it-means/ep76-future-of-it/">CIOs and the Future of IT</a>. The hosts discussed that executives need to be very forward-thinking, and focus on where the company is going more than where the company&nbsp;<em>is</em>.</p>



<p>One side effect of this: executives often think that their organization is ahead of where they actually are, in terms of changing processes and adapting to business initiatives.</p>



<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="200" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/Looking-ahead-and-perspective.jpg?resize=300%2C200&#038;ssl=1" alt="" class="wp-image-6230" data-recalc-dims="1"/></figure></div>



<p>This makes a lot of sense to me. When I learned to ride a motorcycle, the instructors emphasized that looking forward to where you are going is important when it comes to executing turns correctly. You need to have a wide field of vision and see obstacles, but if you stare at obstacles too much you are more likely to hit them.&nbsp;</p>



<p>However, we need a feedback loop! We need all sorts of people who work with databases to discuss what actually happens. This allows Redgate to document and share what&#8217;s really happening right now in our technical patterns and practices. You can help us do that by answering the survey (and things like this are why we ask about your job title in the questions).</p>



<h2>Responding helps us identify and share with you information to help you drive change</h2>



<p>Ever had an idea which would make a big difference for your organization, but you weren&#8217;t sure how to make it catch on?</p>



<div class="wp-block-image"><figure class="alignright"><a href="https://redgate.com/dbdsurvey" target="_blank" rel="noreferrer noopener"><img src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/State-of-Database-DevOps-Survey-1.jpg?w=1200&#038;ssl=1" alt="" class="wp-image-6232" data-recalc-dims="1"/></a></figure></div>



<p>This might be an idea about DevOps, or it might be about data science, cloud adoption, general automation&#8211; any project big enough that it&#8217;s not simply something you can implement yourself.</p>



<p>It&#8217;s difficult as a DBA or developer to know how to approach these ideas. Do you need executive support? Is there another way you can help move it forward? The State of Database DevOps survey asks questions about how people have moved projects forward to help map out how change is instigated and sustained in companies. </p>



<p>This helps Redgate discover and share with you how you can get projects moving (and you can apply this to projects other than DevOps).</p>



<h2>Responding provides the community with information on how database development and administration jobs are changing </h2>



<p>I hear from a lot of folks who are concerned about the future. There&#8217;s so much to learn, and it&#8217;s increasingly difficult to prioritize between learning more about the tasks you work on today, and learning more about the tools which you may use tomorrow.&nbsp;</p>



<p>The results from the State of Database DevOps help show the community: how are roles changing? What&#8217;s still the same? This will help you answer those tough questions about what to focus on.</p>



<h2>Take the survey today!</h2>



<p>Please share the survey with your colleagues (shortlink: <a rel="noreferrer noopener" aria-label="Please share the survey with your colleagues (shortlink: redgate.com/DBDSurvey) and complete the survey today. (opens in a new tab)" href="http://redgate.com/DBDSurvey" target="_blank">redgate.com/DBDSurvey</a>). And remember, the survey is only open until November 30th, so&nbsp;<a href="https://redgate.com/dbdsurvey">complete the survey today</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/27/why-you-should-take-the-state-of-database-devops-survey-today-even-if-you-dont-do-devops/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6225</post-id>	</item>
		<item>
		<title>Create dynamic agenda slides with PowerPoint Zoom</title>
		<link>https://littlekendra.com/2018/11/26/how-to-create-dynamic-agenda-slides-with-powerpoint-zoom/</link>
					<comments>https://littlekendra.com/2018/11/26/how-to-create-dynamic-agenda-slides-with-powerpoint-zoom/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 26 Nov 2018 16:00:00 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6211</guid>

					<description><![CDATA[There was a time when I saw PowerPoint as a necessary evil &#8211; a way of conveying ideas that I wasn&#8217;t crazy about, but which worked. These days, my perspective has changed quite a bit. I&#8217;ve become a PowerPoint fan for a couple of reasons. First, I&#8217;m more proficient with PowerPoint, so I can put...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Create-dynamic-agenda-slides-with-PowerPoint-Zoom-350-x-350.jpg?resize=263%2C263&#038;ssl=1" alt="" class="wp-image-6214" width="263" height="263" data-recalc-dims="1" /></figure></div>



<p>There was a time when I saw PowerPoint as a necessary evil &#8211; a way of conveying ideas that I wasn&#8217;t crazy about, but which worked. These days, my perspective has changed quite a bit. </p>



<p>I&#8217;ve become a PowerPoint fan for a couple of reasons. First, I&#8217;m more proficient with PowerPoint, so I can put together  presentations quickly and my slides carry greater impact.&nbsp; Also, the PowerPoint team has added features that I believe help me deliver presentations more effectively. </p>



<p>This describes one of those features: the new &#8216;Zoom&#8217; functionality.</p>



<h2>&#8216;Zoom&#8217; is about dynamic presentations (rather than &#8216;zooming in&#8217;)</h2>



<p>I think it&#8217;s incredibly important to give your audience context for where you are in a presentation &#8212; especially in a talk longer than 5 minutes. I like to give folks an outline of the narrative at the beginning of the talk in the agenda. While I&#8217;m going through the material, I like to return to that agenda and show where we are in the talk.</p>



<p>This has more than one benefit: first and foremost, it helps keep your audience from being too restless, because they understand more how much you&#8217;re going to cover. But additionally, I find that it helps solidify learning for your audience by repeatedly contextualizing details within the larger narrative structure. In other words, revisiting an agenda effectively can help prevent &#8220;not seeing the forest for the trees.&#8221;</p>



<p>For years, I&#8217;ve built slides manually that do this &#8212; but as you add and remove sections from your talk, it becomes a real pain to update. The &#8216;Zoom&#8217; feature makes it much easier to build a dynamic agenda, and it&#8217;s more powerful than manually created slides can be, too. </p>



<h2>It&#8217;s easier to show this than it is to describe it, so here&#8217;s a 1.5 minute video showing what it looks like</h2>



<figure><iframe loading="lazy" src="https://www.youtube.com/embed/G1XqbXPr9lk" width="800" height="450"></iframe></figure>



<h2>Sorry, this isn&#8217;t available in every installation of PowerPoint</h2>



<p>As of the time of this writing, Zoom is available in&nbsp;PowerPoint for Office 365, PowerPoint for Office 365 for Mac, and PowerPoint 2019. The documentation from Microsoft is <a href="https://support.office.com/en-us/article/use-zoom-for-powerpoint-to-bring-your-presentation-to-life-9d6c58cd-2125-4d29-86b1-0097c7dc47d7" target="_blank" rel="noreferrer noopener" aria-label="As of the time of this writing, Zoom is available in&nbsp;PowerPoint for Office 365, PowerPoint for Office 365 for Mac, and PowerPoint 2019. The documentation from Microsoft is here. (opens in a new tab)">here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/26/how-to-create-dynamic-agenda-slides-with-powerpoint-zoom/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6211</post-id>	</item>
		<item>
		<title>Join me for an upcoming webinar, &#8220;Data Masking: Insights &#038; Actions&#8221;</title>
		<link>https://littlekendra.com/2018/11/21/join-me-for-an-upcoming-webinar-data-masking-insights-actions/</link>
					<comments>https://littlekendra.com/2018/11/21/join-me-for-an-upcoming-webinar-data-masking-insights-actions/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 21 Nov 2018 15:00:06 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6217</guid>

					<description><![CDATA[There has never been a better time to start a project to champion data privacy In a recent Harris poll sponsored by the payment company Stripe, over 1,000 C-level executives were asked to rate which factors they feel are most threatening to their business. The #1 item that executives rated as &#8220;somewhat&#8221; or &#8220;very&#8221; threatening...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><a href="https://attendee.gotowebinar.com/register/2217637282347027971?source=KB" target="_blank" rel="noreferrer noopener"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/Data-Masking-Webinar-Kendra.png?resize=400%2C269&#038;ssl=1" alt="" class="wp-image-6218" width="400" height="269" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/Data-Masking-Webinar-Kendra.png?zoom=2&amp;resize=400%2C269&amp;ssl=1 800w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/11/Data-Masking-Webinar-Kendra.png?zoom=3&amp;resize=400%2C269&amp;ssl=1 1200w" sizes="(max-width: 400px) 100vw, 400px" data-recalc-dims="1" /></a><figcaption>Click the image to register for the webcast</figcaption></figure></div>



<h2>There has never been a better time to start a project to champion data privacy</h2>



<p>In <a rel="noreferrer noopener" aria-label="In a recent Harris poll sponsored by the payment company Stripe, over 1,000 C-level executives were asked to rate which factors they felt were threatening to their business.  (opens in a new tab)" href="https://stripe.com/files/reports/the-developer-coefficient.pdf" target="_blank">a recent Harris poll sponsored by the payment company Stripe</a>, over 1,000 C-level executives were asked to rate which factors they feel are most threatening to their business. </p>



<p>The #1 item that executives rated as &#8220;somewhat&#8221; or &#8220;very&#8221; threatening to the success of their business is&nbsp;<strong>security / data breaches</strong>. The #2 rated threat to these businesses? <strong>Increased regulation</strong>.&nbsp;</p>



<h2>Data masking mitigates these top threats</h2>



<p>One of my very first jobs when I began in IT was to build out environments for developer and test teams at a software development company. At first, we didn&#8217;t mask any of this data. After problems arose, we began masking only a single field. That was a huge mistake.</p>



<p>In this <a href="https://attendee.gotowebinar.com/register/2217637282347027971?source=KB">upcoming free webcast</a>, I&#8217;ll share the following in just 30 minutes:</p>



<ul><li>Why data professionals have a history of neglecting privacy (just like I did in that first job)</li><li>The three industry drivers for data masking</li><li>Why regulations have become a top risk to C-level executives</li><li>Key elements of static data masking tools to consider when evaluating products</li><li>Pains that people run into when implementing data masking (and how Redgate tools address those pains)</li><li>An overview of the data masking process</li><li>Next steps to take in making a case for a data masking project at your organization</li></ul>



<h2>Now is the time to become a privacy champion</h2>



<p>Whether or not you are an IT leader, a developer, or a DBA, right now you have a huge opportunity to make a difference for your organization,&nbsp; your customers, and your own career by championing privacy. </p>



<p>Yep, your own career! Those top two C-level concerns mentioned at the beginning of this post means that initiating projects like data masking and seeing them through from proof-of-concept to implementation is a big resume-building career move. That&#8217;s true whether you choose a Redgate solution, or use the information in this webinar to go a different route. </p>



<p>Join me in this upcoming webinar to learn the initial steps that you can make to instigate changes in your company &#8212; and to help mitigate the top risks that are keeping C-level executives up at night.</p>



<div class="wp-block-button is-style-default"><a class="wp-block-button__link has-background has-vivid-red-background-color" href="https://attendee.gotowebinar.com/register/2217637282347027971?source=KB">Register</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/21/join-me-for-an-upcoming-webinar-data-masking-insights-actions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6217</post-id>	</item>
		<item>
		<title>Watch: Getting executive buy in for DevOps &#8211; 3 top tips (video)</title>
		<link>https://littlekendra.com/2018/11/19/watch-getting-executive-buy-in-for-devops-3-top-tips-video/</link>
					<comments>https://littlekendra.com/2018/11/19/watch-getting-executive-buy-in-for-devops-3-top-tips-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 19 Nov 2018 19:48:04 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6208</guid>

					<description><![CDATA[DevOps is the way of the future &#8211; but not all executives understand that yet DevOps practices are powerful tools to build productive, engaged teams who constantly learn and regularly deliver value to their customers. High DevOps performers report greater workplace satisfaction than their peers. But implementing DevOps isn’t a matter of being great at...]]></description>
										<content:encoded><![CDATA[
<figure><iframe loading="lazy" src="https://www.youtube.com/embed/tlmCh62_Xts?t=87" width="800" height="450"></iframe></figure>



<h2>DevOps is the way of the future &#8211; but not all executives understand that yet</h2>



<p>DevOps practices are powerful tools to build productive, engaged teams who constantly learn and regularly deliver value to their customers.</p>



<p>High DevOps performers report greater workplace satisfaction than their peers. But implementing DevOps isn’t a matter of being great at writing code: to become a high DevOps performer, you need the powerful catalyst of executive support.</p>



<h2>Communicating the value of DevOps to company leaders requires changing your perspective</h2>



<p>In this webinar, I discuss the value of DevOps from the perspectives of CEOs, CIOs/CTOs, and Managers. We explore how the role of CIOs and CTOs are undergoing a major transformation, and how DevOps aligns with that transformation.</p>



<p>You will discover a fresh take on how to discuss DevOps with company leaders, and an understanding of how to explain the value of DevOps to people in these roles.

</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/19/watch-getting-executive-buy-in-for-devops-3-top-tips-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6208</post-id>	</item>
		<item>
		<title>Fix My Functions: Speeding Up Scalar and Table Valued UDFs (video)</title>
		<link>https://littlekendra.com/2018/11/14/fix-my-functions-speeding-up-scalar-and-table-valued-udfs-video/</link>
					<comments>https://littlekendra.com/2018/11/14/fix-my-functions-speeding-up-scalar-and-table-valued-udfs-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 14 Nov 2018 16:00:02 +0000</pubDate>
				<category><![CDATA[Execution Plans]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[SQL Server Technical Posts]]></category>
		<guid isPermaLink="false">https://sqlworkbooks.com/?p=71383</guid>

					<description><![CDATA[Last week, I was lucky enough to present on the topic of TSQL User Defined Functions (UDFs) in SQL Server at the PASS Summit. My session was live-streamed, and the video, scripts, and slides are below. Want to watch more Summit sessions for free? Check out PASS TV here. Video (1 hour 10 minutes) Note:...]]></description>
										<content:encoded><![CDATA[
<p>Last week, I was lucky enough to present on the topic of TSQL User Defined Functions (UDFs) in SQL Server at the PASS Summit.</p>



<p>My session was live-streamed, and the video, scripts, and slides are below.</p>



<p>Want to watch more Summit sessions for free? <a href="https://www.pass.org/Summit/2018/PASStv.aspx" target="_blank" rel="noreferrer noopener" aria-label="Want to watch more Summit sessions for free? Check out PASS TV here. (opens in a new tab)">Check out PASS TV here</a>.</p>



<h2>Video (1 hour 10 minutes)</h2>



<p>Note: if you&#8217;re just here to see the SQL Server 2019 (CTP2.1+) scalar UDF inlining, that starts at 54 minutes into the video. </p>



<figure class="wp-block-embed-youtube aligncenter wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="PASS Summit 2018 - Fix My Functions: Speeding Up Scalar and Table Valued UDFs" width="640" height="360" src="https://www.youtube.com/embed/HuBCyjxFAqM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2>Scripts</h2>


[download id=&#8221;71390&#8243;]



<h2>Slides</h2>



<p>Below the slides is an outline of the content, generated by SlideShare.</p>


[slideshare id=122936667&#038;doc=kendralittlefixmyfunctions20181108nohiddenslides-181113192740]



<p>1. Speeding Up Scalar and Table Valued UDFs Kendra Little, Redgate Fix My Functions</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-2-638.jpg?cb=1542137371" target="_blank">2.&nbsp;</a>Kendra Little Evangelist at Redgate Founder, SQL Workbooks Microsoft MVP, MCM Kendra.Little@red-gate.com @Kendra_Little</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-3-638.jpg?cb=1542137371" target="_blank">3.&nbsp;</a>This talk Level: 200 Audience: DBAs &amp; Devs Goals: Speed up functions</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-4-638.jpg?cb=1542137371" target="_blank">4.&nbsp;</a>“It is a known fact amongst practitioners that UDFs are “evil” when it comes to performance considerations [35, 28].”</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-5-638.jpg?cb=1542137371" target="_blank">5.&nbsp;</a>Agenda</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-6-638.jpg?cb=1542137371" target="_blank">6.&nbsp;</a>Why we use functions Modular meerkat</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-7-638.jpg?cb=1542137371" target="_blank">7.&nbsp;</a>Why functions? Modularity Code reuse Simplify queries</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-8-638.jpg?cb=1542137371" target="_blank">8.&nbsp;</a>Function types Scalar: returns a single value Multi-statement TVF: returns table Inline TVF: returns table</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-9-638.jpg?cb=1542137371" target="_blank">9.&nbsp;</a>CREATE FUNCTION [schema].[function_name] (@parameter_name AS INT) RETURNS INT &#8211;WITH SCHEMABINDING, &#8230; AS BEGIN RETURN END GO Scalar function syntax</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-10-638.jpg?cb=1542137371" target="_blank">10.&nbsp;</a>CREATE FUNCTION [schema].[function_name] (@parameter_name AS INT) RETURNS @return_variable TABLE (/* table type definition */) &#8211;WITH SCHEMABINDING, &#8230; AS BEGIN RETURN END GO Multi-statement TVF syntax</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-11-638.jpg?cb=1542137371" target="_blank">11.&nbsp;</a>CREATE FUNCTION [schema].[function_name] (@parameter_name AS INT) RETURNS TABLE &#8211;WITH SCHEMABINDING, &#8230; AS RETURN ( ) GO Inline TVF syntax</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-12-638.jpg?cb=1542137371" target="_blank">12.&nbsp;</a>SELECT TOP (10) qp.dbid, qp.query_plan, cp.size_in_bytes / 1024. / 1024. AS size_in_mb FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp ORDER BY size_in_mb DESC; CROSS/OUTER APPLY and TVFs</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-13-638.jpg?cb=1542137371" target="_blank">13.&nbsp;</a>Demo: why so slow?</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-14-638.jpg?cb=1542137371" target="_blank">14.&nbsp;</a>sp_WhoIsActive &#8211; free procedure from Adam Machanic: WhoIsActive.com</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-15-638.jpg?cb=1542137371" target="_blank">15.&nbsp;</a>sp_WhoIsActive &#8211; free procedure from Adam Machanic: WhoIsActive.com</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-16-638.jpg?cb=1542137371" target="_blank">16.&nbsp;</a>Lightweight Statistics Profiling SQL Server 2014 SP2 through 2017 • Trace Flag 7412 • Install KB 4078596 (2016 &amp; 2017 only) SQL Server 2016 SP1+ MUCH lower overhead SQL Server 2019 no trace flag needed https://blogs.msdn.microsoft.com/sql_server_team/query-progress- anytime-anywhere</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-17-638.jpg?cb=1542137371" target="_blank">17.&nbsp;</a>sp_WhoIsActive Free procedure Written by @AdamMachanic WhoIsActive.com</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-18-638.jpg?cb=1542137371" target="_blank">18.&nbsp;</a>Find what functions hide Curious corg</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-19-638.jpg?cb=1542137371" target="_blank">19.&nbsp;</a>Get tuning data for functions Estimated &amp; actual execution plans Finding function calls in operators UdfCpuTime and UdfElapsedTime in actual execution plans</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-20-638.jpg?cb=1542137371" target="_blank">20.&nbsp;</a>Demo: spy on function internals</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-21-638.jpg?cb=1542137371" target="_blank">21.&nbsp;</a>Estimated plans help! Scalar functions and multi-statement TVFs: estimated plan shows the function logic • Does not appear in an actual execution plan • Plans for the calling query and the function are stored in sys.dm_exec_query_stats, but you must find them individually</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-22-638.jpg?cb=1542137371" target="_blank">22.&nbsp;</a>UDFs and parallelism TSQL scalar UDFs – serial plan Multi-statement TVFs – serial zone Computed column with TSQL UDF – parallelism eradicator, BEWARE</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-23-638.jpg?cb=1542137371" target="_blank">23.&nbsp;</a>MSTVFs and row estimates SQL Server 2005 – 2012 SQL Server 2014 &#8211; 2016 SQL Server 2017+ 100 1 ?</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-24-638.jpg?cb=1542137371" target="_blank">24.&nbsp;</a>Interleaved execution Part of adaptive query processing, all Editions Introduced in SQL Server 2017… • MSTVFS only • Read only queries • Cannot be on the inside of an APPLY • Compatibility level 140+</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-25-638.jpg?cb=1542137371" target="_blank">25.&nbsp;</a>Interleaved execution (continued) Diagram by Joe Sack @JoeSackMSFT https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/04/19/i ntroducing-interleaved-execution-for-multi-statement-table-valued- functions/</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-26-638.jpg?cb=1542137371" target="_blank">26.&nbsp;</a>Scalar UDF Inlining Clever crow</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-27-638.jpg?cb=1542137371" target="_blank">27.&nbsp;</a>https://aka.ms/iqp</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-28-638.jpg?cb=1542137371" target="_blank">28.&nbsp;</a>Why are scalar UDFs slow? Executed row by agonizing row Scalar operators not ‘costed’ No cross-statement optimization No parallelism https://docs.microsoft.com/en-us/sql/relational-databases/user-defined- functions/scalar-udf-inlining</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-29-638.jpg?cb=1542137371" target="_blank">29.&nbsp;</a>Automatic inlining Rewrite scalar UDF Substitute rewrite into calling query Then optimize https://docs.microsoft.com/en-us/sql/relational-databases/user-defined- functions/scalar-udf-inlining</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-30-638.jpg?cb=1542137371" target="_blank">30.&nbsp;</a>Demo: wizardry</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-31-638.jpg?cb=1542137371" target="_blank">31.&nbsp;</a>Controlling behavior Database compatibility level 150 CREATE FUNCTION … WITH INLINE = OFF USE HINT (&#8216;DISABLE_TSQL_SCALAR_UDF_INLINING&#8217;) https://docs.microsoft.com/en-us/sql/relational-databases/user-defined- functions/scalar-udf-inlining</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-32-638.jpg?cb=1542137371" target="_blank">32.&nbsp;</a>No scalar UDF inlining if it… Uses GETDATE() Uses table variables or TVPs Is in computed column Is in a check constraint https://docs.microsoft.com/en-us/sql/relational-databases/user-defined- functions/scalar-udf-inlining</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-33-638.jpg?cb=1542137371" target="_blank">33.&nbsp;</a>Takeaways</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-34-638.jpg?cb=1542137371" target="_blank">34.&nbsp;</a>Tips for tuning functions Scalar UDFs and Multi-Statement TVFs inhibit parallelism Use SCHEMABINDING if your function doesn’t do data access Use inline TVFs (single statement) or persist data when possible</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-35-638.jpg?cb=1542137371" target="_blank">35.&nbsp;</a>The future of scalar UDFs 2019 inlining is VERY compelling Edition has not been announced Releasing with “high coverage”</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-36-638.jpg?cb=1542137371" target="_blank">36.&nbsp;</a>References &amp; links Lightweight query profiling reference &#8211; Pedro Lopes https://blogs.msdn.microsoft.com/sql_server_team/query- progress-anytime-anywhere/ SQL Server Functions, the basics &#8211; Jeremiah Peschka https://www.red-gate.com/simple-talk/sql/t-sql- programming/sql-server-functions-the-basics/ Froid: Optimization of Imperative Programs in a Relational Database &#8211; Karthik Ramachandra et al http://www.vldb.org/pvldb/vol11/p432-ramachandra.pdf</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-37-638.jpg?cb=1542137371" target="_blank">37.&nbsp;</a>References &amp; links continued Interleaved execution for multi-statement TVFs &#8211; Joe Sack https://blogs.msdn.microsoft.com/sqlserverstorageengine/2017/04/19/introd ucing-interleaved-execution-for-multi-statement-table-valued-functions/ Parallelism inhibitors – Paul White http://sqlblog.com/blogs/paul_white/archive/2011/12/23/forcing -a-parallel-query-execution-plan.aspx</p>



<p><a rel="noreferrer noopener" href="https://image.slidesharecdn.com/kendralittlefixmyfunctions20181108nohiddenslides-181113192740/95/fix-my-functions-tsql-user-defined-functions-in-sql-server-38-638.jpg?cb=1542137371" target="_blank">38.&nbsp;</a>Thank You Where to find me… @Kendra_Little Kendra.Little@Red-Gate.com</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/14/fix-my-functions-speeding-up-scalar-and-table-valued-udfs-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71383</post-id>	</item>
		<item>
		<title>PASS Summit 2018 &#8211; Keynote Day 2 Commentary</title>
		<link>https://littlekendra.com/2018/11/08/pass-summit-2018-keynote-day-2-commentary/</link>
					<comments>https://littlekendra.com/2018/11/08/pass-summit-2018-keynote-day-2-commentary/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 08 Nov 2018 17:38:12 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6205</guid>

					<description><![CDATA[It&#8217;s the second main-session day of the Summit for the Professional Association of SQL Server. I had a great breakfast this morning with Brent Ozar, along with Nathan and James from my first timer group. If you attend Summit for the first time in the future, this is a great program and you should join...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="226" height="300" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-and-Malathi-Mahadevan-1.jpeg?resize=226%2C300&#038;ssl=1" alt="Kendra Little and Malathi Mahadevan before the keynote" class="wp-image-6206" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-and-Malathi-Mahadevan-1.jpeg?resize=226%2C300&amp;ssl=1 226w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-and-Malathi-Mahadevan-1.jpeg?resize=770%2C1024&amp;ssl=1 770w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-and-Malathi-Mahadevan-1.jpeg?resize=768%2C1022&amp;ssl=1 768w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-and-Malathi-Mahadevan-1.jpeg?resize=560%2C745&amp;ssl=1 560w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-and-Malathi-Mahadevan-1.jpeg?w=1532&amp;ssl=1 1532w" sizes="(max-width: 226px) 100vw, 226px" data-recalc-dims="1" /><figcaption>Kendra and Malathi Mahadevan before the keynote</figcaption></figure></div>



<p>It&#8217;s the second main-session day of the Summit for the Professional Association of SQL Server. I had a great breakfast this morning with Brent Ozar, along with Nathan and James from my first timer group. If you attend Summit for the first time in the future, this is a great program and you should join up.</p>



<p>I&#8217;m jazzed to follow the keynote this morning.</p>



<p>Like <a href="https://littlekendra.com/2018/11/07/pass-summit-2018-day-1-keynote-announcements/">yesterday</a>, I&#8217;m going to capture the highlights into a slide deck and publish them below. Let&#8217;s do this!</p>



<h2>Highlights&#8230; and lowlights</h2>



<p>So&#8230; I didn&#8217;t love it today. I have some comments in the slides as to why. </p>



<p>As a presenter, and as someone who can influence event organizers, I have a lot to reflect on after today about how we can improve at inspiring people across cultures and genders in an international community. That&#8217;s the positive takeaway I have.</p>



<iframe loading="lazy" src="//www.slideshare.net/slideshow/embed_code/key/FJiPp3TF5n69FF" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/KendraLittle2/pass-summit-2018-keynote-day-2-comments-and-notes" title="PASS Summit 2018 Keynote Day 2 Comments and Notes" target="_blank">PASS Summit 2018 Keynote Day 2 Comments and Notes</a> </strong> from <strong><a href="https://www.slideshare.net/KendraLittle2" target="_blank">Kendra Little</a></strong> </div>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/08/pass-summit-2018-keynote-day-2-commentary/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6205</post-id>	</item>
		<item>
		<title>PASS Summit 2018 &#8211; Day 1 Keynote Announcements</title>
		<link>https://littlekendra.com/2018/11/07/pass-summit-2018-day-1-keynote-announcements/</link>
					<comments>https://littlekendra.com/2018/11/07/pass-summit-2018-day-1-keynote-announcements/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 07 Nov 2018 18:09:02 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6199</guid>

					<description><![CDATA[Good morning from Seattle, at the Summit for the Professional Association of SQL Server. I&#8217;m lucky enough to be sitting at the blogger table this morning, watching the keynote of announcements. I&#8217;m following along with the keynote and making notes on slides &#8212; and I&#8217;ll share those slides with you below. Don&#8217;t feel like reading...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="300" height="225" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-Bob-and-Brent-at-the-Blogger-Table.jpg?resize=300%2C225&#038;ssl=1" alt="" class="wp-image-6200" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-Bob-and-Brent-at-the-Blogger-Table.jpg?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-Bob-and-Brent-at-the-Blogger-Table.jpg?resize=1024%2C769&amp;ssl=1 1024w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-Bob-and-Brent-at-the-Blogger-Table.jpg?resize=768%2C577&amp;ssl=1 768w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-Bob-and-Brent-at-the-Blogger-Table.jpg?resize=560%2C421&amp;ssl=1 560w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Kendra-Bob-and-Brent-at-the-Blogger-Table.jpg?w=2400&amp;ssl=1 2400w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /><figcaption>Kendra at the blogger table with Bob Pusateri and Brent Ozar</figcaption></figure></div>



<p>Good morning from Seattle, at the Summit for the Professional Association of SQL Server.</p>



<p>I&#8217;m lucky enough to be sitting at the blogger table this morning, watching the keynote of announcements.</p>



<p>I&#8217;m following along with the keynote and making notes on slides &#8212; and I&#8217;ll share those slides with you below.</p>



<h2>Don&#8217;t feel like reading or rewatching the presentation? </h2>



<p>Join me on Tuesday, Nov 20th, with Grant Fritchey and Steve Jones in a webcast to sum up everything we learned at PASS Summit!</p>



<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-red-background-color" href="https://register.gotowebinar.com/register/4225546725293674755?source=KB">Register</a></div>



<h2>Keynote summary in slides</h2>



<iframe loading="lazy" src="//www.slideshare.net/slideshow/embed_code/key/y76UMzJfa748iy" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen=""> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/KendraLittle2/sql-pass-summit-2018" title="SQL PASS Summit 2018" target="_blank">SQL PASS Summit 2018</a> </strong> from <strong><a href="https://www.slideshare.net/KendraLittle2" target="_blank">KendraLittle2</a></strong> </div>



<h2>Text from the slides</h2>



<p><br>PASSION award winner: Michael Johnson<br></p>



<h3>Rohan Kumar</h3>



<ul><li>Hybrid cloud is the true enabler for digital transformation</li><li>AI is helping MS customers <ul><li>Understand their customers and better meet their needs</li></ul></li><li><ul><li>Improve their operations</li></ul></li><li>Critical to build training model on data that spans the hybrid estate</li></ul>



<ul><li>CTP 2.1 has been released<ul><li>Monthly releasesUsing Azure to get feedback on a constant basisRequest for engagement from you</li></ul></li></ul>



<h3>Conor Cunningham and Bob Ward</h3>



<ul><li>Demo: Removing page latch waits in tempdb</li><li>Behind the scenes, it’s using Hekaton in system tables in tempdb to speed this up</li><li>Not yet in preview</li><li>Will be in SQL Server 2019</li></ul>



<h3>Asad and Nellie </h3>



<ul><li>Demonstrating Azure Data Studio and Data Clusters</li><li>Use Python and Notebooks</li><li>Can query HDFS using native features in SQL Server engine to read that data<br></li><li>Access multiple data sources through SQL Server</li></ul>



<h3>More from Rohan Kumar</h3>



<ul><li>Azure Database Migration Service</li><li>Near zero downtime</li><li>Migrate at scale</li><li>Optimize IT Infrastructure</li><li>Azure SQL Database – 5 million active at any give time, a pedabyte of telemetery data every day</li><li>Microsoft is using machine learning against the data</li><li>Managed Instances</li><li>Big push to get customers here</li><li>General Availability of Business Critical SKU starting December 1</li><li>Azure SQL Database Hyperscale</li><li>4 TB limit on initial implementation</li><li>Have been working on rearchitecting </li><li>Scales out storage over various nodes</li><li>Has abilities for fast point in time restore</li><li>Scale storage and compute independently</li><li>Accelerated DB Recovery &amp; Machine Learning Services</li><li>Azure SQL Database</li><li>Goal is to make sure that no matter what happens, recovery happens in “constant time”</li><li>Machine Learning workloads in Azure SQL Database – enables migration for these features</li></ul>



<h3>Lindsey Allen<br></h3>



<ul><li>We don’t have fancy machines</li><li>We have 2 socket machines</li><li>Most customers don’t like figuring out sharding with partitioning keys – whatever key you choose is wrong</li><li>This is going to happen automatically behind the scenes</li><li>Now they take snapshots and restore from those – not a size of data operation</li><li>Accelerated Database Recovery</li><li>How long will it take to restore?</li><li>Painful for customers</li><li>Painful in Azure as well</li><li>Can aggressively truncate the log – even in full recovery mode</li><li>https://docs.microsoft.com/en-us/azure/sql-database/sql-database-accelerated-database-recovery </li></ul>



<h3>Deborah Chen</h3>



<ul><li>Multi-Master Replication in CosmosDB</li><li>Azure Cosmos DB</li><li>Apps can read from any region and write to them as well</li><li>Drawing app</li><li>Data being replicated to Japan in almost real time</li><li>Go to instance in Japan and drawn, and it app</li></ul>



<h3>John Macintyre</h3>



<ul><li>SQL Data Warehouse competing</li><li>30% less expensive than Amazon Redshift</li><li>Fastest cloud DW based on benchmarks</li><li>Demo with 6 trillion rows of data</li><li>TPC-H Benchmark running</li><li>Processing over a trillion rows a second</li><li>Demo: prioritizing workloads in SQL Data Warehouse</li><li>Demonstration of queries being queued, waiting for system resources on a busy system</li><li>Connect to a dashboard using a special service account</li><li>That work gets prioritized and jumps the queue</li><li>Feature name: workload management</li></ul>



<h3>Ariel Pisetzky of Taboola</h3>



<ul><li>Azure Data Explorer</li><li>Used across Microsoft internally for several years to explore logs and do analysis</li><li>Ingest unstructured and semi-structured data</li><li>Not a lot of prep work to do quick queries</li><li>Demo: exploring data</li><li>Can query and show results in graphs or tables</li><li>Using the tool to report on the customer experience</li><li>“What is the 5% of the slowest recommendations we provide?”</li><li>•    Identify spikes where they are above 800 ms</li><li>•    Using queries to zoom in and identify who is impacted</li></ul>



<h3>Patrick LeBlanc</h3>



<ul><li>Dataflows</li><li>Point Power BI to any data lake store</li><li>It will figure out connectivity and transformations for the scenario</li><li>Big customer request</li><li>“Self-service for big data” stored in the data lake</li><li>SSRS Reports in Power BI</li><li>Reporting Services – things went quiet for a long time</li><li>BUT NOW WE HAVE MORE</li><li>Paginated reports in Power BI Service<br></li></ul>



<h3>Deepsha Menghani</h3>



<ul><li>Demo: Shell health &amp; safety portal</li><li>Predictive alert</li><li>Azure database notebook</li><li>Need to have data to feed and train – and you can’t just burn down a gas station – she checked</li><li>Can do a keyword centric search for images to feed into the model</li><li>Image classification – databricks lets you build on existing models</li><li>Live demo: image detection</li><li>Hold a cigarette in front of a camera</li><li>Image identified and detected</li><li>Notification suggesting stopping a pump<br></li></ul>



<h3>And we’re done! Goodbye from Rohan</h3>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/07/pass-summit-2018-day-1-keynote-announcements/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6199</post-id>	</item>
		<item>
		<title>Watch: The single question to predict success for DevOps (31 minutes)</title>
		<link>https://littlekendra.com/2018/11/02/watch-the-single-question-to-predict-success-for-devops-31-minutes/</link>
					<comments>https://littlekendra.com/2018/11/02/watch-the-single-question-to-predict-success-for-devops-31-minutes/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 02 Nov 2018 16:53:36 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6184</guid>

					<description><![CDATA[What if you could assess the performance level of your team by asking one simple question? In his recent webinar with Redgate, Gene Kim (@realgenekim) suggests that you can. In this 30 minute session, I discuss three insights from the recent &#8216;Gene Kim joins Redgate to discuss The 2018 Accelerate State of DevOps Report&#8217; webinar...]]></description>
										<content:encoded><![CDATA[
<figure><iframe loading="lazy" src="https://www.youtube.com/embed/l5fN0IKXFCY" width="800" height="450"></iframe></figure>



<p>What if you could assess the performance level of your team by asking one simple question? In his recent webinar with <a href="https://www.red-gate.com/" target="_blank" rel="noreferrer noopener">Redgate</a>, Gene Kim (<a href="https://twitter.com/RealGeneKim" target="_blank" rel="noreferrer noopener">@realgenekim</a>) suggests that you can. </p>



<p>In this 30 minute session, I discuss three insights from the recent &#8216;Gene Kim joins Redgate to discuss The 2018 Accelerate State of DevOps Report&#8217; webinar (<a href="https://www.youtube.com/watch?v=is43drdJSXo" target="_blank" rel="noreferrer noopener">recording</a>). I also dig into why these insights make a compelling argument for modifying your organization&#8217;s change control process. </p>



<h2>Key Insights from Gene Kim that I discuss in the session</h2>



<ol><li>The question, &#8220;To what degree do we fear doing deployments?&#8221; on a scale of 1 to 7, is a simple way to measure whether or not your company is a high performer </li><li>Although database operations has been a high-spend area for a long time, it has been comparatively impoverished in most organizations when it comes to tooling and automation, as compared to other areas of Software Development </li><li>Becoming a high performer at DevOps includes completely rethinking how change control is managed for your IT organization</li></ol>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/02/watch-the-single-question-to-predict-success-for-devops-31-minutes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6184</post-id>	</item>
		<item>
		<title>Register for my upcoming session on digital transformation</title>
		<link>https://littlekendra.com/2018/11/02/register-for-my-upcoming-session-on-digital-transformation/</link>
					<comments>https://littlekendra.com/2018/11/02/register-for-my-upcoming-session-on-digital-transformation/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 02 Nov 2018 16:11:12 +0000</pubDate>
				<category><![CDATA[Course Announcements]]></category>
		<guid isPermaLink="false">https://sqlworkbooks.com/?p=71255</guid>

					<description><![CDATA[I&#8217;m excited to have a session accepted to GroupBy, a free online conference targeting the Microsoft data platform community. The conference is sponsored by Brent Ozar Unlimited, and sessions are chosen by community votes.  My session will be given on Fri, Dec 21, along with five other terrific looking sessions. You should  register for GroupBy here. About...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright"><img loading="lazy" width="560" height="315" src="https://i0.wp.com/sqlworkbooks.com/wp-content/uploads/2018/11/Digital-Transformation-1.jpg?resize=560%2C315&#038;ssl=1" alt="" class="wp-image-71257" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Digital-Transformation-1.jpg?w=560&amp;ssl=1 560w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Digital-Transformation-1.jpg?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/11/Digital-Transformation-1.jpg?resize=100%2C56&amp;ssl=1 100w" sizes="(max-width: 560px) 100vw, 560px" data-recalc-dims="1" /></figure></div>



<p>I&#8217;m excited to have a session accepted to <a href="https://groupby.org/">GroupBy</a>, a free online conference targeting the Microsoft data platform community. The conference is sponsored by <a href="https://www.brentozar.com/" target="_blank" rel="noreferrer noopener">Brent Ozar Unlimited</a>, and sessions are chosen by community votes. </p>



<p>My session will be given on Fri, Dec 21, along with five other terrific looking sessions. You should  <a href="https://register.gotowebinar.com/register/7245403788522473995" target="_blank" rel="noreferrer noopener">register for GroupBy</a> here.</p>



<h2>About my session</h2>



<p>My session is called <strong>&#8220;What ‘Digital Transformation’ means, and how you can use it to advance your career (without being a robot).&#8221;</strong> Here&#8217;s the abstract:</p>



<blockquote class="wp-block-quote"><p>Whether you love or hate buzzwords, the big ones signify critical cultural changes. In this session, Kendra Little will explain what executives mean when they describe a ‘digital transformation’, why this transformation is happening across all industries, and how understanding this gives developers and database administrators an advantage in building their careers. </p><p>You will learn what motivates CEOs to modify their business models in a digital transformation, and patterns and anti-patterns of companies that have attempted these transformations – with different results. </p><p>You’ll leave the session with an understanding of the core ideas and philosophies behind digital transformation that will help you prioritize what to learn, guide your interactions at work, and strategize your career path.</p><cite><a href="https://groupby.org/conference-session-abstracts/what-digital-transformation-means-and-how-you-can-use-it-to-advance-your-career/">Group By session abstract</a></cite></blockquote>



<h2>I wasn&#8217;t sure that this session would get votes</h2>



<p>I&#8217;m particularly excited that the community of voters saw value in this topic because I haven&#8217;t seen any talks on this topic before in the data platform community. </p>



<p>While we hear the phrase &#8216;digital transformation&#8217; in conference keynotes frequently these days, I think many technologists don&#8217;t think much about what it means. Or worse, assume it doesn&#8217;t mean <em>anything</em>. </p>



<h2>&#8216;Digital transformation&#8217; is meaningful, and is absolutely worth understanding</h2>



<p>For the last several months, I have been researching what worries and inspires CEOs and CIOs. I was surprised to find a large body of studies and predictions of massive trends in “digital transformation” across all industries. </p>



<p>What I once thought was “just a buzzword” is a shorthand that executives use to represent major changes in business models. It&#8217;s incredibly useful for practitioners, team leads, and managers to understand what the goals of a digital transformation are and how success is measured. This understanding helps you communicate better with executives, align your team&#8217;s work with business strategies, and ask for the right resources and headcount to execute on critical tasks for your organization.</p>



<p>I hope you join me in December at GroupBy!</p>



<div class="wp-block-button aligncenter"><a class="wp-block-button__link" href="https://register.gotowebinar.com/register/7245403788522473995">Register for GroupBy</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/11/02/register-for-my-upcoming-session-on-digital-transformation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71255</post-id>	</item>
		<item>
		<title>Interviewing for your first tech job &#8211; slides</title>
		<link>https://littlekendra.com/2018/10/08/interviewing-for-your-first-tech-job-slides/</link>
					<comments>https://littlekendra.com/2018/10/08/interviewing-for-your-first-tech-job-slides/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 08 Oct 2018 12:23:01 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6177</guid>

					<description><![CDATA[I was lucky to get an opportunity to present a session to some college students at Seminole State College in Florida last week. I was in town for SQL Saturday Orlando&#8211; a fantastic event on its own. The organizers run a simultaneous seminar for students at the college studying software development and IT topics, and...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/10/interviewing-for-your-first-tech-job.png?resize=217%2C206&#038;ssl=1" alt="" class="wp-image-6178" width="217" height="206" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/10/interviewing-for-your-first-tech-job.png?w=434&amp;ssl=1 434w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/10/interviewing-for-your-first-tech-job.png?resize=300%2C285&amp;ssl=1 300w" sizes="(max-width: 217px) 100vw, 217px" data-recalc-dims="1" /></figure></div>



<p>I was lucky to get an opportunity to present a session to some college students at Seminole State College in Florida last week. I was in town for SQL Saturday Orlando&#8211; a fantastic event on its own. The organizers run a simultaneous seminar for students at the college studying software development and IT topics, and it&#8217;s an opportunity where they can hear from professionals in IT professions. I gave a session on interviewing best practices.</p>



<p>The students were a terrific audience, and I really enjoyed speaking. The slides I shared that day are here:</p>



<div class="wp-block-file"><a href="https://littlekendra.com/wp-content/uploads/2018/10/Interviewing-for-your-first-tech-job.pdf">Interviewing for your first tech job</a><a href="https://littlekendra.com/wp-content/uploads/2018/10/Interviewing-for-your-first-tech-job.pdf" class="wp-block-file__button" download="Interviewing for your first tech job">Download</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/10/08/interviewing-for-your-first-tech-job-slides/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6177</post-id>	</item>
		<item>
		<title>DevOps Terms &#8211; and Why They Matter to Database Specialists</title>
		<link>https://littlekendra.com/2018/10/04/devops-terms-and-why-they-matter-to-database-specialists/</link>
					<comments>https://littlekendra.com/2018/10/04/devops-terms-and-why-they-matter-to-database-specialists/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 04 Oct 2018 20:25:20 +0000</pubDate>
				<category><![CDATA[Dear SQL DBA]]></category>
		<guid isPermaLink="false">https://sqlworkbooks.com/?p=71171</guid>

					<description><![CDATA[In this 20 minute session, I define scrum, continuous deployment, test driven development, DevOps, and related concepts. I close with a quick discussion of why Database Administrators and Developers should care about DevOps. Prefer to listen on the go? Subscribe on iTunes, listen on Google Play, or plug this URL into your favorite podcasting app: http://dearsqldba.libsyn.com/rss# If you...]]></description>
										<content:encoded><![CDATA[
<p>In this 20 minute session, I define scrum, continuous deployment, test driven development, DevOps, and related concepts. I close with a quick discussion of why Database Administrators and Developers should care about DevOps.</p>



<p>Prefer to listen on the go? <a href="https://itunes.apple.com/us/podcast/dear-sql-dba/id1117507864" target="_blank" rel="noreferrer noopener">Subscribe on iTunes</a>, <a href="https://goo.gl/app/playmusic?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;link=https://play.google.com/music/m/Ivy7ctr66hgx4jfwi7tsasixheu?t%3DDear_SQL_DBA" target="_blank" rel="noreferrer noopener">listen on Google Play</a>, or plug this URL into your favorite podcasting app: <a href="http://dearsqldba.libsyn.com/rss" target="_blank" rel="noreferrer noopener">http://dearsqldba.libsyn.com/rss#</a></p>



<p>If you enjoy Dear SQL DBA, reviews  <a href="https://itunes.apple.com/us/podcast/dear-sql-dba/id1117507864" target="_blank" rel="noreferrer noopener">on iTunes</a> help me out a ton.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-has-aspect-ratio wp-embed-aspect-16-9"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="DevOps Terms - and Why They Matter to Database Specialists (Dear SQL DBA Episode 65)" width="640" height="360" src="https://www.youtube.com/embed/sfj-_Astg9Q?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2>Slides from the presentation</h2>



<iframe loading="lazy" src="https://docs.google.com/presentation/d/e/2PACX-1vRyR8MjYirE8UthDCLYngDLr_lpEo60cXSnatjrrnYRgpm_tIYE52ZR2RjaIg3KB8bx4HAGJwmIlrtA/embed?start=false&#038;loop=false&#038;delayms=3000" frameborder="0" width="960" height="569" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/10/04/devops-terms-and-why-they-matter-to-database-specialists/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71171</post-id>	</item>
		<item>
		<title>SQL Change Automation, Visual Studio, and the &#8220;Unknown SQL Server Platform&#8221; error</title>
		<link>https://littlekendra.com/2018/10/03/sql-change-automation-visual-studio-and-the-unknown-sql-server-platform-error/</link>
					<comments>https://littlekendra.com/2018/10/03/sql-change-automation-visual-studio-and-the-unknown-sql-server-platform-error/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 03 Oct 2018 15:04:29 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6158</guid>

					<description><![CDATA[I recently set up Redgate&#8217;s SQL Change Automation in Visual Studio 2017, and I ran into a confusing error when I started trying to use it. For any other folks out there searching on &#8220;Unknown SQL Server Platform,&#8221; here&#8217;s how I got past it. Spoiler: Visual Studio suggested updating Microsoft&#8217;s SQL Server Data Tools, which...]]></description>
										<content:encoded><![CDATA[
<p>I recently set up Redgate&#8217;s <a href="https://www.red-gate.com/products/sql-development/sql-change-automation/index" target="_blank" rel="noopener">SQL Change Automation</a> in Visual Studio 2017, and I ran into a confusing error when I started trying to use it. For any other folks out there searching on &#8220;Unknown SQL Server Platform,&#8221; here&#8217;s how I got past it.</p>



<p>Spoiler: Visual Studio suggested updating Microsoft&#8217;s SQL Server Data Tools, which failed for me and wasted a lot of time. Updating Visual Studio <em>did</em> fix my issue.</p>



<h2>The basics on my setup</h2>



<p>When I installed Visual Studio 2017, I selected the &#8216;Data storage and processing&#8217; workload, which contains SQL Server Data tools as well as some of the Redgate tools:</p>



<figure class="wp-block-image is-resized"><a ref="magnificPopup" href="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-2017-workloads-installation.png?ssl=1"><img loading="lazy" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-2017-workloads-installation.png?resize=940%2C373&#038;ssl=1" alt="Image of visual studio 2017 workload options at install time" class="wp-image-6159" width="940" height="373" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-2017-workloads-installation.png?w=1253&amp;ssl=1 1253w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-2017-workloads-installation.png?resize=300%2C119&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-2017-workloads-installation.png?resize=1024%2C406&amp;ssl=1 1024w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-2017-workloads-installation.png?resize=768%2C305&amp;ssl=1 768w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-2017-workloads-installation.png?resize=560%2C222&amp;ssl=1 560w" sizes="(max-width: 940px) 100vw, 940px" data-recalc-dims="1" /></a><figcaption>Visual Studio 2017 workloads</figcaption></figure>



<p>I used the default checkboxes on the right there, installing everything except F# desktop language support.</p>



<h2>First, I created a new project</h2>



<p>In the &#8216;SQL Change Automation&#8217; window, I clicked &#8216;Create Project&#8217;, selected &#8216;SQL Change Automation Project&#8217; and gave it a name, and click OK. This launched the wizard to set up the project.</p>



<figure class="wp-block-image"><img loading="lazy" width="951" height="618" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/get-started.png?resize=951%2C618&#038;ssl=1" alt="" class="wp-image-6160" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/get-started.png?w=951&amp;ssl=1 951w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/get-started.png?resize=300%2C195&amp;ssl=1 300w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/get-started.png?resize=768%2C499&amp;ssl=1 768w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/get-started.png?resize=560%2C364&amp;ssl=1 560w" sizes="(max-width: 951px) 100vw, 951px" data-recalc-dims="1" /></figure>



<p>I clicked &#8216;Get Started&#8217;, and proceeded to the step to configure my connections.</p>



<p>At this point, I was prompted to specify my development database and deployment target. I chose two databases on my local SQL Server 2017 instance.</p>



<figure class="wp-block-image"><img loading="lazy" width="950" height="618" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/database-selection-sql-change-automation-setup.png?resize=950%2C618&#038;ssl=1" alt="" class="wp-image-6161" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/database-selection-sql-change-automation-setup.png?w=950&amp;ssl=1 950w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/database-selection-sql-change-automation-setup.png?resize=300%2C195&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/database-selection-sql-change-automation-setup.png?resize=768%2C500&amp;ssl=1 768w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/database-selection-sql-change-automation-setup.png?resize=560%2C364&amp;ssl=1 560w" sizes="(max-width: 950px) 100vw, 950px" data-recalc-dims="1" /><figcaption>Configured instances<br/></figcaption></figure>



<p>I clicked &#8216;Next&#8217;, and that&#8217;s where things got wacky.</p>



<h2>Unknown SQL Server Platform &#8211; The target platform for this project is not supported by the installed SQL Server tools.</h2>



<p>When I proceeded past this point and had SQL Change Automation create my baseline, it stopped pretty quickly and I saw a message&#8230;</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" width="432" height="194" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Unknown-SQL-Server-Platform-Target-Platform-Not-Supported.png?resize=432%2C194&#038;ssl=1" alt="" class="wp-image-6162" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Unknown-SQL-Server-Platform-Target-Platform-Not-Supported.png?w=432&amp;ssl=1 432w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Unknown-SQL-Server-Platform-Target-Platform-Not-Supported.png?resize=300%2C135&amp;ssl=1 300w" sizes="(max-width: 432px) 100vw, 432px" data-recalc-dims="1" /><figcaption>Wat???</figcaption></figure></div>



<p>When I clicked on the blue link, I was taken to a download for the most recent version of Microsoft&#8217;s <a href="https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017" target="_blank">SQL Server Data Tools</a>.</p>



<p>After I carefully read the page and made sure I didn&#8217;t have Visual Studio extensions installed that would cause a problem, I attempted to update the SQL Server Data Tools and found that installation ran for 7-10 minutes, then failed with an &#8220;incorrect function&#8221; error.</p>



<p>I restarted Windows. I tried updating again. Same failure.</p>



<h2>What fixed this for me: updating Visual Studio</h2>



<p>I went into the &#8216;Help&#8217; menu in Visual Studio to capture the version numbers of my extensions (that&#8217;s under Help -> About Microsoft Visual Studio), and that&#8217;s when I realized: I should probably update Visual Studio before I wasted any more time chasing this error.</p>



<figure class="wp-block-image"><img loading="lazy" width="375" height="247" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-check-for-updates.png?resize=375%2C247&#038;ssl=1" alt="" class="wp-image-6163" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-check-for-updates.png?w=375&amp;ssl=1 375w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/visual-studio-check-for-updates.png?resize=300%2C198&amp;ssl=1 300w" sizes="(max-width: 375px) 100vw, 375px" data-recalc-dims="1" /><figcaption>Updates, please!</figcaption></figure>



<p>After I opened &#8220;Check for Updates,&#8221; I saw that there was a bunch of stuff that Visual Studio wanted to fix. I told it to apply those changes (it really wasn&#8217;t clear what the changes were, I just let it run), and then&#8230;.</p>



<h2>Everything worked after that</h2>



<p>Yep, everything was fine. I still had the exact same version of SQL Server Data Tools as before (15.1.61808.07020, for the record), but Visual Studio was now happy to use it, for whatever reason.</p>



<p>I was able to complete my baseline and get on with my day.</p>



<h2>I should really know better&#8230;</h2>



<p>Microsoft has changed a lot in the last few years, but one truth that remains eternal is &#8220;always check for patches before you start to use a fresh install.&#8221;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/10/03/sql-change-automation-visual-studio-and-the-unknown-sql-server-platform-error/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6158</post-id>	</item>
		<item>
		<title>I helped write a book! No, not THOSE books&#8230;</title>
		<link>https://littlekendra.com/2018/10/01/i-helped-write-a-book-no-not-those-books/</link>
					<comments>https://littlekendra.com/2018/10/01/i-helped-write-a-book-no-not-those-books/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 01 Oct 2018 15:00:15 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6167</guid>

					<description><![CDATA[Every now and again, someone asks if I write romance novels. Why? Well, let&#8217;s ask Bing who Kendra Little is&#8230;. To clarify,  I am not married, I have dogs instead of children, and I prefer romances about strong women who bring SQL Servers to their knees. I also don&#8217;t think it&#8217;s possible to drink too...]]></description>
										<content:encoded><![CDATA[
<p>Every now and again, someone asks if I write romance novels.</p>



<p>Why? Well, let&#8217;s ask Bing who Kendra Little is&#8230;.</p>



<figure class="wp-block-image"><img loading="lazy" width="508" height="601" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/the-many-faces-of-kendra-little.png?resize=508%2C601&#038;ssl=1" alt="" class="wp-image-6169" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/the-many-faces-of-kendra-little.png?w=508&amp;ssl=1 508w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/the-many-faces-of-kendra-little.png?resize=254%2C300&amp;ssl=1 254w" sizes="(max-width: 508px) 100vw, 508px" data-recalc-dims="1" /></figure>



<p>To clarify,  I am not married, I have dogs instead of children, and I prefer romances about strong women who bring SQL Servers to their knees.</p>



<p>I also don&#8217;t think it&#8217;s possible to drink too much coffee.</p>



<p>Most of those pictures are of me, but a careful reader will note that the biography at the top references a domain name that, sadly, dear reader, I do <em>not</em> own. Someone out there named Kendra Little gets sweet royalties from her contemporary romance novels, but they don&#8217;t come to this address.</p>



<h2>I helped Malathi Mahadevan write a different kind of book</h2>



<p>&#8216;Data Professionals at Work&#8217; is a new book by <a href="https://twitter.com/sqlmal?lang=en" target="_blank">Malathi Mahadevan</a>. Mala went out and interviewed loads of data professionals, and talked with us about topics like:</p>



<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Data-Professionals-at-Work-Book.jpg?resize=265%2C166&#038;ssl=1" alt="" class="wp-image-6170" width="265" height="166" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Data-Professionals-at-Work-Book.jpg?w=529&amp;ssl=1 529w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Data-Professionals-at-Work-Book.jpg?resize=300%2C188&amp;ssl=1 300w" sizes="(max-width: 265px) 100vw, 265px" data-recalc-dims="1" /></figure></div>



<ul><li>How to stand out as a data professional</li><li>How to focus on the right things and evolve your career in a fast-changing world</li><li>How to understand current trends and best practices</li></ul>



<p>Mala interviewed an amazing group of people, including  <br/>Mindy Curnutt, Julie Smith, Kenneth Fisher, Andy Leonard, Jes Borland, Kevin Feasel, Ginger Grant, Vicky Harp, Kendra Little (THIS Kendra, right here), Jason Brimhall, Tim Costello, Andy Mallon, Steph Locke, Jonathan Stewart, Joseph Sack, John Q. Martin, John Morehouse, Kathi Kellenberger, Argenis Fernandez, Kirsten Benzel, Tracy Boggiano, Dave Walden, Matt Gordon, Jimmy May, Drew Furgiuele, Marlon Ribunal, and Joseph Fleming.</p>



<p>Here is a twitter list with all those awesome folks: <a href="https://twitter.com/Kendra_Little/lists/data-pros-at-work/members" target="_blank">https://twitter.com/Kendra_Little/lists/data-pros-at-work/members</a></p>



<h2>Here&#8217;s where you can buy the book</h2>



<p>Data Professionals at work is <em>way better than a bodice-ripper</em> and is currently <a href="http://a.co/d/9OqEMbS" target="_blank" rel="noopener">available for pre-order at Amazon.com in softcover</a>.</p>



<p>You can also compare prices on the <a href="https://www.apress.com/us/book/9781484239667" target="_blank">Apress site here</a>.</p>



<p>I can&#8217;t promise that my chapter is steamy, but I hope that you enjoy it.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/10/01/i-helped-write-a-book-no-not-those-books/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6167</post-id>	</item>
		<item>
		<title>Help me present at GroupBy: review my abstract</title>
		<link>https://littlekendra.com/2018/09/27/help-me-present-at-groupby-review-my-abstract/</link>
					<comments>https://littlekendra.com/2018/09/27/help-me-present-at-groupby-review-my-abstract/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Thu, 27 Sep 2018 14:52:37 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6150</guid>

					<description><![CDATA[I&#8217;ve submitted a session proposal to the free, online GroupBy conference. Voting will open for sessions soon, but before then, you can help me out by reading my abstract. Is it a session you&#8217;d like to see? Got any constructive criticism that you think would make the session or abstract better? Let me know in...]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><img loading="lazy" width="560" height="315" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Digital-Transformation.jpg?resize=560%2C315&#038;ssl=1" alt="" class="wp-image-6151" srcset="https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Digital-Transformation.jpg?w=560&amp;ssl=1 560w, https://i0.wp.com/littlekendra.com/wp-content/uploads/2018/09/Digital-Transformation.jpg?resize=300%2C169&amp;ssl=1 300w" sizes="(max-width: 560px) 100vw, 560px" data-recalc-dims="1" /></figure>



<p>I&#8217;ve submitted a session proposal to the free, online GroupBy conference. Voting will open for sessions soon, but before then, you can help me out by reading my abstract. Is it a session you&#8217;d like to see? </p>



<p>Got any constructive criticism that you think would make the session or abstract better? Let me know in the comments over on the abstract for &#8220;<a href="https://groupby.org/conference-session-abstracts/what-digital-transformation-means-and-how-you-can-use-it-to-advance-your-career/">What &#8216;Digital Transformation&#8217; Means, and How You Can Use It to Advance Your Career (Without Being a Robot)</a>&#8220;</p>



<div class="wp-block-button"><a class="wp-block-button__link" href="https://groupby.org/conference-session-abstracts/what-digital-transformation-means-and-how-you-can-use-it-to-advance-your-career/">Review me!</a></div>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/09/27/help-me-present-at-groupby-review-my-abstract/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6150</post-id>	</item>
		<item>
		<title>I&#8217;m Giving Four Free Sessions in October!</title>
		<link>https://littlekendra.com/2018/09/26/new-live-sessions-on-devops/</link>
					<comments>https://littlekendra.com/2018/09/26/new-live-sessions-on-devops/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 26 Sep 2018 15:05:34 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6146</guid>

					<description><![CDATA[I&#8217;ve got FOUR sessions coming up in October.  These sessions will each be 30 minutes. Redgate Sessions Wed, Oct 3, 9AM PT / 12PM ET:  How to Lead DBAs to Embrace DevOps, Rather than Fear Change Tues Oct 30, 9AM PT / 12PM ET: The Single Question to Predict Success for DevOps, and What It...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="alignright is-resized"><img loading="lazy" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/New-Sessions.jpg?resize=280%2C158&#038;ssl=1" alt="" class="wp-image-6154" width="280" height="158" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/New-Sessions.jpg?w=560&amp;ssl=1 560w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/09/New-Sessions.jpg?resize=300%2C169&amp;ssl=1 300w" sizes="(max-width: 280px) 100vw, 280px" data-recalc-dims="1" /></figure></div>



<p>I&#8217;ve got FOUR sessions coming up in October.  These sessions will each be 30 minutes.</p>



<h2>Redgate Sessions</h2>



<p>Wed, Oct 3, 9AM PT / 12PM ET:  <br/><strong>How to Lead DBAs to Embrace DevOps, Rather than Fear Change</strong></p>



<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-red-background-color" href="https://attendee.gotowebinar.com/register/1425832778987342348?source=KB" target="_blank">Register at GoToWebinar here</a></div>



<p>Tues Oct 30, 9AM PT / 12PM ET: <br/><strong>The Single Question to Predict Success for DevOps, and What It Means for Change Control</strong></p>



<div class="wp-block-button"><a class="wp-block-button__link has-text-color has-very-light-gray-color has-background has-vivid-red-background-color" href="https://register.gotowebinar.com/register/8425903244039665677?source=KB" target="_blank">Register at GoToWebinar here</a></div>



<h2>Dear SQL DBA Sessions</h2>



<p>Tues Oct 2, 9AM PT / 12PM ET: <br/><strong>DevOps Terms and Why they Matter for Database Specialists</strong></p>



<p>Tues Oct 23, 9AM PT/ 12PM ET:<br/><strong>Book Review, &#8220;Accelerate: The Science of Lean Software and DevOps&#8221;</strong></p>



<p></p>



<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color" href="https://sqlworkbooks.com/webcasts/" target="_blank">Register at SQLWorkbooks here</a></div>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/09/26/new-live-sessions-on-devops/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6146</post-id>	</item>
		<item>
		<title>Why I Love DML Triggers in SQL Server</title>
		<link>https://littlekendra.com/2018/09/11/why-i-love-dml-triggers-in-sql-server/</link>
					<comments>https://littlekendra.com/2018/09/11/why-i-love-dml-triggers-in-sql-server/#comments</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Tue, 11 Sep 2018 08:00:19 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6133</guid>

					<description><![CDATA[It&#8217;s TSQL Tuesday today! If you&#8217;re not familiar, TSQL Tuesday is a monthly blogging event where a Microsoft Data Platform community member chooses a writing prompt. This is a great thing if you&#8217;re interested in starting a technical blog and wonder, &#8220;What would I write about?&#8221; It&#8217;s also great if, like me, you occasionally want a...]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" width="560" height="315" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/triggers.jpg?resize=560%2C315&#038;ssl=1" alt="" class="wp-image-6134" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/triggers.jpg?w=560&amp;ssl=1 560w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/09/triggers.jpg?resize=300%2C169&amp;ssl=1 300w" sizes="(max-width: 560px) 100vw, 560px" data-recalc-dims="1" /></figure></div>



<p>It&#8217;s <a href="https://voiceofthedba.com/2018/09/03/t-sql-tuesday-106-trigger-headaches-or-happiness/" target="_blank" rel="noopener">TSQL Tuesday today!</a> If you&#8217;re not familiar, TSQL Tuesday is a monthly blogging event where a Microsoft Data Platform community member chooses a writing prompt. This is a great thing if you&#8217;re interested in starting a technical blog and wonder, &#8220;What would I write about?&#8221; It&#8217;s also great if, like me, you occasionally want a little outside inspiration to shake things up.</p>



<p>This month&#8217;s topic is from Steve Jones: we&#8217;re <a href="https://voiceofthedba.com/2018/09/03/t-sql-tuesday-106-trigger-headaches-or-happiness/" target="_blank" rel="noopener">invited to write about an experience that we&#8217;ve had with triggers</a>.</p>



<h2>My first encounter with triggers was overwhelmingly positive</h2>



<p>When I first edged my way into a Junior DBA-ish role, I worked with a complex application with many large databases. Customers loaded and configured data into a (mostly) OLTP database, and then data was replicated to multiple other systems &#8212; in part to publish data to an adserving platform, in part to transform the data for reporting.</p>



<p>Triggers were used extensively in these downstream systems to detect changes. It went like this:</p>



<ul>
<li>Transactional replication publications were set up on the OLTP  (ish) database.</li>
<li>Transactional replication subscriptions were set up on each downstream server. A dedicated database was used for replication articles on each instance.</li>
<li>After replication was initialized, DML triggers were created on each article in the subscriber database. For each modification, the trigger would insert a narrow row into a &#8220;delta&#8221; table related to that article.</li>
<li>The &#8220;delta&#8221; tables were in their own schema, and contained row identifiers, timestamp columns, and custom indexes for processing. This enabled batches to be efficiently pulled from these tables for processing into the related system.</li>
<li>Cleanup processes periodically pulled processed rows out of the delta tables in the background (and indexes were designed to prevent the cleanup process from fighting with data processing jobs and inserts)</li>
</ul>



<p>This design worked very well, and was a very positive introduction to me for triggers&#8211; they worked exactly as they&#8217;d been designed, and were easy to understand and support. Making schema changes to the tables involved was rarely a problem, and we had established processes for modifying articles and re-initializing replication which worked very well.</p>



<h2>Why didn&#8217;t you use Change Tracking?</h2>



<p>The primary reason that triggers were chosen over Change Tracking was that Change Tracking didn&#8217;t exist &#8212; these tools were written and tuned well before that feature was released. </p>



<div class="wp-block-image"><figure class="alignright"><a href="https://voiceofthedba.com/2018/09/03/t-sql-tuesday-106-trigger-headaches-or-happiness/"><img loading="lazy" width="150" height="150" src="https://i0.wp.com/littlekendra.com/wp-content/uploads/2010/11/image1.jpg?resize=150%2C150&#038;ssl=1" alt="TSQL2SDAY #12!" class="wp-image-1109" data-recalc-dims="1"/></a><figcaption>Learn more about this TSQL Tuesday</figcaption></figure></div>



<p>Looking back, even if we had Change Tracking as an option, we benefited from the granular control we had over this custom system and the elegant simplicity of the implementation. The Change Tracking feature in SQL Server has remained somewhat of an &#8216;edge feature&#8217;, and people using it have had to deal with a variety of issues over time &#8211; a need to customize the indexes on the change tables, statistics estimate problems with change functions, and problems with cleanup. (I wrote about these <a href="https://www.brentozar.com/archive/2014/06/performance-tuning-sql-server-change-tracking/" target="_blank" rel="noopener">a while back over here</a>.)</p>



<p>I don&#8217;t mean to say that Change Tracking is bad, just that it&#8217;s not necessarily as &#8216;easy&#8217; a solution as you might assume from reading the documentation. You can&#8217;t simply set it up super fast and skip load testing, or assume that cleanup is going to work like a charm for every scenario &#8212; you need to really think about scaling it&#8230; kinda like you&#8217;d have to think about scaling it if you were writing your own custom application to handle this type of processing with &#8230; TRIGGERS! There are pros and cons to each approach.</p>



<p>And even today I wonder&#8230; what if we&#8217;d been able to get batch mode processing on those delta tables with a little careful custom coding? Hmm&#8230;..</p>



<h2>I still kinda love triggers</h2>





<p>A first impression goes along way, you know? </p>



<p>Sure, people can do terrible things with triggers. But when they&#8217;re used well, they can be simple, reliable, and incredibly useful.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/09/11/why-i-love-dml-triggers-in-sql-server/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6133</post-id>	</item>
		<item>
		<title>Watch My Keynote: Adapt and Thrive (25 minutes)</title>
		<link>https://littlekendra.com/2018/09/07/watch-my-keynote-adapt-and-thrive/</link>
					<comments>https://littlekendra.com/2018/09/07/watch-my-keynote-adapt-and-thrive/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Fri, 07 Sep 2018 14:13:39 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6122</guid>

					<description><![CDATA[Do you know where your career is going? Do you know what skills you need to be successful in the current climate? In this 25 minute keynote, I discuss the challenges and opportunities facing you as a data professional in this ever-changing landscape. You’ll also hear recommendations about which skills are needed to help you succeed...]]></description>
										<content:encoded><![CDATA[<p>Do you know where your career is going? Do you know what skills you need to be successful in the current climate?</p>
<p>In this 25 minute keynote, I discuss the challenges and opportunities facing you as a data professional in this ever-changing landscape. You’ll also hear recommendations about which skills are needed to help you succeed in your role and how you can in turn support your IT team and business’ needs.</p>
<p><em>Are you interested in in leadership topics in Database DevOps, or do you know someone who is? Get admission to Redgate&#8217;s SQL in the City Summits<a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/new-york" target="_blank" rel="noopener"> in NYC (Oct 12)</a> or <a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/chicago" target="_blank" rel="noopener">Chicago (Oct 26)</a> with code KendraLittle.  Get 50% off admission to<a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/london" target="_blank" rel="noopener"> London (Oct 18)</a> with code KendraL.</em></p>
<p><iframe loading="lazy" src="https://www.youtube.com/embed/xat_Je26qf0" width="800" height="450" frameborder="0"><span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start">﻿</span></iframe></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/09/07/watch-my-keynote-adapt-and-thrive/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6122</post-id>	</item>
		<item>
		<title>Calendar Reminders for SQL in the City Streamed Free Training Sessions</title>
		<link>https://littlekendra.com/2018/09/03/calendar-reminders-for-sql-in-the-city-streamed-free-training-sessions/</link>
					<comments>https://littlekendra.com/2018/09/03/calendar-reminders-for-sql-in-the-city-streamed-free-training-sessions/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Mon, 03 Sep 2018 14:00:04 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6116</guid>

					<description><![CDATA[SQL in the City Streamed is coming up this week! This is an awesome FREE online event, and it&#8217;s all about learning new things and getting inspired. Join us live, chat, and ask questions This event is streamed on YouTube. While the session is going, you can rewind up to three hours or so. But...]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><a href="https://www.red-gate.com/hub/events/sqlinthecity/"><img loading="lazy" width="700" height="400" src="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/08/SQL-IN-THE-CITY-STREAMED-1.png?resize=700%2C400&#038;ssl=1" alt="" class="wp-image-6118" srcset="https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/08/SQL-IN-THE-CITY-STREAMED-1.png?w=700&amp;ssl=1 700w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/08/SQL-IN-THE-CITY-STREAMED-1.png?resize=300%2C171&amp;ssl=1 300w, https://i2.wp.com/littlekendra.com/wp-content/uploads/2018/08/SQL-IN-THE-CITY-STREAMED-1.png?resize=560%2C320&amp;ssl=1 560w" sizes="(max-width: 700px) 100vw, 700px" data-recalc-dims="1" /></a></figure>



<p>SQL in the City Streamed is coming up this week! This is an awesome FREE online event, and it&#8217;s all about learning new things and getting inspired.</p>



<h2>Join us live, chat, and ask questions</h2>



<p>This event is streamed on YouTube. While the session is going, you can rewind up to three hours or so. But it&#8217;s the <strong>most</strong> fun to watch live whenever you can, and ask questions. </p>



<p>I&#8217;ll be presenting at the beginning and end of the event. When I&#8217;m not on screen, I&#8217;ll be tweeting with the<a href="https://twitter.com/hashtag/sqlinthecity" target="_blank" rel="noopener"> #sqlinthecity tag</a>. I&#8217;ll also be chatting in Slack about the current presentation, collecting your questions, and giving a little bit of the inside scoop on the event. </p>



<p>I&#8217;d love to have you join me.</p>



<h2>Not set up in Slack yet? No problem</h2>



<p>You can join the  SQL Community Slack for free anytime. <a href="https://dbatools.io/slack/" target="_blank" rel="noreferrer noopener">Join here: just request an invite and get set up.</a> Once you&#8217;re in, here&#8217;s a link to the <a href="https://sqlcommunity.slack.com/messages/C67N4A875" target="_blank" rel="noreferrer noopener">#redgate channel</a> where we&#8217;ll be chatting.</p>



<h2>Calendar reminders for each session</h2>



<p><strong>SQL in the City Streamed</strong> &#8211; September 5, 2018<br/><a href="https://www.red-gate.com/hub/events/sqlinthecity/index" target="_blank" rel="noreferrer noopener">Register here for the whole day</a>. The invites below do <em>not</em> register you, they simply put reminders on your calendar for the scheduled start times. Do check in on the day to see if we&#8217;re running on schedule as well &#8211; because life happens <img src="https://s.w.org/images/core/emoji/13.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<ul><li>7AM ET / 12PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-01-keynote-annabel-and-kendra.ics">Introduction and Keynote: Adapt and Thrive</a> &#8211; Annabel Bradford &amp; Kendra Little</li><li>7:35AM ET / 12:35PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-02-monitoring-azure-sql-db-grant.ics">Yes, You Should Monitor Azure SQL Database</a> &#8211; Grant Fritchey</li><li>8:25AM ET / 1:25PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-03-get-on-the-redgate-hub-chris-k-and-chris-u.ics">Wise Up and Get on the Redgate Hub</a> &#8211; Chris Kerswell and Chris Unwin</li><li>8:45AM ET / 1:45PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-04-azure-machine-learning-kathi.ics">Azure Machine Learning 101</a> &#8211; Kathi Kellenberger</li><li>9:30AM ET / 2:30PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-05-strategies-for-solving-compliance-steve-and-chris.ics">Strategies for Solving Compliance Challenges for the Technology Industry</a> &#8211; Steve Jones and Chris Unwin</li><li>10AM ET / 3PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-06-automating-db-deployments-with-microsoft-stack-rob.ics">Automating Database Deployments with the Microsoft Stack</a> &#8211;  Rob Richardson</li><li>11:05AM ET / 4:05PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-07-panel-discussion-skillsets-hosted-by-steve.ics">Panel Discussion Q&amp;A: Skillsets for a Successful Career</a> &#8211; Steve Jones, Grant Fritchey, Kathi Kellenberger, Rob Richardson</li><li>11:50AM ET / 4:50PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-08-the-latest-from-redgate-product-teams.ics">The Latest from Redgate&#8217;s Product Teams</a> &#8211; Redgate Product Teams</li><li>12:10PM ET / 5:10PM GMT &#8211; <a href="https://littlekendra.com/wp-content/uploads/2018/08/sitc-09-keynote-adapt-and-thrive-kendra.ics">Keynote Redux: Adapt and Thrive</a> &#8211; Kendra Little (a live repeat of the keynote for those joining from later time zones)<br/></li></ul>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/09/03/calendar-reminders-for-sql-in-the-city-streamed-free-training-sessions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6116</post-id>	</item>
		<item>
		<title>Employee Agreements &#038; Contracts: Best Practices (23 minute video)</title>
		<link>https://littlekendra.com/2018/08/29/employee-agreements-contracts-best-practices-23-minute-video/</link>
					<comments>https://littlekendra.com/2018/08/29/employee-agreements-contracts-best-practices-23-minute-video/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 29 Aug 2018 15:23:00 +0000</pubDate>
				<category><![CDATA[Dear SQL DBA]]></category>
		<guid isPermaLink="false">https://sqlworkbooks.com/?p=71012</guid>

					<description><![CDATA[So you&#8217;ve got an employee agreement in front of you: now what? In this  episode, I talk about practical steps you should take to make sure that you understand the terms of your contract, and how to potentially negotiate the terms. Listen on the go Subscribe on iTunes, listen on Google Play, or plug this URL into...]]></description>
										<content:encoded><![CDATA[
<p>So you&#8217;ve got an employee agreement in front of you: now what? In this  episode, I talk about practical steps you should take to make sure that you understand the terms of your contract, and how to potentially negotiate the terms.</p>



<h2>Listen on the go</h2>



<p><a href="https://itunes.apple.com/us/podcast/dear-sql-dba/id1117507864" target="_blank" rel="noreferrer noopener">Subscribe on iTunes</a>, <a href="https://goo.gl/app/playmusic?ibi=com.google.PlayMusic&amp;isi=691797987&amp;ius=googleplaymusic&amp;link=https://play.google.com/music/m/Ivy7ctr66hgx4jfwi7tsasixheu?t%3DDear_SQL_DBA" target="_blank" rel="noreferrer noopener">listen on Google Play</a>, or plug this URL into your favorite podcasting app: <a href="http://dearsqldba.libsyn.com/rss" target="_blank" rel="noreferrer noopener">http://dearsqldba.libsyn.com/rss#</a></p>



<h2>Video</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube">
<iframe loading="lazy" title="Employee Agreements &amp; Contracts - Best Practices (Dear SQL DBA Episode 64)" width="640" height="360" src="https://www.youtube.com/embed/b8yTjHvEi2g?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</figure>



<h2>Slides from the talk</h2>



<figure><iframe loading="lazy" src="https://docs.google.com/presentation/d/e/2PACX-1vSYJ8Gpkqio3BmHeNfvHVwevtVqJIzV9BbyYpXedt2k1z0BqJZOxtXHVqhwtUkw3ZpxNkppd_kHfnBk/embed?start=false&amp;loop=false&amp;delayms=3000" width="960" height="569" allowfullscreen="true"></iframe></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/08/29/employee-agreements-contracts-best-practices-23-minute-video/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71012</post-id>	</item>
		<item>
		<title>SQL in the City, Fall 2018 &#8211; Join Us!</title>
		<link>https://littlekendra.com/2018/08/22/sql-in-the-city-fall-2018-join-us/</link>
					<comments>https://littlekendra.com/2018/08/22/sql-in-the-city-fall-2018-join-us/#respond</comments>
		
		<dc:creator><![CDATA[Kendra Little]]></dc:creator>
		<pubDate>Wed, 22 Aug 2018 14:00:34 +0000</pubDate>
				<category><![CDATA[SQL Server Database Administration]]></category>
		<guid isPermaLink="false">https://littlekendra.com/?p=6089</guid>

					<description><![CDATA[SQL in the City is coming up, and it's a huge opportunity to learn. Register now to attend the free online streamed event, and join the Redgate team in London, Chicago, and New York.]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image"><a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/"><img loading="lazy" width="700" height="100" src="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/08/redgate-dancing-animals-2.png?resize=700%2C100&#038;ssl=1" alt="" class="wp-image-6098" srcset="https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/08/redgate-dancing-animals-2.png?w=700&amp;ssl=1 700w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/08/redgate-dancing-animals-2.png?resize=300%2C43&amp;ssl=1 300w, https://i1.wp.com/littlekendra.com/wp-content/uploads/2018/08/redgate-dancing-animals-2.png?resize=560%2C80&amp;ssl=1 560w" sizes="(max-width: 700px) 100vw, 700px" data-recalc-dims="1" /></a></figure>



<h2>Online (free!)</h2>



<ul><li><strong>SQL in the City Streamed</strong> – Sept 5, 7AM-12:40PM ET – <em>free</em> – <a href="https://www.red-gate.com/hub/events/sqlinthecity/index" target="_blank" rel="noreferrer noopener">Register</a><br/></li></ul>



<h2>In Person</h2>



<ul><li><strong>SQL in the City – New York</strong> – Oct 12 – <em>contact your Redgate rep</em><em> –</em> <a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/new-york" target="_blank" rel="noreferrer noopener">Register</a></li><li><strong>SQL in the City – London</strong> – Oct 18 – GBP £150 until Aug 31, then £200<em> –</em> <a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/london" target="_blank" rel="noreferrer noopener">Register</a></li><li><strong>SQL in the City – Chicago</strong> – Oct 26 – <em>contact your Redgate rep</em><em> –</em> <a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/chicago" target="_blank" rel="noreferrer noopener">Register</a></li></ul>



<h2>What will you learn?</h2>



<p>There&#8217;s a pretty sweet schedule for each event, featuring folks like <a href="https://twitter.com/gfritchey">Grant Fritchey</a>,<a href="https://twitter.com/way0utwest?lang=en"> Steve Jones</a>, <a href="https://twitter.com/auntkathi?lang=en">Kathi Kellenberger</a>, and <a href="https://twitter.com/bobwardms?lang=en">Bob Ward</a>. </p>



<p>I&#8217;ll be giving a keynote at the streamed edition of SQL in the City called, &#8216;Adapt and Thrive&#8217;:</p>



<blockquote class="wp-block-quote"><p>Do you know where your career is going? Do you know what skills you need to be successful in the current climate? This keynote will discuss the challenges, as well as the opportunities facing you as a data professional in this ever-changing landscape. You’ll also hear recommendations about which skills are needed to help you succeed in your role and how you can in turn support your IT team and business’ needs.</p></blockquote>



<p>There&#8217;s tons of technical content on the streamed event as well, including sessions on Azure SQL Database, Machine Learning, Deployment Automation, and more.</p>



<p>The live events have even more content &#8211; check out the <a href="https://www.red-gate.com/hub/events/redgate-events/sqlinthecity-summit/london">sample schedule for London here</a>.</p>



<h2>Tweet along with the live stream</h2>



<p>I plan to tweet along from the live event &#8212; join in the conversation on twitter as you watch with <a href="https://twitter.com/hashtag/SQLinTheCity?src=hash">#sqlinthecity</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://littlekendra.com/2018/08/22/sql-in-the-city-fall-2018-join-us/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6089</post-id>	</item>
	</channel>
</rss>
