<?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/"
	>

<channel>
	<title>SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</title>
	<atom:link href="https://sqlvariant.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://sqlvariant.com</link>
	<description>maybe even the occasional ETL tidbit</description>
	<lastBuildDate>Wed, 19 May 2021 17:50:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">110310081</site>	<item>
		<title>GroupBy is Back &#8211; Spring 2021 Edition</title>
		<link>https://sqlvariant.com/2021/05/groupby-is-back-spring-2021-edition/</link>
					<comments>https://sqlvariant.com/2021/05/groupby-is-back-spring-2021-edition/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 19 May 2021 17:44:37 +0000</pubDate>
				<category><![CDATA[Training Event]]></category>
		<category><![CDATA[GroupBy]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3778</guid>

					<description><![CDATA[<p>GroupBy Conference is coming back May 25-26 for it&#8217;s Spring 2021 Edition. There will be 20+ FREE data sessions spread across the two days. Sessions for Americas&#8217; time zones will be on May 25 and European time zones on May 26. If you haven&#8217;t heard of it before, it was founded by Brent Ozar ( [&#8230;]</p>
The post <a href="https://sqlvariant.com/2021/05/groupby-is-back-spring-2021-edition/">GroupBy is Back – Spring 2021 Edition</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>GroupBy Conference is coming back May 25-26 for it&#8217;s Spring 2021 Edition. There will be 20+ FREE data sessions spread across the two days. Sessions for Americas&#8217; time zones will be on May 25 and European time zones on May 26.</p>



<p>If you haven&#8217;t heard of it before, it was founded by Brent Ozar ( <a href="https://ozar.me/">b</a> | <a href="https://twitter.com/brento">t</a> ) back in the day and features some big speakers in the SQL Server community each year.  Just check out the lineup below &#x1f600;</p>



<p><strong>You can register for the event and checkout the other details here:</strong><br><a href="https://mailchi.mp/groupby/may-2021-reg-d">https://mailchi.mp/groupby/may-2021-reg-d</a></p>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><tbody><tr><td></td><td><strong>GROUPBY AMERICAS &#8211; MAY 25</strong></td><td></td></tr><tr><td><strong>TIME (IN UTC)</strong></td><td><strong>DBA TRACK SESSION</strong></td><td><strong>DEV &amp; BI TRACK SESSION</strong></td></tr><tr><td><strong>13:30</strong></td><td>SQL Edge to Cloud Keynote <br>— Anna Hoffman (on Dev &amp; BI track)</td><td>SQL Edge to Cloud Keynote <br>— Anna Hoffman</td></tr><tr><td><strong>14:30</strong></td><td>Learn to Effectively Use Extended Events <br>— Grant Fritchey</td><td>Which Azure SQL Database Options Should I choose?<br>— Jes Schultz</td></tr><tr><td><strong>16:00</strong></td><td>How to Audit SQL Server for Free <br>— Josephine Bush</td><td>Notebooks, PowerShell and Excel Automation <br>— Rob Sewell</td></tr><tr><td><strong>17:30</strong></td><td>SolarWinds Lunchtime Session</td><td>T-SQL User-Defined Functions,<br>or: How to kill performance in one, easy step<br>— Hugo Kornelis</td></tr><tr><td><strong>18:15</strong></td><td>PureStorage Presents: Solving Data Protection and Recovery Challenges for SQL Server Databases <br>— Argenis Fernandez</td><td>T-SQL User-Defined Functions, <br>or: How to kill performance in one, easy step <br>— Hugo Kornelis (continued)</td></tr><tr><td><strong>19:00</strong></td><td>Myths and Misconceptions about Locking and Blocking <br>— Klaus Aschenbrenner</td><td>Are you drunk SQL Server? Where did that estimate come from? <br>— Magnus Ahlkvist</td></tr><tr><td><strong>20:30</strong></td><td>SQL Admin Best Practices with DMVs <br>— William Assaf</td><td>Modern T-SQL for Better Performance <br>— Kathi Kellenberger</td></tr><tr><td><strong>22:00</strong></td><td>Dallas DBAs Presents: &#8220;Black Arts&#8221; Index Maintenance &#8211; GUIDs v.s. Fragmentation &#8211; They&#8217;re not the problem… WE ARE! <br>— Jeff Moden</td><td></td></tr><tr><td><strong>23:30</strong></td><td>Become an Expert in Managing Your Tempdb <br>— Deepthi Goguri</td><td></td></tr><tr><td></td><td><strong>GROUPBY EUROPE &#8211; MAY 26</strong></td><td></td></tr><tr><td><strong>TIME (IN UTC)</strong></td><td><strong>DBA TRACK SESSION</strong></td><td><strong>DEV &amp; BI TRACK SESSION</strong></td></tr><tr><td><strong>07:30</strong></td><td>Not my Problem(?) &#8211; Azure Networking 101 for Azure SQL Server DBAs <br>— Alexander Arvidsson</td><td>Dynamic Search Queries in T-SQL &#8211; The Ninja way <br>— Eitan Blumin</td></tr><tr><td><strong>09:00</strong></td><td>How I Cut My Maintenance Window by 80% <br>— Paresh Motiwala</td><td>All you wanted to know about Collations <br>— Erland Sommarskog</td></tr><tr><td><strong><strong>10:30</strong></strong></td><td>SQL Server and PowerShell walk into a bar… <br>— Mikey Bronowski</td><td>In-memory OLTP Design Principles in Microsoft SQL Server <br>— Torsten Strauß</td></tr><tr><td><strong>12:00</strong></td><td>Redgate Presents: Getting started with Extended Events <br>— Kathi Kellenberger</td><td>Simplify data management with partitioning <br>— Uwe Ricken</td></tr><tr><td><strong>12:45</strong></td><td>&#8220;We&#8217;re all born naked and the rest is drag&#8221;: An Introduction to Diversity and Inclusion <br>— Cecilia Juddman</td><td>Simplify data management with partitioning<br>— Uwe Ricken (continued)</td></tr><tr><td><strong>13:30</strong></td><td>A deep dive into Docker <br>— Andrew Pruski</td><td>Visual Studio database projects: more than just source control <br>— Chris Johnson</td></tr><tr><td><strong>15:00</strong></td><td>6 Query Tuning Techniques That Will Solve 75% Of Your Performance Problems – v2 <br>— Amit Bansal</td><td>MS SQL New functions, syntaxes, tips &amp; tricks <br>— Damir Matešić</td></tr><tr><td><strong>16:30</strong></td><td>SQL Server and Snapshots: Everything You Were Afraid To Ask <br>— Argenis Fernandez</td><td></td></tr></tbody></table></figure>



<p>After the live event, we upload all the content onto YouTube for anyone who missed a session or just wants to check it out after the fact. (You don&#8217;t need to be signed up – you can see all the previous sessions here: <a href="https://www.youtube.com/channel/UCEHf_UKwG3GMkb9wIVBTeQA">https://www.youtube.com/channel/UCEHf_UKwG3GMkb9wIVBTeQA</a> ) Hope to see y&#8217;all there.</p>The post <a href="https://sqlvariant.com/2021/05/groupby-is-back-spring-2021-edition/">GroupBy is Back – Spring 2021 Edition</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2021/05/groupby-is-back-spring-2021-edition/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3778</post-id>	</item>
		<item>
		<title>Create a Polling Loop in PowerShell</title>
		<link>https://sqlvariant.com/2021/02/create-a-polling-loop-in-powershell/</link>
					<comments>https://sqlvariant.com/2021/02/create-a-polling-loop-in-powershell/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 16 Feb 2021 16:00:00 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3745</guid>

					<description><![CDATA[<p>This is one way to create a polling loop in PowerShell. I&#8217;m sure there are several options, but this one works well for the use case. Backstory I needed to start the refresh of a data model using the new Start-RsRestCacheRefreshPlan function I created, and then check a few seconds later to make sure it [&#8230;]</p>
The post <a href="https://sqlvariant.com/2021/02/create-a-polling-loop-in-powershell/">Create a Polling Loop in PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>This is <em>one way</em> to create a polling loop in PowerShell. I&#8217;m sure there are several options, but this one works well for the use case.</p>
<h2>Backstory</h2>
<p>I needed to start the refresh of a data model using the new <a href="https://sqlvariant.com/2021/01/3-new-powershell-functions-for-refreshing-power-bi-reports-on-a-power-bi-report-server/">Start-RsRestCacheRefreshPlan function</a> I created, and then check a few seconds later to make sure it had started, using the <span style="color: blue; font-family: Consolas;">Get-RsRestCacheRefreshPlanHistory</span> function. Sounds easy enough right? The problem is that the service doesn&#8217;t update instantly to tell you that it had started. Also, the service sometimes takes longer, depending on load.</p>
<h2>Start-Sleep isn&#8217;t ideal</h2>
<p style="background: #fffffe;">Originally I had used the Start-Sleep command to wait 3 seconds ( <span style="color: blue;"><span style="font-family: Consolas;"><span style="font-size: 12pt;">Start-Sleep<span style="color: #333333;">&nbsp;<span style="color: purple;">3</span></span></span><span style="color: #333333; font-size: 9pt;"><br />
</span></span>)</span>. That worked fine on my machine, but when I deployed it to the server, I found I needed to bump it up to 6 seconds. At first that worked, but then a week later I needed to bump it up to 9 seconds. The problem here is obvious, if we force it to wait 9 seconds every time, even if the task was updated after 4 second, we&#8217;re <strong>wasting extra time</strong>. And those seconds are going to add up.</p>
<p style="background: #fffffe;">Instead, I was asked to allow the <span style="color: blue; font-family: Consolas;">Get-RsRestCacheRefreshPlanHistory</span> function to wait up to 15 seconds to get the answer it was looking for, but to stop as soon as it got the right answer. In this particular case <span style="color: darkblue;"><span style="font-family: Consolas; font-size: 10pt;">@<span style="color: black;">($<span style="color: orangered;">someHistory<span style="color: black;">)<span style="color: #333333;">.count&nbsp;<span style="color: darkgray;">-eq<span style="color: #333333;">&nbsp;<span style="color: purple;">1</span></span></span></span></span></span></span></span><span style="font-size: 12pt;"><br />
</span></span>is the &#8220;right answer&#8221;. But if it takes more than 15 seconds, then we just assume failure.</p>
<h2>How to WHILE</h2>
<p style="background: #fffffe;">The only problem with this request for me to &#8220;use a polling loop&#8221; was that I didn&#8217;t quite remember off the top of my head how to do something like this. So I pinged Doug Finke ( <a href="https://dfinke.github.io/">b</a> | <a href="https://twitter.com/DFinke">t</a> ) and about 18 seconds later I had my solution.</p>
<p style="background: #fffffe;"><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/02/021521_1812_CreateaPoll1.png" alt=""></p>
<h2>Stepping through the logic</h2>
<ol>
<li>
<div style="background: #fffffe;">First, we need to start the refresh</div>
</li>
<li>
<div style="background: #fffffe;">Next, we find out what time it is</div>
</li>
<li>
<div style="background: #fffffe;">Now we need to check the .count property of the <span style="color: black;"><span style="font-family: Consolas;">$<span style="color: orangered;">someHistory</span></span> variable and see if it is less than 1</span>, as soon as the .count property is 1 or more, the loop will stop</div>
<ol>
<li>
<div style="background: #fffffe;">The first time we do this check the variable will be empty, and will therefore be less than 1</div>
</li>
</ol>
</li>
<li>
<div style="background: #fffffe;">If we pass that check, we then go ahead and run our command to check the history and load the result of that check into the <span style="color: black;"><span style="font-family: Consolas;">$<span style="color: orangered;">someHistory</span></span> variable</span></div>
</li>
<li>
<div style="background: #fffffe;">Next, we check the current time and see if 15 seconds have elapsed yet. If 15 seconds have elapsed we run whatever the code inside the {} is, in this case it&#8217;s <span style="color: darkblue; font-family: Consolas;">break</span> keyword which is the other way we can end our loop.</div>
</li>
<li>
<div style="background: #fffffe;">If we get all the way down to that last little <strong>}</strong> and neither of our conditions have been met, we just start the whole loop over again.</div>
</li>
</ol>
<p style="background: #fffffe;">Here&#8217;s that chink of code again in case you need to build something similar.</p>
<p style="background: #fffffe;"><span style="color: blue; font-family: Consolas; font-size: 9pt;">Start-RsRestCacheRefreshPlan<br />
</span><span style="color: black; font-family: Consolas; font-size: 9pt;">$<span style="color: orangered;">timer<span style="color: darkgray;">=<span style="color: #333333;">&nbsp;<span style="color: blue;">Get-Date<br />
</span></span></span></span></span><span style="color: darkblue; font-family: Consolas; font-size: 9pt;">while<span style="color: #333333;">&nbsp;<span style="color: black;">((<span style="color: darkblue;">@<span style="color: black;">($<span style="color: orangered;">someHistory<span style="color: black;">)<span style="color: #333333;">.count&nbsp;<span style="color: darkgray;">-lt<span style="color: #333333;">&nbsp;<span style="color: purple;">1<span style="color: black;">))<span style="color: #333333;">&nbsp;<span style="color: black;">{<br />
</span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="color: #333333; font-family: Consolas; font-size: 9pt;">&nbsp;&nbsp;<span style="color: black;">$<span style="color: orangered;">someHistory<span style="color: #333333;">&nbsp;<span style="color: darkgray;">=<span style="color: #333333;">&nbsp;<span style="color: blue;">Get-RsRestCacheRefreshPlanHistory<span style="color: darkgray;"> &#8211;<span style="color: #333333;">RsReport&nbsp;<span style="color: black;">&#8220;<span style="color: darkred;">/ReportCatalog<span style="color: black;">&#8221;<br />
</span></span></span></span></span></span></span></span></span></span></span></span><span style="color: #333333; font-family: Consolas; font-size: 9pt;">&nbsp;&nbsp;<span style="color: darkblue;">if<span style="color: black;">(((<span style="color: blue;">Get-Date<span style="color: black;">)<span style="color: darkgray;">&#8211;<span style="color: black;">$<span style="color: orangered;">timer<span style="color: black;">)<span style="color: #333333;">.seconds&nbsp;<span style="color: darkgray;">-ge<span style="color: #333333;">&nbsp;<span style="color: purple;">15<span style="color: black;">)<span style="color: #333333;">&nbsp;<span style="color: black;">{<span style="color: darkblue;">break<span style="color: black;">}<br />
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="color: black; font-family: Consolas; font-size: 9pt;">}<span style="color: #333333;"><br />
</span></span></p>
<p style="background: #fffffe;">We can finally do our check to see if <span style="color: darkblue;"><span style="font-family: Consolas;">@<span style="color: black;">($<span style="color: orangered;">someHistory<span style="color: black;">)<span style="color: #333333;">.count&nbsp;<span style="color: darkgray;">-eq<span style="color: #333333;">&nbsp;<span style="color: purple;">1</span></span></span></span></span></span></span></span><br />
</span>and move on to the next step in our command.</p>
<p style="background: #fffffe;">Again, this is just the solution that worked well for me. If you know of an easier way to do this kind of polling, please share it in the comments <span style="color: #333333; font-family: Consolas; font-size: 9pt;"><br />
</span></p>
<p>Until someone shows me a better way, I&#8217;m going to use this same technique to wait for my SQL Servers to be ready when I <a href="_wp_link_placeholder" data-wplink-edit="true">build them in Docker</a>.</p>The post <a href="https://sqlvariant.com/2021/02/create-a-polling-loop-in-powershell/">Create a Polling Loop in PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2021/02/create-a-polling-loop-in-powershell/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3745</post-id>	</item>
		<item>
		<title>Grant or Revoke Permission on Power BI Report Server</title>
		<link>https://sqlvariant.com/2021/02/grant-or-revoke-permission-on-power-bi-report-server/</link>
					<comments>https://sqlvariant.com/2021/02/grant-or-revoke-permission-on-power-bi-report-server/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 10 Feb 2021 20:23:17 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Report Server]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[ReportingServicesTools]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3720</guid>

					<description><![CDATA[<p>I have created two new PowerShell functions for Granting or Revoking permission on items in the Power BI Report Catalog. These two will be the probably be the last two functions I create for Power BI Report Server for a little while. I&#8217;ll be working on SSAS cmdlets for the next week or two. RECAP [&#8230;]</p>
The post <a href="https://sqlvariant.com/2021/02/grant-or-revoke-permission-on-power-bi-report-server/">Grant or Revoke Permission on Power BI Report Server</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image"><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/02/021021_0133_GrantorRevo1.png" alt=""/></figure>



<p>I have created two new PowerShell functions for Granting or Revoking permission on items in the Power BI Report Catalog. These two will be the probably be the last two functions I create for Power BI Report Server for a little while. I&#8217;ll be working on SSAS cmdlets for the next week or two.</p>



<h2 class="wp-block-heading">RECAP</h2>



<p>I have recently created 4 new functions for working with Scheduled Refresh Plans (<a href="https://sqlvariant.com/2021/01/3-new-powershell-functions-for-refreshing-power-bi-reports-on-a-power-bi-report-server/">mostly covered here</a>). As well as two more functions, one for Testing your DataSource connection, the other for inspecting the permissions for an item in the Report Catalog (<a href="https://sqlvariant.com/2021/02/added-another-3-new-powershell-functions-for-reports-on-power-bi-report-server/">mostly covered here</a>). So, with these two, that makes 8 new functions this year. All of these functions have been built against the REST API, which is necessary for making them work in PowerShell 7.</p>



<h2 class="wp-block-heading">Giant Thanks to Doug Finke!</h2>



<p>I could not have created these two new functions ( <span style="color: blue; font-family: Consolas;">Grant-RsRestItemAccessPolicy</span> and <span style="color: blue; font-family: Consolas;">Revoke-RsRestItemAccessPolicy</span> ), without the help of Doug Finke ( <a href="https://dfinke.github.io/">b</a> | <a href="https://twitter.com/DFinke">t</a> ). Doug Took a few minutes out of his busy schedule to teach me how to add &amp; subtract (INSERT &amp; DELETE) objects, and then convert them to the proper <a href="https://github.com/microsoft/ReportingServicesTools/blob/fbedacb1bb40c9e5a646066d1797da3d05ebe624/ReportingServicesTools/Functions/Security/Rest/Grant-RsRestItemAccessPolicy.ps1#L137" target="_blank" rel="noreferrer noopener">JSON payload</a>. It was kind of crazy how fast he was able to create the working code.<span style="color: #333333; font-family: Consolas; font-size: 9pt;"><br></span></p>



<h2 class="wp-block-heading">Pester Tests are Important</h2>



<p>Building these two new commands was also a lot faster because I didn&#8217;t really have to create <em>new</em> Pester Tests for them, per se. Instead, I took the <a href="https://github.com/microsoft/ReportingServicesTools/blob/master/Tests/Security/AccessOnCatalogItem.Tests.ps1">existing Pester test</a> for the old SOAP commands, created a copy, and basically sapped out the names. This was kind of a design goal too. I wanted to be able to prove that the two new commands could do the exact same operations that the two old commands could. How could I possibly prove this better than duplicating the existing Pester test?</p>



<h2 class="wp-block-heading">Available Today</h2>



<p>You can now get all of these command from the ReportingServicesTools module in the PowerShell Gallery.</p>



<p><span style="color: blue; font-family: Consolas; font-size: 9pt;">Update-Module<span style="color: #333333;">&nbsp;ReportingServicesTools</span></span></p>



<p>If you want to see for yourself the new commands that have been added, just run the code below (assuming you also downloaded the old version of the module at some point):</p>



<p><span style="color: blue; font-family: Consolas; font-size: 9pt;">Import-Module<span style="color: #333333;">&nbsp;ReportingServicesTools&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">RequiredVersion&nbsp;<span style="color: purple;">0.0<span style="color: #333333;">.<span style="color: purple;">5.8<span style="color: #333333;"><br></span></span></span></span></span></span></span></span><span style="color: black; font-family: Consolas; font-size: 9pt;">$<span style="color: orangered;">58<span style="color: #333333;">&nbsp;<span style="color: darkgray;">=<span style="color: #333333;">&nbsp;<span style="color: blue;">Get-Command<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">Module&nbsp;ReportingServicesTools&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">CommandType&nbsp;Function<br></span></span></span></span></span></span></span></span></span></span></span><span style="color: blue; font-family: Consolas; font-size: 9pt;">Remove-Module<span style="color: #333333;">&nbsp;ReportingServicesTools<br></span>Import-Module<span style="color: #333333;">&nbsp;ReportingServicesTools&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">RequiredVersion&nbsp;<span style="color: purple;">0.0<span style="color: #333333;">.<span style="color: purple;">6.4<span style="color: #333333;"><br></span></span></span></span></span></span></span></span><span style="color: black; font-family: Consolas; font-size: 9pt;">$<span style="color: orangered;">64<span style="color: #333333;">&nbsp;<span style="color: darkgray;">=<span style="color: #333333;">&nbsp;<span style="color: blue;">Get-Command<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">Module&nbsp;ReportingServicesTools&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">CommandType&nbsp;Function</span></span></span></span></span></span></span></span></span></span></span><br><span style="color: blue; font-family: Consolas; font-size: 9pt;">Compare-Object<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">ReferenceObject&nbsp;<span style="color: black;">$<span style="color: orangered;">58<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">DifferenceObject&nbsp;<span style="color: black;">$<span style="color: orangered;">64<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">Property&nbsp;Name&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">PassThru</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>



<p>That&#8217;s it for now. If you happen to have any requests to improve the PowerShell cmdlets for SSAS, please reach out to me with your suggestion. I&#8217;m already working on making those better.</p>The post <a href="https://sqlvariant.com/2021/02/grant-or-revoke-permission-on-power-bi-report-server/">Grant or Revoke Permission on Power BI Report Server</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2021/02/grant-or-revoke-permission-on-power-bi-report-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3720</post-id>	</item>
		<item>
		<title>Query DB2 From PowerShell</title>
		<link>https://sqlvariant.com/2021/02/query-db2-from-powershell/</link>
					<comments>https://sqlvariant.com/2021/02/query-db2-from-powershell/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 09 Feb 2021 13:45:00 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3695</guid>

					<description><![CDATA[<p>Story time: A few months ago I was in a meeting where we were all asked how we could take on a complex, but very necessary task. As they went around to everyone on the call, everyone said it wasn&#8217;t possible to do without a major (dedicated personnel) effort. When they got to me, I [&#8230;]</p>
The post <a href="https://sqlvariant.com/2021/02/query-db2-from-powershell/">Query DB2 From PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">Story time:</h2>



<p>A few months ago I was in a meeting where we were all asked how we could take on a complex, but very necessary task. As they went around to everyone on the call, everyone said it wasn&#8217;t possible to do without a major (dedicated personnel) effort. When they got to me, I said something like &#8220;well, maybe, if only I could do these two thigs in PowerShell, I might be able to achieve the end result you&#8217;re after&#8221;. (Please picture the scene in The Princess Bride where Inigo &amp; Fezzik ask Westley to figure out how to raid the castle. Westley tells them it&#8217;s impossible. And then a moment later he asks for a wheelbarrow &amp; cloak.) Well, that&#8217;s exactly where I was, I needed just 2 things to attempt the impossible.</p>



<p>Side Note: If you&#8217;re a regular reader here, before you say it, I know what you&#8217;re thinking. You&#8217;re thinking &#8220;wow Aaron, you&#8217;ll do *anything* to come up with a reason to <a href="https://sqlvariant.com/category/powershell/">blog about PowerShell</a>, won&#8217;t you?&#8221;</p>



<h2 class="wp-block-heading">Solution time:</h2>



<p>One of the two things I needed to be able to do in PowerShell was to query a DB2 database. I had a look on the PowerShell Gallery and the search didn&#8217;t return anything for DB2. So, I did what I&#8217;m fairly well known for doing, I asked for help on twitter.</p>



<p>Just a few minutes later Tim replied and pointed me to some code on Ember Crooks&#8217; blog.</p>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<blockquote class="twitter-tweet" data-width="550" data-dnt="true"><p lang="en" dir="ltr">This might be handy.<a href="https://t.co/0WoDdPvMFF">https://t.co/0WoDdPvMFF</a></p>&mdash; Tim (@hantu0) <a href="https://twitter.com/hantu0/status/1328793837003812866?ref_src=twsrc%5Etfw">November 17, 2020</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div></figure>



<p><span style="color: #8899a6; font-family: Arial; font-size: 9pt;">&lt;blockquote class=&#8221;twitter-tweet&#8221;&gt;&lt;p lang=&#8221;en&#8221; dir=&#8221;ltr&#8221;&gt;This might be handy.&lt;a href=&#8221;https://t.co/0WoDdPvMFF&#8221;&gt;https://t.co/0WoDdPvMFF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Tim (@hantu0) &lt;a href=&#8221;https://twitter.com/hantu0/status/1328793837003812866?ref_src=twsrc%5Etfw&#8221;&gt;November 17, 2020&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&#8221;https://platform.twitter.com/widgets.js&#8221; charset=&#8221;utf-8&#8243;&gt;&lt;/script&gt;<br></span></p>



<p>This was a huge help! It wasn&#8217;t quite what I needed, but it was close enough to get me going. I took the code from Ember Crooks&#8217; GitHub and merged it with some code from way back when the old SQLPS module had a whopping 5 cmdlets. After I got it working, I turned it into a PowerShell function, to make it easier to use.</p>



<p>I&#8217;ve put this code in a Gist so that I can get to it easily. But since I don&#8217;t work with DB2 very often I figured the code would have a better home back with Ember, so I did a PR against <a href="https://github.com/ecrooks/db2_hello_world">her repo</a>.</p>



<h2 class="wp-block-heading">How to use it:</h2>



<p>You easily can download a copy of the script using PowerShell:</p>



<p><span style="color: #333333; font-family: Consolas; font-size: 9pt;">PS&nbsp;C:\temp<span style="color: darkgray;">&gt;<span style="color: #333333;">&nbsp;<span style="color: blue;">Invoke-RestMethod<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">Uri&nbsp;https:<span style="color: darkgray;">//<span style="color: blue;">gist.githubusercontent.com<span style="color: darkgray;">/<span style="color: #333333;">SQLvariant<span style="color: darkgray;">/<span style="color: #333333;">e9bede8a6bf4e65408da1f0a7f7faffc<span style="color: darkgray;">/<span style="color: #333333;">raw<span style="color: darkgray;">/<span style="color: #333333;">65a3f934e3d14223173d56edcb2d079d8ec58441<span style="color: darkgray;">/<span style="color: blue;">Invoke-DB2Query.ps1<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">OutFile&nbsp;<span style="color: blue;">Invoke-DB2Query.ps1<span style="color: #333333;"><br></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>



<p>If you found this blog post because you work with DB2 and are new to PowerShell, I&#8217;ll give you a couple quick tips. I wrote this script to be a function, a function is like a baby cmdlet. To use the function you can either copy paste the code into your session and run it, or you can dot-source it like below.</p>



<p><span style="color: #333333; font-family: Consolas; font-size: 9pt;">PS&nbsp;C:\temp<span style="color: darkgray;">&gt;.<span style="color: #333333;">&nbsp;.<span style="color: blue;">\Invoke-DB2Query.ps1<span style="color: #333333;"><br></span></span></span></span></span></p>



<p>After that, you can you the Get-Help cmdlet to get PowerShell to tell you a few examples of how you can use this function.</p>



<p><span style="color: #333333; font-family: Consolas; font-size: 9pt;">PS&nbsp;C:\temp<span style="color: darkgray;">&gt;<span style="color: blue;">Get-Help<span style="color: #333333;">&nbsp;<span style="color: blue;">Invoke-DB2Query<span style="color: #333333;">&nbsp;<span style="color: darkgray;">&#8211;<span style="color: #333333;">Full<br></span></span></span></span></span></span></span></span></p>



<p>OK, that&#8217;s about it for the quick tour.</p>



<h2 class="wp-block-heading">Some other things:</h2>



<p>You might notice I didn&#8217;t include parameters for username &amp; password, and that&#8217;s because I included <span style="color: darkred; font-family: Consolas; font-size: 9pt;">trusted_connection=true</span>. If you need to use a username &amp; password instead, just swap out that piece with <span style="color: #032f62; font-family: Consolas; font-size: 9pt; background-color: #fffbdd;">User Id=;Password=</span> from <a href="https://github.com/ecrooks/db2_hello_world/blob/e7fce1074a85878f98fa969a7309771943549600/PowerShell/HelloDb2World_PowerShell.ps1">Ember&#8217;s code</a>.<span style="color: #333333; font-family: Consolas; font-size: 9pt;"><br></span></p>



<p>Finally, you might be wondering what was the other thing I needed in PowerShell, or what the &#8216;impossible&#8217; task was. Those will take multiple blog posts to cover, but I will get around to them before too long, I promise.</p>



<figure class="wp-block-image"><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/02/020921_0229_QueryDB2Fro1.png" alt=""/></figure>The post <a href="https://sqlvariant.com/2021/02/query-db2-from-powershell/">Query DB2 From PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2021/02/query-db2-from-powershell/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3695</post-id>	</item>
		<item>
		<title>Added another 3 new PowerShell functions for reports on Power BI Report Server</title>
		<link>https://sqlvariant.com/2021/02/added-another-3-new-powershell-functions-for-reports-on-power-bi-report-server/</link>
					<comments>https://sqlvariant.com/2021/02/added-another-3-new-powershell-functions-for-reports-on-power-bi-report-server/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 03 Feb 2021 13:55:20 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Report Server]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3681</guid>

					<description><![CDATA[<p>I finally did it. I created a function I&#8217;ve been wanting to be able to use for *years*. Test-RsRestItemDataSource is here. I can&#8217;t tell you how many times I&#8217;ve started to work on a report I was told was working, only to find the connection info was invalid. This wastes valuable time, especially when you&#8217;ve [&#8230;]</p>
The post <a href="https://sqlvariant.com/2021/02/added-another-3-new-powershell-functions-for-reports-on-power-bi-report-server/">Added another 3 new PowerShell functions for reports on Power BI Report Server</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p style="background: #fffffe;"><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/02/020321_1348_Another3new1.png" alt="" align="right" />I finally did it. I created a function I&#8217;ve been wanting to be able to use for *years*. <span style="color: blue; font-family: Consolas;">Test-RsRestItemDataSource</span> is here.<span style="color: #333333; font-family: Consolas; font-size: 9pt;"><br />
</span></p>
<p>I can&#8217;t tell you how many times I&#8217;ve started to work on a report I was told was working, only to find the connection info was invalid. This wastes valuable time, especially when you&#8217;ve already made changes to the report.</p>
<p>Other times, I&#8217;ve been asked to figure out why a bunch of subscriptions weren&#8217;t working, only to find out it was a simple connection issue. I&#8217;ve always wanted a simple PowerShell command to check the credentials of a bunch of reports before I touch anything.</p>
<p>Turns out, it wasn&#8217;t that hard to build at all. I only wish I had built it years ago.</p>
<p>This command will check every credential within your report, and will return the success/failure of each connection separately. I have built this command to work with both Power BI reports &amp; Paginated reports on Power BI Report Server. I used the REST API so these commands are available on PowerShell 7.</p>
<p style="background: #fffffe;">While I was working on the ReportingServicesTools module I added two more commands as well. I added <span style="color: blue; font-family: Consolas;">Get-RsRestCacheRefreshPlanHistory</span> for checking the success/failure of last few refreshes of a Power BI report. I built this command to help me find out when a report refresh stopped working.</p>
<p style="background: #fffffe;">I also built <span style="color: blue; font-family: Consolas;">Get-RsRestItemAccessPolicy</span> which is basically a re-creation of the <span style="color: blue; font-family: Consolas;">Get-RsCatalogItemRole</span> command, but using the REST API instead of the SOAP API. I have more work I plan to do to create [ <span style="color: blue; font-family: Consolas;">Grant </span>| <span style="color: blue; font-family: Consolas;">Revoke</span> ] commands. But first I need to learn how to add &amp; subtract ( INSERT / DELETE ) lines of JSON from PowerShell. &#x1f600;<span style="color: #333333; font-family: Consolas; font-size: 9pt;"><br />
</span></p>
<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/02/020321_1348_Another3new2.png" alt="" /></p>The post <a href="https://sqlvariant.com/2021/02/added-another-3-new-powershell-functions-for-reports-on-power-bi-report-server/">Added another 3 new PowerShell functions for reports on Power BI Report Server</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2021/02/added-another-3-new-powershell-functions-for-reports-on-power-bi-report-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3681</post-id>	</item>
		<item>
		<title>3 new PowerShell functions for refreshing Power BI reports on a Power BI Report Server</title>
		<link>https://sqlvariant.com/2021/01/3-new-powershell-functions-for-refreshing-power-bi-reports-on-a-power-bi-report-server/</link>
					<comments>https://sqlvariant.com/2021/01/3-new-powershell-functions-for-refreshing-power-bi-reports-on-a-power-bi-report-server/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Thu, 28 Jan 2021 13:15:00 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Report Server]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3648</guid>

					<description><![CDATA[<p>I just wanted to give everyone a heads-up that a new version of the ReportingServicesTools module went out last week, and it includes 3 new PowerShell functions for working with Power BI reports on a Power BI Report Server (PBIRS) instance. You can now Create (New), Get, &#38; Start a CacheRefreshPlan of a Power BI [&#8230;]</p>
The post <a href="https://sqlvariant.com/2021/01/3-new-powershell-functions-for-refreshing-power-bi-reports-on-a-power-bi-report-server/">3 new PowerShell functions for refreshing Power BI reports on a Power BI Report Server</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>I just wanted to give everyone a heads-up that a new version of the <a href="https://github.com/Microsoft/ReportingServicesTools">ReportingServicesTools module</a> went out last week, and it includes 3 new PowerShell functions for working with Power BI reports on a Power BI Report Server (PBIRS) instance.</p>
<p>You can now Create (New), Get, &amp; Start a CacheRefreshPlan of a Power BI report deployed to a PBIRS instance.&nbsp; For clarity, these only apply to reports using an <strong>Imported</strong> model, not those using Direct Query.</p>
<p style="background: #fffffe;"><span style="color: blue;"><span style="font-family: Consolas;">Get-Command<span style="color: #333333;">&nbsp;<span style="color: orangered;">-Module<span style="color: #333333;">&nbsp;ReportingServicesTools&nbsp;<span style="color: orangered;">-Noun<span style="color: #333333;">&nbsp;<span style="color: blue;">*CacheRefresh*</span></span></span></span></span></span></span><span style="font-size: 14pt;"><br />
</span></span></p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 420px;">
<col style="width: 264px;">
<col style="width: 324px;">
<col style="width: 192px;"></colgroup>
<tbody valign="top">
<tr style="height: 38px;">
<td style="padding-left: 14px; padding-right: 14px; border-bottom: solid 1.0pt;" valign="bottom"><span style="color: black;"><strong>Name</strong></span></td>
<td style="padding-left: 14px; padding-right: 14px; border-bottom: solid 1.0pt;" valign="bottom"><span style="color: black;"><strong>CommandType</strong></span></td>
<td style="padding-left: 14px; padding-right: 14px; border-bottom: solid 1.0pt;" valign="bottom"><span style="color: black;"><strong>Source</strong></span></td>
<td style="padding-left: 14px; padding-right: 14px; border-bottom: solid 1.0pt;" valign="bottom"><span style="color: black;"><strong>Version</strong></span></td>
</tr>
<tr style="height: 38px;">
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: solid 1.0pt; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">Get-RsRestCacheRefreshPlan</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">Function</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">ReportingServicesTools</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">0.0.6.0</span></td>
</tr>
<tr style="height: 38px;">
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: solid 1.0pt; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">New-RsRestCacheRefreshPlan</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">Function</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">ReportingServicesTools</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">0.0.6.0</span></td>
</tr>
<tr style="height: 38px;">
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: solid 1.0pt; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">Start-RsRestCacheRefreshPlan</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">Function</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">ReportingServicesTools</span></td>
<td style="padding-left: 14px; padding-right: 14px; border-top: none; border-left: none; border-bottom: solid 1.0pt; border-right: solid 1.0pt;" valign="bottom"><span style="color: black;">0.0.6.0</span></td>
</tr>
</tbody>
</table>
</div>
<p style="background: #fffffe;"><a href="https://en.wikipedia.org/wiki/File:Bob_at_Easel.jpg"><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/01/012721_1151_3newPowerSh1.jpg" alt="" align="right" border="0"></a><span style="color: black;">These can help you to better integrate Power BI reports into a DevOps pipeline and do more comprehensive deployment testing.&nbsp; Furthermore, the <span style="color: blue;"><span style="font-family: Consolas; font-size: 10pt;">Start-RsRestCacheRefreshPlan</span><span style="color: black;"><span style="font-size: 12pt;"><br />
</span>function could be called as the last step in your ETL process.</span><br />
</span><br />
</span></p>
<p>In a Bob Ross style &#8220;<em>Happy little accident</em>&#8221; the <span style="color: blue; font-family: Consolas; font-size: 10pt;">Start-RsRestCacheRefreshPlan</span><span style="font-size: 12pt;"><br />
</span>function also works against a <span style="text-decoration: underline;">subscription of a paginated report</span>.</p>
<p>This is the first release of these commands but we have been successfully using these functions for reports since late last year.&nbsp; If you see some ways these new commands could be improved, please don&#8217;t hesitate to contribute to them <span style="font-family: Segoe UI Emoji;">&#x1f600;</span></p>
<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/01/012721_1151_3newPowerSh3.png" alt="" align="right"></p>The post <a href="https://sqlvariant.com/2021/01/3-new-powershell-functions-for-refreshing-power-bi-reports-on-a-power-bi-report-server/">3 new PowerShell functions for refreshing Power BI reports on a Power BI Report Server</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2021/01/3-new-powershell-functions-for-refreshing-power-bi-reports-on-a-power-bi-report-server/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3648</post-id>	</item>
		<item>
		<title>I’ll be speaking at SQL Server Virtual Conference from C# Corner</title>
		<link>https://sqlvariant.com/2021/01/ill-be-speaking-at-sql-server-virtual-conference-from-c-corner/</link>
					<comments>https://sqlvariant.com/2021/01/ill-be-speaking-at-sql-server-virtual-conference-from-c-corner/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 27 Jan 2021 12:27:05 +0000</pubDate>
				<category><![CDATA[Training Event]]></category>
		<category><![CDATA[Jupyter Notebooks]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3668</guid>

					<description><![CDATA[<p>I&#8217;ll be speaking at the SQL Server Virtual Conference from C# Corner, Friday Jan 29, 2021, with my friend Julie Koesmarno ( b &#124; t ). I&#8217;ll be showing off some ways I use Jupyter Notebooks to automate troubleshooting &#38; data collection. I&#8217;m really excited to join the lineup of speakers for this event because [&#8230;]</p>
The post <a href="https://sqlvariant.com/2021/01/ill-be-speaking-at-sql-server-virtual-conference-from-c-corner/">I’ll be speaking at SQL Server Virtual Conference from C# Corner</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ll be speaking at the <a href="https://www.c-sharpcorner.com/events/sql-virtual-conference">SQL Server Virtual Conference</a> from C# Corner, Friday Jan 29, 2021, with my friend Julie Koesmarno ( <a href="https://www.mssqlgirl.com/">b</a> | <a href="https://twitter.com/mssqlgirl">t</a> ). I&#8217;ll be showing off some ways I use Jupyter Notebooks to automate troubleshooting &amp; data collection.</p>
<p>I&#8217;m really excited to join the lineup of speakers for this event because the organizers are using this event to <a href="https://www.eventbrite.com/e/c-corner-sql-server-virtual-conference-tickets-132697364389">raise money</a> to provide food and necessary living items for children affected by COVID pandemic. It&#8217;s a great cause to support and I hope you&#8217;ll join us.</p>
<p><span style="color: #d35400; font-family: Arial; font-size: 12pt;"><strong>SESSIONS: </strong>All Time Slots Below Are In EST (GMT -5)<br />
</span></p>
<div>
<table style="border-collapse: collapse; background: white;" border="0">
<colgroup>
<col style="width: 1028px;" />
<col style="width: 378px;" />
<col style="width: 223px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="border: dashed #ababab 0.75pt; padding: 5px;" colspan="3" valign="middle"><span style="color: #ff6600; font-family: Arial; font-size: 12pt;"><strong>Day 1 &#8211; January 29, 2021</strong></span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Welcome Note</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Mahesh Chand &amp; Stephen Simon</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">07:20 am &#8211; 07:30 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">My romantic relation with Powershell generally and DBATools especially</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Magnus Ahlkvist</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">07:30 am &#8211; 08:20 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">SQL Server 2019 Intelligent Query Processing</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Dean Savovic</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">08:20 am &#8211; 09:10 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">How to implement GDPR with SQL Server and Azure SQL Database?</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Jasmin Azemovic</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">09:10 am &#8211; 10:00 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Keynote</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 10pt;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">10:00 am &#8211; 10:30 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Using WSL2 for the Database Development Platform</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Carlos Lopez</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">10:30 am &#8211; 11:20 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Performance Tuning, Getting the Biggest Bang for Your Buck</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Monica Rathbun</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">11:20 am &#8211; 12:10 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">SQL Server 2019 Big Data Clusters Architecture</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Buck Woody</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">12:10 pm &#8211; 01:00 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Break</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 10pt;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">01:00 pm &#8211; 01:20 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Understanding Statistics in SQL Server</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Erin Stellato</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">01:20 pm &#8211; 02:10 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">TBD</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Bob Ward</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">02:10 pm &#8211; 03:00 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Executable Troubleshooting Guides with Notebooks for SQL People</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Julie Koesmarno &amp; Aaron Nelson</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">03:00 pm &#8211; 03:50 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">SQL Projects for Database Development</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Drew Skwiers-Koballa</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">03:50 pm &#8211; 04:40 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Learn Azure SQL Database through Demos</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Anna Hoffman</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">04:40 pm &#8211; 05:30 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Developer Best Practices for Azure SQL: Avoiding common pitfalls when using the Cloud Database</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Davide Mauri</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">05:30 pm &#8211; 06:20 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Data Replication Options in Azure SQL / SQL Server</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Mara Steiu</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">06:20 pm &#8211; 06:50 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Closing Note</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" colspan="2" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Mahesh Chand</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">06:50 pm &#8211; 07:00 pm</span></td>
</tr>
</tbody>
</table>
</div>
<div>
<table style="border-collapse: collapse; background: white;" border="0">
<colgroup>
<col style="width: 1028px;" />
<col style="width: 378px;" />
<col style="width: 223px;" /></colgroup>
<tbody valign="top">
<tr>
<td style="border: dashed #ababab 0.75pt; padding: 5px;" colspan="3" valign="middle"><span style="color: #ff6600; font-family: Arial; font-size: 12pt;"><strong>Day 2 &#8211; January 30, 2021</strong></span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Welcome Note</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Mahesh Chand &amp; Stephen Simon</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">07:20 am &#8211; 07:30 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Why Synapse Analytics is beyond Azure SQL Datawarehouse</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Dennes Torres</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">07:30 am &#8211; 08:20 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">MS SQL New functions, syntaxes, tips &amp; tricks</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Damir Matešic</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">08:20 am &#8211; 09:10 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Benchmarking in the cloud</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Gianluca Sartori</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">09:10 am &#8211; 10:00 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Performance Features in SQL Server and Azure SQL</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Javier Villegas</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">10:00 am &#8211; 10:50 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Modern T-SQL for Better Performance</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Kathi Kellenberger</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">10:50 am &#8211; 11:40 am</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Improving Performance With Intelligent Query Processing</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">John Morehouse</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">11:40 am &#8211; 12:30 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">SQL Server Configuration with dbatools and dbachecks</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Tracy Boggiano</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">12:30 pm &#8211; 01:20 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Break</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 10pt;"> </span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">01:20 pm &#8211; 01:40 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">A Rocket Scientist Perspective on Index Column Selection</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Mike Byrd</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">01:40 pm &#8211; 02:30 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">How to use Geospatial Data in SQL Server</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Hasan Savran</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">02:30 pm &#8211; 03:20 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Performance Improvements in SQL Server 2019</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Frank Gill</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">03:20 pm &#8211; 04:10 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Bringing DevOps to the Database</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Steve Jones</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">04:10 pm &#8211; 05:00 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Azure SQL Database-Business Continuity During Disaster</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Taiob Ali</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">05:00 pm &#8211; 05:50 pm</span></td>
</tr>
<tr>
<td style="border-top: none; border-left: dashed #ababab 0.75pt; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Closing Note</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">Mahesh Chand</span></td>
<td style="border-top: none; border-left: none; border-bottom: dashed #ababab 0.75pt; border-right: dashed #ababab 0.75pt; padding: 5px;" valign="middle"><span style="color: #8d8d8d; font-family: Arial; font-size: 12pt;">05:50 pm &#8211; 06:00 pm</span></td>
</tr>
</tbody>
</table>
</div>
<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2021/01/012721_1214_Illbespeaki1-1.jpg" alt="" /></p>The post <a href="https://sqlvariant.com/2021/01/ill-be-speaking-at-sql-server-virtual-conference-from-c-corner/">I’ll be speaking at SQL Server Virtual Conference from C# Corner</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2021/01/ill-be-speaking-at-sql-server-virtual-conference-from-c-corner/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3668</post-id>	</item>
		<item>
		<title>Deploy SSRS Projects with Two New PowerShell Commands</title>
		<link>https://sqlvariant.com/2020/11/deploy-ssrs-projects-with-two-new-powershell-commands/</link>
					<comments>https://sqlvariant.com/2020/11/deploy-ssrs-projects-with-two-new-powershell-commands/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 11 Nov 2020 16:06:09 +0000</pubDate>
				<category><![CDATA[BI]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[PBIRS]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3611</guid>

					<description><![CDATA[<p>I built two new PowerShell commands to deploy SSRS projects, and they have finally been merged into the ReportingServicesTools module. The commands are Get-RsDeploymentConfig &#38; Publish-RsProject. While the Write-RsFolderContent command did already exist, and is very useful, it does not support deploying the objects in your SSRS Project to multiple different folders in your report [&#8230;]</p>
The post <a href="https://sqlvariant.com/2020/11/deploy-ssrs-projects-with-two-new-powershell-commands/">Deploy SSRS Projects with Two New PowerShell Commands</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><span style="font-family: Segoe UI; font-size: 10pt;">I built two new PowerShell commands to deploy SSRS projects, and they have finally been merged into the </span><span style="color: #333333; font-family: Consolas; font-size: 10pt;">ReportingServicesTools</span><span style="font-family: Segoe UI; font-size: 10pt;"> module. The commands are </span><span style="color: blue; font-family: Consolas; font-size: 10pt;">Get-RsDeploymentConfig</span><span style="font-family: Segoe UI; font-size: 10pt;"> &amp; </span><span style="color: blue; font-family: Consolas; font-size: 10pt;">Publish-RsProject</span><span style="font-family: Segoe UI; font-size: 10pt;">. While the </span><span style="font-family: Courier New; font-size: 10pt;">Write-RsFolderContent</span><span style="font-family: Segoe UI; font-size: 10pt;"> command did already exist, and is very useful, it does not support deploying the objects in your SSRS Project to multiple different folders in your report server. These two new commands can handle deployment to multiple folders.<br /></span></p>
<p><span style="font-family: Segoe UI; font-size: 10pt;">The concept is fairly simple, first you run the </span><span style="color: blue; font-family: Consolas; font-size: 10pt;">Get-RsDeploymentConfig</span><span style="font-family: Segoe UI;"><br /><span style="font-size: 10pt;">command to pull in all the deployment-target details from the SSRS project file. In SSRS projects you can have multiple deployment configurations, so you can specify which configuration you want to use by supplying the name of that configuration for the </span></span><span style="color: #333333; font-family: Consolas; font-size: 10pt;">-ConfigurationToUse</span><span style="font-family: Segoe UI; font-size: 10pt;"> parameter. This will give you back a PSObject with all the info it collected.<br /></span></p>
<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2020/11/111120_1642_DeploySSRSP1.png" alt="" /><span style="font-family: Segoe UI; font-size: 10pt;"><br /></span></p>
<p><span style="font-family: Segoe UI; font-size: 10pt;">After that, you need to <strong>add the URL of the report portal manually</strong> (unfortunately, these are not included in the SSRS Project config files).<br /></span></p>
<p><span style="font-family: Segoe UI; font-size: 10pt;">You can put all of that together and see the results like this:<br /></span></p>
<p style="background: #fffffe;"><span style="color: black; font-family: Consolas; font-size: 10pt;">$<span style="color: orangered;">RSConfig<span style="color: #333333;"> <span style="color: darkgray;">=<span style="color: #333333;"> <span style="color: blue;">Get-RsDeploymentConfig<span style="color: #333333;"> <span style="color: darkgray;">&#8211;<span style="color: #333333;">RsProjectFile <span style="color: black;">&#8216;<span style="color: darkred;">C:\source\repos\Financial Reports\SSRS_FR\SSRS_FR.rptproj<span style="color: black;">&#8216;<span style="color: #333333;"> <span style="color: darkgray;">&#8211;<span style="color: #333333;">ConfigurationToUse Dev01 <span style="color: black;">$<span style="color: orangered;">RSConfig<span style="color: #333333;"> <span style="color: darkgray;">| <span style="color: blue;">Add-Member<span style="color: #333333;"> <span style="color: darkgray;">&#8211;<span style="color: #333333;">PassThru <span style="color: darkgray;">&#8211;<span style="color: #333333;">MemberType NoteProperty <span style="color: darkgray;">&#8211;<span style="color: #333333;">Name ReportPortal <span style="color: darkgray;">&#8211;<span style="color: #333333;">Value <span style="color: black;">&#8216;<span style="color: darkred;">http://localhost/PBIRSportal/<span style="color: black;">&#8216;<span style="color: #333333;"><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: #fffffe;"><span style="color: black; font-family: Consolas; font-size: 10pt;">$<span style="color: orangered;">RSConfig</span></span></p>
<p><span style="font-family: Segoe UI; font-size: 10pt;">Once that looks good to you, all you have to do is pipe that object to the </span><span style="color: blue; font-family: Consolas; font-size: 10pt;">Publish-RsProject</span><span style="font-family: Segoe UI; font-size: 10pt;"> command, and your deployment should start.<br /></span></p>
<p style="background: #fffffe;"><span style="color: black; font-family: Consolas; font-size: 10pt;">$<span style="color: orangered;">RSConfig<span style="color: #333333;"> <span style="color: darkgray;">|<span style="color: #333333;"> <span style="color: blue;">Publish-RsProject</span></span></span></span></span></span></p>
<p><span style="font-family: Segoe UI; font-size: 10pt;">Some quick notes:<br /></span></p>
<ul>
<li><span style="font-family: Segoe UI; font-size: 10pt;">Obviously, the account running these commands will need a copy of the SSRS project it can point to, as well as the necessary credentials to deploy to the SSRS/PRIRS server you point it to.<br /></span></li>
<li><span style="font-family: Segoe UI; font-size: 10pt;">For the </span><span style="color: blue; font-family: Consolas; font-size: 10pt;">Get-RsDeploymentConfig</span><span style="font-family: Segoe UI; font-size: 10pt;"> command, the SSRS project you are using must be in the VS 2019 project format. Otherwise, the command won&#8217;t know where to look for the correct info.<br /></span></li>
<li><span style="font-family: Segoe UI; font-size: 10pt;">If you don&#8217;t know the name of the configuration you want to use, just point </span><span style="color: blue; font-family: Consolas; font-size: 10pt;">Get-RsDeploymentConfig</span><span style="font-family: Segoe UI; font-size: 10pt;"> to the project file, and it will give you back a list of configuration options to choose from.<br /></span></li>
<li><span style="font-family: Segoe UI; font-size: 10pt;">Make sure you run </span><span style="color: blue; font-size: 10pt;"><span style="font-family: Consolas;">Update-Module<span style="color: #333333;"> ReportingServicesTools</span></span><span style="font-family: Courier New;"><br /></span></span><span style="font-family: Segoe UI; font-size: 10pt;">to get these new commands.<br /></span></li>
</ul>
<p><span style="font-family: Segoe UI; font-size: 10pt;">FYI: I only had two SSRS projects available to test these commands with. They worked great for those two projects, but your SSRS project might include some complexities that I just didn&#8217;t have in either of the projects I tested with. If you have any trouble making this work, please give me a shout or file a bug on the <a title="https://github.com/microsoft/reportingservicestools/" href="https://github.com/Microsoft/ReportingServicesTools/" target="_blank" rel="noopener noreferrer">GitHub project</a> and I will try to help out.<br /></span></p>
<p><span style="color: #7a7a7a; font-family: Arial; background-color: white;">B</span><span style="font-family: Segoe UI; font-size: 10pt;">ig thanks to Doug Finke ( </span><a href="https://twitter.com/dfinke"><span style="color: #cc3366;"><span style="font-family: Arial; background-color: white;">t</span></span></a><span style="font-family: Segoe UI; font-size: 10pt;"> ) for his code contributions, and Mike Lawell ( </span><a href="https://twitter.com/sqldiver"><span style="color: #cc3366;"><span style="font-family: Arial; background-color: white;">t</span></span></a><span style="font-family: Segoe UI; font-size: 10pt;"> ) for his help testing, to make these two commands a reality.</span><a href="https://twitter.com/sqldiver"><span style="font-family: Segoe UI; font-size: 10pt;"><br /></span></a></p>


<blockquote class="wp-block-coblocks-click-to-tweet"><p class="wp-block-coblocks-click-to-tweet__text">Deploy SSRS Projects with these two new PowerShell commands in the ReportingServicesTools module! </p><a class="wp-block-coblocks-click-to-tweet__twitter-btn" href="http://twitter.com/share?&amp;text=Deploy%20SSRS%20Projects%20with%20these%20two%20new%20PowerShell%20commands%20in%20the%20ReportingServicesTools%20module!%20&amp;url=https://sqlvariant.com/2020/11/deploy-ssrs-projects-with-two-new-powershell-commands/" target="_blank" rel="noopener noreferrer">Tweet</a></blockquote>The post <a href="https://sqlvariant.com/2020/11/deploy-ssrs-projects-with-two-new-powershell-commands/">Deploy SSRS Projects with Two New PowerShell Commands</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2020/11/deploy-ssrs-projects-with-two-new-powershell-commands/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3611</post-id>	</item>
		<item>
		<title>PowerShell Notebooks are Available in Azure Data Studio</title>
		<link>https://sqlvariant.com/2019/11/powershell-notebooks-are-available-in-azure-data-studio/</link>
					<comments>https://sqlvariant.com/2019/11/powershell-notebooks-are-available-in-azure-data-studio/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 05 Nov 2019 14:50:13 +0000</pubDate>
				<category><![CDATA[Azure Data Studio]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Jypter Notebooks]]></category>
		<category><![CDATA[PowerShell Notebooks]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3453</guid>

					<description><![CDATA[<p>PowerShell Notebooks are now available in the November release of Azure Data Studio. Back in March I requested this feature be added to Azure Data Studio and it has become the most popular feature request for Notebooks. (Although, I&#8217;m sure it only became the most popular after they added copying from the results grid a [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/11/powershell-notebooks-are-available-in-azure-data-studio/">PowerShell Notebooks are Available in Azure Data Studio</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>PowerShell Notebooks are now available in the November release of <a href="https://docs.microsoft.com/sql/azure-data-studio/release-notes-azure-data-studio">Azure Data Studio</a>.  Back in March I <a href="https://github.com/microsoft/azuredatastudio/issues/4593">requested this feature</a> be added to Azure Data Studio and it has become the most popular feature request for Notebooks. (Although, I&#8217;m sure it only became the most popular <strong><em>after</em></strong> they added copying from the results grid a few months ago )</p>



<p>In Azure Data Studio, open up a new Notebook and change the drop-down menu next to &#8220;Kernel:&#8221; and select PowerShell</p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" width="983" height="343" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN1.png" alt="" class="wp-image-3445" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN1.png 983w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN1-300x105.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN1-768x268.png 768w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN1-980x343.png 980w" sizes="(max-width: 983px) 100vw, 983px" /></figure>



<p>At this point, if you haven&#8217;t tried out the Python kernel yet, you will be asked if you want to use an existing install of Python, or let Azure Data Studio install Python.  I already have Python installed, so I will point it to that install.<br>If you have already used the Python 3 kernel, you can skip these next two screenshot and head straight down to installing the <code>powershell_kernel</code>.</p>



<figure class="wp-block-image"><img decoding="async" width="1280" height="757" src="https://sqlvariant.com/wp-content/uploads/2019/10/ChoosePythonInstall-1280x757.png" alt="" class="wp-image-3463" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/ChoosePythonInstall-1280x757.png 1280w, https://sqlvariant.com/wp-content/uploads/2019/10/ChoosePythonInstall-300x177.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/ChoosePythonInstall-768x454.png 768w, https://sqlvariant.com/wp-content/uploads/2019/10/ChoosePythonInstall.png 1772w" sizes="(max-width: 1280px) 100vw, 1280px" /></figure>



<p>(At this next point, if you&#8217;ve never installed or used any kernel besides the SQL kernel, you will see a lot of downloading &amp; installing happening. This could take a little while.)</p>



<figure class="wp-block-image"><img decoding="async" width="1280" height="757" src="https://sqlvariant.com/wp-content/uploads/2019/10/NotebookDependenciesComplete-1280x757.png" alt="" class="wp-image-3466" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/NotebookDependenciesComplete-1280x757.png 1280w, https://sqlvariant.com/wp-content/uploads/2019/10/NotebookDependenciesComplete-300x177.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/NotebookDependenciesComplete-768x454.png 768w, https://sqlvariant.com/wp-content/uploads/2019/10/NotebookDependenciesComplete.png 1772w" sizes="(max-width: 1280px) 100vw, 1280px" /><figcaption><br>The Notebook dependencies may take a few minutes to install.</figcaption></figure>



<p>To get PowerShell Notebooks up &amp; running you&#8217;ll need to install the <code>powershell_kernel</code> package. To do that, you&#8217;ll need to go through the following steps:</p>



<ol class="wp-block-list"><li>Back inside that Notebook, click on the &#8220;<strong>Manage Packages</strong>&#8221; button (if the &#8220;Manage Packages&#8221; button isn&#8217;t being displayed, just choose the &#8220;Python 3&#8221; kernel or close the Notebook and re-open it)</li><li>When the fly-out menu pops out from the right, click in &#8220;<strong>Add new</strong>&#8220;</li><li>In the search box type in <strong>powershell_kernel</strong></li><li>Click &#8220;<strong>Search</strong>&#8220;</li><li>Once the powershell_kernel is found, click &#8220;<strong>Install</strong>&#8220;</li></ol>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="856" height="552" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN2.png" alt="" class="wp-image-3446" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN2.png 856w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN2-300x193.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN2-768x495.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></figure>



<p> After all that, the powershell_kernel should finish installing rather quickly.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="985" height="397" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN3.png" alt="" class="wp-image-3447" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN3.png 985w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN3-300x121.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN3-768x310.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></figure>



<p>Once the install completes, go back to your Notebook and switch the Kernel dropdown to PowerShell if it isn’t already. &nbsp;Next, a new Code cell and start adding your PowerShell code to your Notebook.</p>



<p>Note: Sometimes the dropdown gets stuck on Changing Kernel, if this happens to you, the easiest thing may be to close out of that Notebook and start a new one.</p>



<h2 class="wp-block-heading">Make sure to install the PowerShell extension</h2>



<p>In order to get all the nice intellisense and tab completion features of the PowerShell language inside your PowerShell Notebooks, be sure to install the PowerShell extension from the Azure Data Studio marketplace.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1124" height="390" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN4.png" alt="" class="wp-image-3448" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN4.png 1124w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN4-300x104.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN4-768x266.png 768w" sizes="(max-width: 1124px) 100vw, 1124px" /></figure>



<p>Once you have your command ready to go, just hit the &#8220;Run cell&#8221; button and you&#8217;ll see your results returned in that same cell. When you save your Notebook file, you can choose to clear out these results or leave them in there, so the next person knows what the results are supposed to look like. Or, you just know that yes your code did work the last time you ran it</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1036" height="397" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN5.png" alt="" class="wp-image-3449" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN5.png 1036w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN5-300x115.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN5-768x294.png 768w" sizes="(max-width: 1036px) 100vw, 1036px" /></figure>



<p>Now before you get rocking &amp; rolling with PowerShell Notebooks there are a few things you should know.</p>



<ol class="wp-block-list"><li>PowerShell Notebooks run Windows PowerShell on Windows, and PowerShell Core on macOS &amp; Linux (this was just the easiest / fastest kernel to get working)</li><li>[For now] when you run a code cell in a PowerShell Notebook it runs the code by passing whatever code you gave it to PowerShell.exe as a scriptblock and also passes the -NoProfile switch. This makes sense to do as a default, but I suspect some customers will want an option to turn off -NoProfile for some of their PowerShell Notebooks</li><li>You <strong>can</strong> set a variable in one cell, and pull the values out of it in a different cell. Until you close your Notebook or Azure Data Studio, you can reuse variables from one code cell to another.  Each code cell is participating in the same common execution of PowerShell</li></ol>



<p>So that&#8217;s all well and good. But if you&#8217;ve read many of my blogs or articles over the years, you know I still have one burning question: Will PowerShell Notebooks work with Out-GridView?</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="969" height="601" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN7.png" alt="" class="wp-image-3451" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN7.png 969w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN7-300x186.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN7-768x476.png 768w" sizes="(max-width: 969px) 100vw, 969px" /></figure>



<p>I am happy to tell you that, if you&#8217;re on Windows, yes, PowerShell Notebooks does work with Out-GridView!</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="957" height="316" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN8.png" alt="" class="wp-image-3452" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN8.png 957w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN8-300x99.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0022_PowerShellN8-768x254.png 768w" sizes="(max-width: 957px) 100vw, 957px" /></figure>



<p>That&#8217;s pretty much everything I have to show you about PowerShell Notebooks for today. There are a few other features I will call out in a future post or two, but this should be enough to get you started with PowerShell Notebooks. </p>



<p>I do have a few <a href="https://github.com/microsoft/azuredatastudio/issues/created_by/SQLvariant">open enhancement requests</a> in the Azure Data Studio repo with ideas of how to make PowerShell Notebooks even better. Please have a look comment with what you plan to do with PowerShell Notebooks you build?</p>The post <a href="https://sqlvariant.com/2019/11/powershell-notebooks-are-available-in-azure-data-studio/">PowerShell Notebooks are Available in Azure Data Studio</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/11/powershell-notebooks-are-available-in-azure-data-studio/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3453</post-id>	</item>
		<item>
		<title>Get the Governance Data You Need Out of Your Power BI Gateways with PowerShell</title>
		<link>https://sqlvariant.com/2019/10/get-the-governance-data-you-need-out-of-your-power-bi-gateways-with-powershell/</link>
					<comments>https://sqlvariant.com/2019/10/get-the-governance-data-you-need-out-of-your-power-bi-gateways-with-powershell/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 15 Oct 2019 12:16:17 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3456</guid>

					<description><![CDATA[<p>OK, before anyone yells at me: Yes, I know the On-Premises Data Gateways are now part of Power Platform, not just Power BI. I learned how to do everything in this post because of my work with Power BI, so that&#8217;s why I named the post this way. The Power Platform team has released a [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/10/get-the-governance-data-you-need-out-of-your-power-bi-gateways-with-powershell/">Get the Governance Data You Need Out of Your Power BI Gateways with PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>OK, before anyone yells at me: Yes, I know the On-Premises Data Gateways are now part of Power Platform, not just Power BI.  I learned how to do everything in this post because of my work with Power BI, so that&#8217;s why I named the post this way.</p>



<p>The Power Platform team has <a href="https://powerbi.microsoft.com/en-us/blog/on-premises-data-gateway-management-via-powershell-public-preview/">released a preview</a> of their PowerShell module for managing your Data Gateways. You can install it now from the PowerShell Gallery using PowerShell Core. I&#8217;ve been working with the cmdlets for a few weeks now, and even contributed code to enhance two of the cmdlets.</p>



<p><span style="font-family: Lucida Console; font-size: 12pt;"><span style="color: blue;">Install-Module </span><span style="color: blueviolet;">DataGateway<br></span></span></p>



<h2 class="wp-block-heading">It&#8217;s PowerShell Core <span style="text-decoration: underline;">Only</span></h2>



<p>You read that right, and it&#8217;s the first module I can remember working with which is PowerShell Core only. Before you go trying to install the DataGateway module on Windows PowerShell, just open PowerShell Core instead. If you don&#8217;t already have it, you can find instructions for how to install PowerShell Core <a href="https://docs.microsoft.com/powershell/scripting/install/installing-powershell?view=powershell-6">here</a>.</p>



<p>If you&#8217;re running VS Code or Azure Data Studio on Windows, you might need to switch the version of PowerShell you&#8217;re running in order to use this module.  See <a href="https://sqlvariant.com/2019/09/quick-blog-run-powershell-core-from-the-powershell-integrated-console/">this short post</a> on how easy it is to do that.</p>



<h2 class="wp-block-heading">What Can the DataGateway Module do?</h2>



<p>The DataGateway module comes with 23 cmdlets. So far, the ones I find myself using the most are <span style="color: blue; font-family: Lucida Console; font-size: 11pt;">Get-DataGatewayCluster</span>, <span style="color: blue; font-family: Lucida Console; font-size: 11pt;">Get-DataGatewayClusterDataSource</span>, &amp; <span style="color: blue; font-family: Lucida Console; font-size: 11pt;">Get-DataGatewayClusterDataSourceUser</span> cmdlets. (Those last two are the ones I did a very small amount of work on to make more user friendly.) You can pipe them all together and get the data source &amp; permissions data out of your On-Premises Data Gateway connections. This makes it very simple to gather the data you need for an audit, or other governance needs.</p>



<p>Other important questions these cmdlets can answer are things like:</p>



<ul class="wp-block-list"><li>How many On-Premises Data Gateways do I even have in my organization?</li><li>How many of those are Enterprise vs. Personal Gateway.</li><li>How many member-servers do I have in a Cluster?</li><li>What version of the Data Gateway software are these machines running?</li></ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="812" height="463" src="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0049_GettheGover1.png" alt="" class="wp-image-3455" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/100319_0049_GettheGover1.png 812w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0049_GettheGover1-300x171.png 300w, https://sqlvariant.com/wp-content/uploads/2019/10/100319_0049_GettheGover1-768x438.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></figure>



<p>I have included <a href="https://gist.github.com/SQLvariant/fd3b77e597fc6e13118636bf0d682383">a Gist</a> with some of the data I&#8217;m collecting out of the <br>On-Premises Data Gateways with PowerShell. I hope you find them useful</p>



<script src="https://gist.github.com/SQLvariant/fd3b77e597fc6e13118636bf0d682383.js"></script>



<p>NOTE: I am a Power BI Admin and am an Administrator on every On-Premises Data Gateway I have run these cmdlets against. If you&#8217;re a Power BI Admin but not an Administrator on an On-Premises Data Gateway, you may not get all the results you need. Furthermore, <em>in my testing</em>, it seems like you need to be at least a User each of the Data Sources in order to retrieve it. Two things I want to stress about that last sentence: 1) My testing has been limited to only two tenants to which I have admin access. 2) Again, these cmdlets are in preview, so the behavior may change as more work gets done on finalizing them.</p>



<p>It’s great to see the Power Platform team joining the other product teams which allow you to easily manage and report on your assets, with PowerShell.  &#x1f44d;</p>The post <a href="https://sqlvariant.com/2019/10/get-the-governance-data-you-need-out-of-your-power-bi-gateways-with-powershell/">Get the Governance Data You Need Out of Your Power BI Gateways with PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/10/get-the-governance-data-you-need-out-of-your-power-bi-gateways-with-powershell/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3456</post-id>	</item>
		<item>
		<title>Webinar: Tips &#038; Tricks for the PowerShell extension in Azure Data Studio &#8211; October 8th at 3 PM EDT (GMT -4)</title>
		<link>https://sqlvariant.com/2019/10/webinar-tips-tricks-for-the-powershell-extension-in-azure-data-studio-october-8th-at-3-pm-edt-gmt-4/</link>
					<comments>https://sqlvariant.com/2019/10/webinar-tips-tricks-for-the-powershell-extension-in-azure-data-studio-october-8th-at-3-pm-edt-gmt-4/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 08 Oct 2019 16:14:36 +0000</pubDate>
				<category><![CDATA[Azure Data Studio]]></category>
		<category><![CDATA[PowerShell extension]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3474</guid>

					<description><![CDATA[<p>Tips &#38; Tricks for the PowerShell extension in Azure Data Studio Install Azure Data Studio PowerShell extension for Azure Data Studio On Tuesday October 8th at 3 PM EDT (GMT -4) the PowerShell Virtual Group of PASS will host Tyler Leonhardt presenting: Tips &#38; Tricks for the PowerShell extension in Azure Data Studio. Tips &#38; [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/10/webinar-tips-tricks-for-the-powershell-extension-in-azure-data-studio-october-8th-at-3-pm-edt-gmt-4/">Webinar: Tips & Tricks for the PowerShell extension in Azure Data Studio – October 8th at 3 PM EDT (GMT -4)</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<ul class="wp-block-list"><li>Tips &amp; Tricks for the      PowerShell extension in Azure Data Studio</li><li>Install <a href="http://aka.ms/getazuredatastudio">Azure Data Studio</a></li><li><a href="https://docs.microsoft.com/sql/azure-data-studio/powershell-extension">PowerShell extension</a> for Azure Data Studio</li></ul>



<p>On Tuesday October 8<sup>th</sup> at 3 PM EDT (GMT -4) the PowerShell Virtual
Group of PASS will host Tyler Leonhardt presenting: Tips &amp; Tricks for the
PowerShell extension in Azure Data Studio.</p>



<h2 class="wp-block-heading">Tips &amp; Tricks for the PowerShell extension in Azure Data Studio</h2>



<p>The PowerShell extension in Azure Data Studio now provides the
best-ever experience for developing PowerShell code against your SQL Server
instances. You can run a PowerShell script against your SQL Server instance and
see the changes to that instance in Object Explore or via T-SQL query, all in
the same editor. Come learn from Tyler Leonhardt how to make your PowerShell
development experience even easier.</p>



<h2 class="wp-block-heading">Tyler Leonhardt</h2>



<p>Tyler is a developer on the PowerShell team at Microsoft. In
addition to PowerShell itself, he works on the Visual Studio Code extension for
PowerShell, helped ship the PowerShell experience in Azure Functions v2, and
more! He also live streams coding at work. He&#8217;s a developer experience nut,
loves coffee and loves to customize mechanical keyboards.</p>



<h3 class="wp-block-heading">Registration Links</h3>



<p>Use this link to register for the webinar with your PASS account. (Scroll
down and click the Register button) <a href="http://powershell.pass.org/Home.aspx?EventID=14350">http://powershell.pass.org/Home.aspx?EventID=14350</a></p>



<h2 class="wp-block-heading">PowerShell extension for Azure Data Studio</h2>



<p>If you haven&#8217;t started using <a href="http://aka.ms/getazuredatastudio">Azure Data Studio</a> yet, you should! The new tool is a companion to SSMS and is an Open Source Project based on VS Code, that anyone can contribute to. The best part is, the PowerShell extension from VS Code has been added to the Azure Data Studio marketplace and will receive regular updates as the version in VS Code gets updated. This new option is by far the best experience for developing SQL PowerShell code. <a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/powershell-extension">https://docs.microsoft.com/en-us/sql/azure-data-studio/powershell-extension</a></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1280" height="1004" src="https://sqlvariant.com/wp-content/uploads/2019/10/PowerShellextensionInADS2019-10-08-1280x1004.jpg" alt="" class="wp-image-3476" srcset="https://sqlvariant.com/wp-content/uploads/2019/10/PowerShellextensionInADS2019-10-08-1280x1004.jpg 1280w, https://sqlvariant.com/wp-content/uploads/2019/10/PowerShellextensionInADS2019-10-08-300x235.jpg 300w, https://sqlvariant.com/wp-content/uploads/2019/10/PowerShellextensionInADS2019-10-08-768x603.jpg 768w, https://sqlvariant.com/wp-content/uploads/2019/10/PowerShellextensionInADS2019-10-08.jpg 2005w" sizes="(max-width: 1280px) 100vw, 1280px" /></figure>



<p>I will update this post with a link to the recording once it&#8217;s posted.</p>The post <a href="https://sqlvariant.com/2019/10/webinar-tips-tricks-for-the-powershell-extension-in-azure-data-studio-october-8th-at-3-pm-edt-gmt-4/">Webinar: Tips & Tricks for the PowerShell extension in Azure Data Studio – October 8th at 3 PM EDT (GMT -4)</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/10/webinar-tips-tricks-for-the-powershell-extension-in-azure-data-studio-october-8th-at-3-pm-edt-gmt-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3474</post-id>	</item>
		<item>
		<title>Download Power BI Audit Logs with the New Get-PowerBIActivityEvent cmdlet</title>
		<link>https://sqlvariant.com/2019/09/download-power-bi-audit-logs-with-the-new-get-powerbiactivityevents-cmdlet/</link>
					<comments>https://sqlvariant.com/2019/09/download-power-bi-audit-logs-with-the-new-get-powerbiactivityevents-cmdlet/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Mon, 30 Sep 2019 15:25:29 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3414</guid>

					<description><![CDATA[<p>Earlier this week a new version of the MicrosoftPowerBIMgmt module was made available on the PowerShell Gallery. Two new cmdlets were included in the module Remove-PowerBIReport and Get-PowerBIActivityEvent. The Remove-PowerBIReport cmdlet was written by my coworker [and new best friend] Caroline Bell ( twitter ). Let&#8217;s take a look at both of these new cmdlets. [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/09/download-power-bi-audit-logs-with-the-new-get-powerbiactivityevents-cmdlet/">Download Power BI Audit Logs with the New Get-PowerBIActivityEvent cmdlet</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>Earlier this week a new version of the MicrosoftPowerBIMgmt module was made available on the PowerShell Gallery. Two new cmdlets were included in the module <span style="color: blue; font-family: Consolas; font-size: 11pt;">Remove-PowerBIReport</span> and <span style="color: blue; font-family: Consolas; font-size: 11pt;">Get-PowerBIActivityEvent</span>. The <span style="color: blue; font-family: Consolas; font-size: 11pt;">Remove-PowerBIReport</span> cmdlet was written by my coworker [and new best friend] Caroline Bell ( <a href="https://twitter.com/CarolineElsBell">twitter </a>). Let&#8217;s take a look at both of these new cmdlets.<span style="color: #333333; font-family: Consolas; font-size: 11pt;"><br></span></p>



<h2 class="wp-block-heading">Remove-PowerBIReport</h2>



<p>The <span style="color: blue; font-family: Consolas; font-size: 11pt;">Remove-PowerBIReport</span> cmdlet can come in handy in CI/CD scenarios with Power BI. Let&#8217;s say you have copied a Report from a QA Workspace over to a Production Workspace, and chose not to overwrite the Dataset in the Production Workspace. (For clarity: In this scenario, the Dataset in the QA Workspace is connected to a QA database, while the Dataset in the Prod Workspace is connected to a Production database. And you want it to stay that way). This is a great way to test your Reports before you release them for everyone to see, but you&#8217;re left with the old version of the Report in that Production Workspace when you&#8217;re done. The <span style="color: blue; font-family: Consolas; font-size: 11pt;">Remove-PowerBIReport</span> cmdlet can remove the old version of that(those) Report(s) in a Production Workspace after you have copied over the version from QA.</p>



<p>I have posted <a href="https://gist.github.com/SQLvariant/6018cf21c9a82c5757d51bed0b498523">a Gist</a> to demonstrate this scenario &amp; technique, but I haven&#8217;t had time to blog about it just yet. Maybe in a week or two.</p>



<h2 class="wp-block-heading">Get-PowerBIActivityEvent</h2>



<p>You can now download Power BI Audit Logs using the new <span style="color: blue; font-family: Consolas; font-size: 11pt;">Get-PowerBIActivityEvent</span> cmdet. This cmdlet saves you from having to be granted &#8220;<span style="color: #171717; font-family: Segoe UI; background-color: white;"><em>Audit Logs or View-Only Audit Logs role in Exchange Online</em></span>&#8221; permissions in Office 365. Instead, as long as you&#8217;re a Power BI Admin, you will be able to retrieve the audit logs as-is. This can be extremely useful for Power BI Governance, because being granted the View-Only Audit Logs role gives you access to <u>all audit records across Office 365</u>. Some organizations will not grant that capability to everyone who is a Power BI Admin.</p>



<p>The <span style="color: blue; font-family: Consolas; font-size: 11pt;">Get-PowerBIActivityEvent</span> cmdlet is a little quirky (at least, to me it is). But hey, this is the first version of the cmdlet, so let&#8217;s file items on GitHub with how it could be improved. In the meantime, let&#8217;s check out how to use it, and why it&#8217;s better than the Search-UnifiedAuditLog cmdlet in the long run.</p>



<p>Let&#8217;s go through some <strong>limitations</strong>:</p>



<ol class="wp-block-list"><li>You must be granted the Power BI Admin role.</li><li>You must select a timeframe within a single day, and by day, I mean date. You cannot pick a 24-hour period which spans two different days. You can&#8217;t even pick a 1-hour period which spans two days.</li><li>You have to use a very specific date format. Quoting from the Help files it says: &#8220;<em>It should be in UTC format and ISO 8601 compliant</em>&#8220;.</li><li>It only outputs the results as either a JSON String or a JSON object.</li></ol>



<p>The <strong>good</strong> news?</p>



<ol class="wp-block-list"><li>I took care of limitations 2 &amp; 3 in the above list for you.</li><li>The Get-PowerBIActivityEvent cmdlet is not limited to outputting only 5,000 rows, or so I&#8217;m told. I don&#8217;t actually have a tenant with over 5,000 Power BI Audit Log Events in a single day, so I can&#8217;t verify.</li><li>When you choose to have the output as a JSON String, it&#8217;s farily easy to get the file imported into Power BI Desktop. Maybe 4 or 5 steps? Hopefully, my friend Reza Rad ( <a href="https://radacad.com/blog">blog</a> | <a href="https://twitter.com/Rad_Reza">twitter</a> )  can chime in with an easy to follow blog post on how to do that.</li></ol>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="814" height="280" src="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2152_DownloadPow1.png" alt="" class="wp-image-3413" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2152_DownloadPow1.png 814w, https://sqlvariant.com/wp-content/uploads/2019/09/092619_2152_DownloadPow1-300x103.png 300w, https://sqlvariant.com/wp-content/uploads/2019/09/092619_2152_DownloadPow1-768x264.png 768w" sizes="(max-width: 814px) 100vw, 814px" /></figure>



<p>I have put together two options for you and posted them in <a href="https://gist.github.com/SQLvariant/ad1e4a52be3e57531e1093566b131ed1">a Gist</a>. The <a href="https://gist.github.com/SQLvariant/ad1e4a52be3e57531e1093566b131ed1#file-export_pbiauditlogs_todailyjson-ps1">first option</a> goes through the last 90 days of your Power BI Audit Log and creates a separate .json file for each day. The <a href="https://gist.github.com/SQLvariant/ad1e4a52be3e57531e1093566b131ed1#file-export_pbiauditlogs_tojson-ps1">second option</a> goes through the same 90 days of your Power BI Audit Logs, but this time it puts everything into a single file. Pick the approach that works best for you.</p>



<script src="https://gist.github.com/SQLvariant/ad1e4a52be3e57531e1093566b131ed1.js"></script>The post <a href="https://sqlvariant.com/2019/09/download-power-bi-audit-logs-with-the-new-get-powerbiactivityevents-cmdlet/">Download Power BI Audit Logs with the New Get-PowerBIActivityEvent cmdlet</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/09/download-power-bi-audit-logs-with-the-new-get-powerbiactivityevents-cmdlet/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3414</post-id>	</item>
		<item>
		<title>Quick Blog: Run PowerShell Core from the PowerShell Integrated Console</title>
		<link>https://sqlvariant.com/2019/09/quick-blog-run-powershell-core-from-the-powershell-integrated-console/</link>
					<comments>https://sqlvariant.com/2019/09/quick-blog-run-powershell-core-from-the-powershell-integrated-console/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Fri, 27 Sep 2019 00:35:14 +0000</pubDate>
				<category><![CDATA[Azure Data Studio]]></category>
		<category><![CDATA[PowerShell Core]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3427</guid>

					<description><![CDATA[<p>Run whichever version of PowerShell Core from the PowerShell Integrated Console in Azure Data Studio and VS Code.  Even on Windows.</p>
The post <a href="https://sqlvariant.com/2019/09/quick-blog-run-powershell-core-from-the-powershell-integrated-console/">Quick Blog: Run PowerShell Core from the PowerShell Integrated Console</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>You can run PowerShell Core from the PowerShell Integrated Console in VS Code &amp; Azure Data Studio, even on Windows. It&#8217;s amazingly easy to switch back and forth.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="826" height="182" src="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu1.png" alt="" class="wp-image-3424" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu1.png 826w, https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu1-300x66.png 300w, https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu1-768x169.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></figure>



<p>To make the switch, just hit Ctrl + Shift + P to bring up the Command Pallette. Once it&#8217;s up, type `Show Session Menu` and then select that from the drop-down.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="835" height="229" src="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu2.png" alt="" class="wp-image-3425" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu2.png 835w, https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu2-300x82.png 300w, https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu2-768x211.png 768w" sizes="(max-width: 835px) 100vw, 835px" /></figure>



<p>Once you&#8217;ve selected that, a new menu-list will appear. Next, pick which version of PowerShell Core you want to run. (You can even run one of the Preview versions of PowerShell Core, download <a href="https://github.com/PowerShell/PowerShell/releases/">from here</a>.)</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="633" height="290" src="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu3.png" alt="" class="wp-image-3426" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu3.png 633w, https://sqlvariant.com/wp-content/uploads/2019/09/092619_2350_QuickBlogRu3-300x137.png 300w" sizes="(max-width: 633px) 100vw, 633px" /></figure>



<p>After this, the PowerShell session currently running in your PowerShell Integrated Console will close; and a new PowerShell session running PowerShell Core will start with your selected version of PowerShell.</p>



<p>Yep, that&#8217;s all there is to it. <br>It&#8217;s easy, it&#8217;s peasy.  And I hear, it&#8217;s even lemon-squeezey &#x1f603;<br>Cheers!</p>The post <a href="https://sqlvariant.com/2019/09/quick-blog-run-powershell-core-from-the-powershell-integrated-console/">Quick Blog: Run PowerShell Core from the PowerShell Integrated Console</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/09/quick-blog-run-powershell-core-from-the-powershell-integrated-console/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3427</post-id>	</item>
		<item>
		<title>Automate Your SQL Notebooks with Two New Options</title>
		<link>https://sqlvariant.com/2019/09/automate-your-sql-notebooks-with-two-new-options/</link>
					<comments>https://sqlvariant.com/2019/09/automate-your-sql-notebooks-with-two-new-options/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Mon, 23 Sep 2019 13:10:02 +0000</pubDate>
				<category><![CDATA[Azure Data Studio]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL Agent Jobs]]></category>
		<category><![CDATA[SQL Notebooks]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3401</guid>

					<description><![CDATA[<p>There are two new options for automating your SQL Notebooks with your SQL Servers. Earlier this month, the Insiders build of Azure Data Studio received the ability to add SQL Notebooks in SQL Agent. This past Friday (September 20th, 2019) a new version of the SqlServer PowerShell module was posted to the Gallery, with a [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/09/automate-your-sql-notebooks-with-two-new-options/">Automate Your SQL Notebooks with Two New Options</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>There are two new options for automating your SQL Notebooks with your SQL Servers. Earlier this month, the Insiders build of Azure Data Studio received the ability to add SQL Notebooks in SQL Agent. This past Friday (September 20<sup>th</sup>, 2019) a new version of the SqlServer PowerShell module was posted to the <a href="https://www.powershellgallery.com/packages/SqlServer/21.1.18179">Gallery</a>, with a new Invoke-SqlNotebook cmdlet.</p>



<h2 class="wp-block-heading">Scheduling SQL Notebooks in Azure Data Studio</h2>



<p>Let&#8217;s start by taking a look at when you click that &#8220;Schedule Notebook&#8221; button in Azure Data Studio; which brings up a dialog asking you which instance of SQL Server you want to schedule this SQL Notebook on. After that, you are present with a side panel asking you some specifics about how you want to configure your SQL Notebook to run.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="620" height="181" src="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou1.png" alt="" class="wp-image-3396" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou1.png 620w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou1-300x88.png 300w" sizes="(max-width: 620px) 100vw, 620px" /></figure>



<p>You&#8217;re presented with a few options and this varies a little from your typical SQL Agent Job, so let&#8217;s dig in a little. First, you&#8217;ll see an option for the Storage Database, this is a key part which is new. When you choose your Storage Database you&#8217;re choosing where SQL Server will store the SQL Notebook that you&#8217;re currently scheduling. You&#8217;re also choosing where it will store the results from that SQL Notebook every time you run it.</p>



<p>The next option, Execution Database, is where the SQL Notebook will start running from. In this case, I&#8217;m choosing to start BPCheck.ipynb (<a href="http://aka.ms/BPCheck">Best Practices Check </a>from the SQL Tiger Team) in the master database. This is pretty similar to what you would do when scheduling any T-SQL script. The rest of the options are pretty standard too, so I won&#8217;t go through those.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="499" height="389" src="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou2.png" alt="" class="wp-image-3397" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou2.png 499w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou2-300x234.png 300w" sizes="(max-width: 499px) 100vw, 499px" /></figure>



<p>Once you get through the step above, you should have two new tables in whichever database you choose as your Storage Database. You should also have a new SQL Agent Job. You&#8217;ll be able to see there is a new tab under [Manage &gt;] SQL Agent, called Notebook Jobs. Under there you&#8217;ll find your newly scheduled SQL Notebook (or, unscheduled in my case).</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1280" height="389" src="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou3-1280x389.png" alt="" class="wp-image-3398" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou3-1280x389.png 1280w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou3-300x91.png 300w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou3-768x233.png 768w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou3.png 1327w" sizes="(max-width: 1280px) 100vw, 1280px" /></figure>



<p>OK, enough about the GUI, let&#8217;s talk about the new Invoke-SqlNotebook cmdlet</p>



<h2 class="wp-block-heading">Invoke-SqlNotebook cmdlet</h2>



<p>I have best test-driving the Invoke-SqlNotebook cmdlet for a while now and I like it. Granted, I do a ton more Power BI / Data Visualization / Data Lake work than I do relational SQL Server these days; but I have run the cmdlet at least a hundred times already.</p>



<p>First up, let&#8217;s take the Invoke-SqlNotebook cmdlet for the most basic drive possible. We&#8217;ll give it only 3 input parameters: -ServerInstance, -Database, &amp; the name of SQL Notebook file we want to run. Since we didn&#8217;t specify anything for the -OutputFile parameter, the cmdlet will go ahead and build an output file with the same name as the SQL Notebook we told it to run, and it will append &#8220;_out&#8221; to the end of the name. (I&#8217;ll cover some additional options for file naming later).</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1236" height="590" src="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou4.png" alt="" class="wp-image-3399" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou4.png 1236w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou4-300x143.png 300w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou4-768x367.png 768w" sizes="(max-width: 1236px) 100vw, 1236px" /></figure>



<p>Once the output file is generated, if you have the PowerShell extension loaded in Azure Data Studio, you can open the output file by simply saying Open-EditorFile and telling it the name of the file. Note: on my machine it usually takes about 30 seconds to open that results-notebook.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="704" height="426" src="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou5.png" alt="" class="wp-image-3400" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou5.png 704w, https://sqlvariant.com/wp-content/uploads/2019/09/092319_1215_AutomateYou5-300x182.png 300w" sizes="(max-width: 704px) 100vw, 704px" /></figure>



<p>As you scroll through that new file, you&#8217;ll see all the results from all the queries which were run. This is great because you can now easily save the history of your SQL Notebooks and version control the results separately from the code itself.</p>



<p>If you have a notebook that you need to run on multiple Instance or multiple Database, and have the results file named to indicate where it was run against, I have some code you can use to make that happen.  I have <a href="https://gist.github.com/SQLvariant/15cb08237a998e6fbf50ec6eecc6988c">posted a gist</a> with some code I whipped up while testing the cmdlet.</p>



<script src="https://gist.github.com/SQLvariant/15cb08237a998e6fbf50ec6eecc6988c.js"></script>



<p>In this example, I&#8217;m using <code>$($_.NetName)</code> to grab the name of the SQL Server instance from the pipeline and add it to the name of the name of the <code>-OutputFile</code> that I&#8217;m building.  I also went ahead and grabbad the current datetime and added it to the file name as well.  You could replace the datetime or add something else, like the name of database you&#8217;re running the notebook against. </p>



<p>NOTE: Realistically, the <code>$datetime = Get-Date -Format yyyyMMddhhmm</code> portion of the code should be inside the <code>foreach</code> loop with the call to the <code>Invoke-SqlNotebook</code> cmdlet.  I placed it at the top of this example just to make it a litle more readable.</p>



<p>That&#8217;s about all I have time to show off today.  Please let me know what you plan to do with the new SQL Notebook automation capabilities?  &#x1f603;</p>The post <a href="https://sqlvariant.com/2019/09/automate-your-sql-notebooks-with-two-new-options/">Automate Your SQL Notebooks with Two New Options</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/09/automate-your-sql-notebooks-with-two-new-options/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3401</post-id>	</item>
		<item>
		<title>Quick Blog: Making the Power BI PowerShell cmdlets easier to use</title>
		<link>https://sqlvariant.com/2019/09/quick-blog-making-the-power-bi-powershell-cmdlets-easier-to-use-2/</link>
					<comments>https://sqlvariant.com/2019/09/quick-blog-making-the-power-bi-powershell-cmdlets-easier-to-use-2/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Thu, 19 Sep 2019 23:32:34 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3388</guid>

					<description><![CDATA[<p>One of the top reasons I love PowerShell so much is that from the beginning, it was designed to let you, yes you, make it run better for the way you work. In fact, this post from Dmitry&#8216;freaking&#8217; Sotnikov himself (&#160;blog &#124;&#160;twitter ) was probably a turning point, or at least turned up the intensity [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/09/quick-blog-making-the-power-bi-powershell-cmdlets-easier-to-use-2/">Quick Blog: Making the Power BI PowerShell cmdlets easier to use</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>One of the top reasons I love PowerShell so much is that from the beginning, it was designed to let you, yes <span style="text-decoration: underline;"><strong>you</strong></span>, make it run better for the way you work. In fact, <a href="https://dmitrysotnikov.wordpress.com/2010/01/19/export-csv-append/">this post</a> from <strong>Dmitry</strong><br><em>&#8216;freaking&#8217; </em><strong>Sotnikov</strong> himself (<span style="color: #777777;"><span style="font-family: Times New Roman;">&nbsp;<a href="http://dmitrysotnikov.wordpress.com/"><span style="color: #3b8dbd;">blog</span></a></span> |&nbsp;</span><a href="http://twitter.com/DSotnikov"><span style="color: #3b8dbd; font-family: Times New Roman;">twitter</span></a> ) was probably a turning point, or at least turned up the intensity of why I love PowerShell. There are lots of ways you can take control and make PowerShell easier for you and your co-workers or friends. I won&#8217;t list all the options today; I&#8217;ll just tell you about one of my favorites: Argument Completers.</p>



<p><img loading="lazy" decoding="async" width="220" height="220" class=" wp-image-3379 alignright" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/09/091819_1543_QuickBlogMa1-150x150.png" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/091819_1543_QuickBlogMa1-150x150.png 150w, https://sqlvariant.com/wp-content/uploads/2019/09/091819_1543_QuickBlogMa1-160x160.png 160w" sizes="(max-width: 220px) 100vw, 220px" />Before I go any farther, shout out to Rohn Edwards ( <a href="https://rohnspowershellblog.wordpress.com/2017/01/17/completing-parameter-values-with-other-parameter-values/">blog</a> | <a href="https://twitter.com/magicrohn">twitter</a> ) for his session at PowerShell Summit which got me started with this. (And then being polite enough to DM back-n-forth with me for like three hours straight while I struggled to get my head around how to make them happen.)</p>



<p>The PowerShell cmdlets for Power BI are <strong>extremely useful</strong>, but they do have some quirks. I don&#8217;t mind the quirks for two reasons:</p>



<ol class="wp-block-list"><li>the cmdlets are open source so we can submit pull requests to fix the quirks.</li><li>back to the whole point of this blog, PowerShell lets you make it better, all by yourself!</li></ol>



<p>If you&#8217;re trying to use the PowerShell cmdlets for Power BI you may have noticed that the <span style="color: blue; font-family: Lucida Console; font-size: 9pt;">Get-PowerBIReport</span> cmdlet is a little &#8216;<em>odd&#8217;</em>. It allows you to pipe input in from the <span style="color: blue; font-family: Lucida Console; font-size: 9pt;">Get-PowerBIWorkspace</span> cmdlet, which is great, we like that. However, if you to get a list of reports inside a workspace, and you only want to use the <span style="color: blue; font-family: Lucida Console; font-size: 9pt;">Get-PowerBIReport</span> cmdlet, you have to know the Id (a GUID) or have a Workspace object. Neither of those are easy to type out, which is why I whipped up a few Argument Completers instead.</p>



<p>I have the code below in my PowerShell profile so that it&#8217;s ready every time I open a PowerShell session. (read more about how to do that <a href="sqlvariant.com/2011/01/powershell-week-at-sql-university-post-4/">here</a>)<span style="color: blue; font-family: Lucida Console; font-size: 9pt;"><br></span></p>



<script src="https://gist.github.com/SQLvariant/5d056180ce00e220d55c1ef6388ffd3a.js"></script>



<div class="wp-block-image"><figure class="aligncenter"><figure><img loading="lazy" decoding="async" width="667" height="152" class="wp-image-3368" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/09/091819_1531_QuickBlogMa2.png" srcset="https://sqlvariant.com/wp-content/uploads/2019/09/091819_1531_QuickBlogMa2.png 667w, https://sqlvariant.com/wp-content/uploads/2019/09/091819_1531_QuickBlogMa2-300x68.png 300w" sizes="(max-width: 667px) 100vw, 667px" /></figure></figure></div>



<p>Once that&#8217;s loaded up, PowerShell will give me a list of Workspaces that I have access to. This makes finding and working with the reports much smoother.</p>



<p>I have 4 other argument completers for the Power BI PowerShell cmdlets in <a href="https://gist.github.com/SQLvariant/d9e34d09364ccc859c4f51cb6e512cd6">this gist</a> that I think everyone will find handy. Hopefully we can get something like this added to the Power BI modules themselves so you do have to add this on your own. But until then, I hope this makes using the Power BI PowerShell cmdlets much easier for you</p>



<p>BTW, big shout-out to my friend and coworker Caroline Bell (<a href="https://twitter.com/CarolineElsBell">twitter</a>) for reading the Docs files to me about why I couldn&#8217;t get this to work the first time I tried</p>The post <a href="https://sqlvariant.com/2019/09/quick-blog-making-the-power-bi-powershell-cmdlets-easier-to-use-2/">Quick Blog: Making the Power BI PowerShell cmdlets easier to use</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/09/quick-blog-making-the-power-bi-powershell-cmdlets-easier-to-use-2/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3388</post-id>	</item>
		<item>
		<title>Quick Blog: Clone Power BI Workspace Permissions</title>
		<link>https://sqlvariant.com/2019/09/quick-blog-clone-power-bi-workspace-permissions/</link>
					<comments>https://sqlvariant.com/2019/09/quick-blog-clone-power-bi-workspace-permissions/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 04 Sep 2019 19:40:47 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3349</guid>

					<description><![CDATA[<p>However, one detail they left out of that post is how to clone the users &#038; groups, and their respective permissions from one Workspace to another. It's a pretty simple thing to do, with one not-completely-obvious quirk to it.</p>
The post <a href="https://sqlvariant.com/2019/09/quick-blog-clone-power-bi-workspace-permissions/">Quick Blog: Clone Power BI Workspace Permissions</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" align="right" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/08/083119_1653_QuickBlogCl1.png">A task I&#8217;ve had to do a countless number of times is to setup a new Workspace in the Power BI service, and then copy all (or nearly all) the contents of an existing Workspace over to that new Workspace. This is such a common task that the Power BI team went ahead and wrote a blog post on &#8220;<a href="https://powerbi.microsoft.com/en-us/blog/duplicating-workspaces-by-using-power-bi-cmdlets/">Duplicating workspaces by using Power BI cmdlets</a>&#8221; earlier this year.</p>
<p>However, one detail they left out of that post is how to clone the users &amp; groups, and their respective permissions from one Workspace to another. It&#8217;s a pretty simple thing to do, with one not-completely-obvious quirk to it.</p>
<p style="background: #fffffe;">Currently, you have to be a Power BI Admin in order to retrieve the list of users/groups &amp; their permission levels. If you are one, the rest is pretty straight forward. Just make sure you have the <a href="https://www.powershellgallery.com/packages/MicrosoftPowerBIMgmt/">MicrosoftPowerBIMgmt</a> module installed, run <span style="color: blue; font-family: Consolas; font-size: 9pt;">Login-PowerBI</span>, then run the script below.<span style="color: #333333; font-family: Consolas; font-size: 9pt;"><br></span></p>


<script src="https://gist.github.com/SQLvariant/f4b2dea2fd42de31395317bafdb17c03.js"></script>



<p>There is one unfortunate kink to the script above. You&#8217;ll notice this line <span style="color: darkblue;"><span style="font-family: Consolas; font-size: 9pt;"> WHERE<span style="color: #333333;"> <span style="color: black;">{<span style="color: #333333;"> <span style="color: black;">$<span style="color: orangered;">_.AccessRight<span style="color: #333333;"> <span style="color: darkgray;">-ne<span style="color: #333333;"> <span style="color: black;">&#8216;<span style="color: darkred;">Viewer<span style="color: black;">&#8216;<span style="color: #333333;"> <span style="color: black;">} </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>in there because at this time, the <span style="color: #005cc5; font-family: Consolas; font-size: 9pt;">Add-PowerBIWorkspaceUser</span> cmdlet doesn&#8217;t handle adding a user and granting them the new Viewer role. I have already filed <a href="https://github.com/microsoft/powerbi-powershell/issues/177">an issue</a> in the GitHub repo for the Power BI PowerShell cmdlets. Please feel-free to comment &amp; Up-Vote this issue if you need this fixed too.</p>
<p>That&#8217;s pretty much it for now, I hope this helps! <span style="color: #333333; font-family: Consolas; font-size: 9pt;"><br></span></p>The post <a href="https://sqlvariant.com/2019/09/quick-blog-clone-power-bi-workspace-permissions/">Quick Blog: Clone Power BI Workspace Permissions</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/09/quick-blog-clone-power-bi-workspace-permissions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3349</post-id>	</item>
		<item>
		<title>Make Sure Your SQL Servers are Running the Latest CU with the New SQL Assessment cmdlets</title>
		<link>https://sqlvariant.com/2019/07/make-sure-your-sql-servers-are-running-the-latest-cu-with-the-new-sql-assessment-cmdlets/</link>
					<comments>https://sqlvariant.com/2019/07/make-sure-your-sql-servers-are-running-the-latest-cu-with-the-new-sql-assessment-cmdlets/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 30 Jul 2019 16:09:11 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3340</guid>

					<description><![CDATA[<p>Make Sure Your SQL Servers are Running the Latest Cumulative Update (CU) with the New SQL Assessment cmdlets available in the SqlServer module.</p>
The post <a href="https://sqlvariant.com/2019/07/make-sure-your-sql-servers-are-running-the-latest-cu-with-the-new-sql-assessment-cmdlets/">Make Sure Your SQL Servers are Running the Latest CU with the New SQL Assessment cmdlets</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>This morning the SQL Server Engineering &#8220;Tiger&#8221; team <a href="https://twitter.com/mssqltiger/status/1156154376907399168?s=20">announced</a> the public preview of the new <a href="https://techcommunity.microsoft.com/t5/SQL-Server/Introducing-SQL-Assessment-API-Public-Preview/ba-p/778570?utm_source=dlvr.it&amp;utm_medium=twitter">SQL Assessment API</a>. This new SQL Assessment API has been launched with two new SQL PowerShell cmdlets to help you leverage it. You can get these new cmdlets by simply updating to the latest version of the SqlServer PowerShell module.</p>
<p style="background: #fffffe;"><span style="color: blue; font-family: Consolas; font-size: 9pt;">Update-Module<span style="color: #333333;"> SqlServer<br />
</span></span></p>
<p>&nbsp;</p>
<p>The SQL Assessment cmdlets come with over 40 pre-configured Best Practices checks that can be run against both Windows &amp; Linux SQL Server instances. These checks are based on the Open Source <a href="https://github.com/Microsoft/tigertoolbox/tree/master/BPCheck">BPCheck project</a> available in GitHub, and they automatically adjust and run only the checks which are relevant to the version of SQL Server you are running. Even better, you can build your own <a href="https://github.com/microsoft/sql-server-samples/tree/master/samples/manage/sql-assessment-api">customized checks</a> tailored to your specific environment, and include them in the SQL Assessment checks when they are run. Furthermore, you can even setup profiles of which checks you want to have run (you don&#8217;t have to accept all of the defaults). I highly recommend you checkout the official documentation on this new topic: <a href="https://docs.microsoft.com/sql/sql-assessment-api/sql-assessment-api-overview">https://docs.microsoft.com/sql/sql-assessment-api/sql-assessment-api-overview</a></p>
<p>My favorite check so far is the one that tells me if my SQL Servers are up to date with the latest available CU. Even better, I can leverage my Registered Servers file or Central Management Server to run that check against all the SQL Server Instances across my whole environments with just a few lines of PowerShell code!</p>
<p style="background: #fffffe;">&nbsp;</p>
<pre class="PowerShellColorizedScript"><span style="color:#0000ff">dir</span> <span style="color:#8b0000">'SQLSERVER:\SQLRegistration\Database Engine Server Group'</span> <span style="color:#696969">|</span>             
<span style="color:#0000ff">WHERE</span> <span style="color:#000000">{</span> <span style="color:#a82d00">$_</span><span style="color:#696969">.</span><span style="color:#000000">Mode</span> <span style="color:#696969">-ne</span> <span style="color:#8b0000">'d'</span><span style="color:#000000">}</span> <span style="color:#696969">|</span>            
<span style="color:#0000ff">foreach</span> <span style="color:#000000">{</span>            
<span style="color:#0000ff">Get-SqlInstance</span> <span style="color:#000080">-ServerInstance</span> <span style="color:#a82d00">$_</span><span style="color:#696969">.</span><span style="color:#000000">Name</span> <span style="color:#696969">|</span>             
<span style="color:#0000ff">Invoke-SqlAssessment</span>            
<span style="color:#000000">}</span> <span style="color:#696969">|</span> <span style="color:#0000ff">Out-GridView</span>            
</pre>
<p>&nbsp;</p>
<p>NOTE: Please keep in mind that the SQL PowerShell above is not really what you would call a &#8216;<em>Best Practice</em>&#8216;. It&#8217;s just meant as a way to easily illustrate what is possible. This is not quite how the code would look if I were wanting to run this across my entire environment, but it gets the point across for this demonstration.</p>
<p>These two new cmdlets are being presented as a &#8216;preview&#8217; which means they could still change a little based on real-world customer feedback from people like you. While I have been testing out the usability of these cmdlets for several months now, I didn&#8217;t have access to a real-world SQL Server environment to test them out against. With that said, I&#8217;m sure there are plenty more improvements to be made, and I hope you&#8217;ll speak up and let the team know what to do by submitting ideas via <a href="https://aka.ms/sqlfeedback">aka.ms/sqlfeedback</a>. I can&#8217;t wait to see how these cmdlets evolve now that you&#8217;re able to use them!</p>
<p><img decoding="async" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/07/073019_1558_MakeSureYou1.png"></p>
<p>Here&#8217;s the full text of what that Message highlighted in the screenshot above says: &#8220;Product version 13.0.1742 is not the latest available. We recommend keeping your SQL Server up to date and install Service Packs and Cumulative Updates as they are released.&#8221;</p>The post <a href="https://sqlvariant.com/2019/07/make-sure-your-sql-servers-are-running-the-latest-cu-with-the-new-sql-assessment-cmdlets/">Make Sure Your SQL Servers are Running the Latest CU with the New SQL Assessment cmdlets</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/07/make-sure-your-sql-servers-are-running-the-latest-cu-with-the-new-sql-assessment-cmdlets/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3340</post-id>	</item>
		<item>
		<title>Exporting an .ISPAC from the SSIS Catalog via the SSIS PowerShell Provider</title>
		<link>https://sqlvariant.com/2019/05/exporting-an-ispac-from-the-ssis-catalog-via-the-ssis-powershell-provider/</link>
					<comments>https://sqlvariant.com/2019/05/exporting-an-ispac-from-the-ssis-catalog-via-the-ssis-powershell-provider/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Mon, 06 May 2019 12:20:43 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[.ISPAC]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[SSIS Provider]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3300</guid>

					<description><![CDATA[<p>In my last blog post I showed that using the SSIS Provider could be an easier option for deploying an .ISPAC file, vs. the PowerShell script method shown in the official documentation. I very quickly received two comment on that post asking: How do you use PowerShell to extract an .ISPAC from the SSIS Catalog? [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/05/exporting-an-ispac-from-the-ssis-catalog-via-the-ssis-powershell-provider/">Exporting an .ISPAC from the SSIS Catalog via the SSIS PowerShell Provider</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>In my <a href="https://sqlvariant.com/2019/05/deploy-ssis-packages-with-powershell-ispac-deployment-using-the-ssis-provider/">last blog post</a> I showed that using the SSIS Provider could be an easier option for deploying an .ISPAC file, vs. the PowerShell script method shown in the official documentation. I very quickly received two comment on that post asking:</p>
<ol>
<li>How do you use PowerShell to extract an .ISPAC from the SSIS Catalog?</li>
<li>How do you automate generating the .ISPAC file from an SSIS Project in the first place?</li>
</ol>
<h2>How do you use PowerShell to extract an .ISPAC from the SSIS Catalog?</h2>
<p><img decoding="async" align="right" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/05/050419_1714_Exportingan1.png">For the first one, I wasn&#8217;t sure if it was possible, but I assumed it <em>should be</em> possible. The way to find out is to start grabbing objects and piping them to the <span style="color: blue; font-family: Lucida Console; font-size: 9pt;">Get-Member</span> cmdlet. First, I tried the Packages themselves, then I tried the folders. No luck on either of them. Then I went poking around the Catalog in SSMS and right-clicking on the various nodes to see which options popped up. Finally, when I got to the Project itself I was given an option to Export.</p>
<p>You&#8217;ll notice with the code below, that we&#8217;re able to extract that Project-object into a variable named <span style="color: #a82d00; font-family: Lucida Console; font-size: 9pt;">$Proj</span>, but when we pipe that to the <span style="color: blue; font-family: Lucida Console; font-size: 9pt;">Get-Member</span> cmdlet we do not see a method called Export.</p>
<pre class='PowerShellColorizedScript'><span style='color:#006400'><# This is the SSIS Project once it's deployed #></span>            
<span style='color:#a82d00'>$Proj</span> <span style='color:#696969'>=</span> <span style='color:#0000ff'>Get-Item</span> <span style='color:#8b0000'>'SQLSERVER:\SSIS\localhost\SQL2017\Catalogs\SSISDB\Folders\Provider Solution2\Projects\TestSSISProject'</span>            
<span style='color:#a82d00'>$Proj</span> <span style='color:#696969'>|</span> <span style='color:#0000ff'>Get-Member</span> <span style='color:#000080'>-MemberType</span> <span style='color:#8a2be2'>Methods</span></pre>
<p>As it turns out, it&#8217;s a good thing I wrote the importing article first. Otherwise, I probably wouldn&#8217;t have spotted the method we need. There is a method named GetBytes that I totally skipped over at first. When I couldn&#8217;t find anything I started thinking back through the steps I did to import the .ISPAC file. I remembered this piece of code <span style="color: #24292e;"><span style="font-family: Consolas; font-size: 10pt; background-color: white;">[</span><span style="color: #d73a49;"><span style="font-size: 10pt;"><span style="font-family: Times New Roman;">System.IO.File</span><span style="color: #24292e;"><span style="font-family: Consolas; background-color: white;">]::ReadAllBytes(</span><span style="font-family: Times New Roman;">$ProjectFilePath</span><span style="font-family: Consolas; background-color: white;">)</span></span></span></span></span> converted the .ISPAC file into a very long string of byte numbers.</p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: darkgreen;">&lt;# Dont run this piece of code, you will hate me. #&gt;</span><br></span></p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: #a82d00;">$Proj<span style="color: dimgray;">.</span>GetProjectBytes() </span><br></span></p>
<p>So, I tried it. And I saw bytes! And about 9 minutes later, I was able to do something with my PowerShell window again</p>
<p>In PowerShell cmdlets are supposed to be in pairs:</p>
<ul>
<li>If there&#8217;s a Get there should be a Set</li>
<li>If there&#8217;s an Add there should be a Remove</li>
<li>If there&#8217;s a Read there should be a Write</li>
</ul>
<p>Since we used <span style="color: #24292e; font-family: Consolas; font-size: 10pt; background-color: white;">ReadAllBytes</span><span style="font-size: 12pt;"><br></span>method to pull the file in off of the hard drive, it stands to reason that we would use a <span style="color: #24292e; font-family: Consolas; font-size: 10pt; background-color: white;">WriteAllBytes</span> method to push the data back out to a file on the hard drive. I did a quick search and sure enough there was a method by that name. After a quick look at an example of how to use it, I came up with the following code.</p>
<pre class='PowerShellColorizedScript'><span style='color:#006400'><# This is the theory I have #></span>            
<span style='color:#006161'>[byte[]]</span> <span style='color:#a82d00'>$ProjBytes</span> <span style='color:#696969'>=</span> <span style='color:#a82d00'>$Proj</span><span style='color:#696969'>.</span><span style='color:#000000'>GetProjectBytes</span><span style='color:#000000'>(</span><span style='color:#000000'>)</span>            
<span style='color:#006161'>[System.IO.File]</span><span style='color:#696969'>::</span><span style='color:#000000'>WriteAllBytes</span><span style='color:#000000'>(</span><span style='color:#8b0000'>'C:\temp\ASSISPrj.ispac'</span><span style='color:#696969'>,</span><span style='color:#a82d00'>$ProjBytes</span><span style='color:#000000'>)</span></pre>
<p>This created the .ISPAC file on my hard drive in a flash, which was great! Of course, who knows if what&#8217;s in that file is usable? It could be a big jumbled mass in there for all I know? To find out what I had done, first I renamed the file to .zip and looked inside.</p>
<p>Looks good to me.</p>
<p><img decoding="async" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/05/050419_1714_Exportingan2.png"></p>
<p>Next I used the code from the previous post to deploy the .ISPAC file to a different folder within the same SSIS Catalog. Success again! But still, I don&#8217;t know if it&#8217;s really usable or not, so I run the package. Great news! The package that is supposed to succeed, succeed. The package that is supposed to fail, failed. Now the neither package really did anything, it didn&#8217;t move any data or anything. But at this point I&#8217;m fairly convinced that I can now export an .ISPAC file with the SSIS PowerShell Provider.</p>
<p><img decoding="async" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/05/050419_1714_Exportingan3.png"></p>
<p>&nbsp;</p>
<h3>Quick thing to note:</h3>
<p>One this I figured out [the hard way] during this, is that you can deploy the .ISPAC to a folder with a different name, but the Project must still have the same name.&nbsp; It&#8217;s embedded within the .ISPAC file, and apparently, it gets checked on deployment. You may have already known this, but I didn&#8217;t (or if I did know, I forgot)</p>
<p><img decoding="async" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/05/050419_1714_Exportingan4.png"></p>
<p>&nbsp;</p>



<h2 class="wp-block-heading">How do you automate generating the .ISPAC file from an SSIS Project in the first place?</h2>



<p>Now to answer the second question, I used the <del>phone </del>instant-message-a-friend option. I asked Mat the Mad M-Man Masson ( <a href="https://www.mattmasson.com/">blog</a> | <a href="https://twitter.com/mattmasson">twitter</a> ) what to do? He told me to give <a href="https://github.com/rtumaykin/ssis-build">this GitHub project</a> a try. If you&#8217;re looking to automate building a Visual Studio SSIS project (dtproj) into an .ISPAC file, you should give this project a try.</p>



<p>The project includes <a href="https://github.com/rtumaykin/ssis-build"><strong>New-SsisDeploymentPackage</strong></a>, &#8220;A PowerShell Cmdlet that builds a deployment package from a Visual Studio Project File&#8221;. If you do, try it out, please let me know how it works out for you?</p>



<div class="wp-block-coblocks-gist"><script src="https://gist.github.com/SQLvariant/b7f1f8f697e2c6d135d682af84de5721.js"></script><noscript><a href="https://gist.github.com/SQLvariant/b7f1f8f697e2c6d135d682af84de5721">View this gist on GitHub</a></noscript></div>



<p><br></p>The post <a href="https://sqlvariant.com/2019/05/exporting-an-ispac-from-the-ssis-catalog-via-the-ssis-powershell-provider/">Exporting an .ISPAC from the SSIS Catalog via the SSIS PowerShell Provider</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/05/exporting-an-ispac-from-the-ssis-catalog-via-the-ssis-powershell-provider/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3300</post-id>	</item>
		<item>
		<title>Webcast &#8211; Install &#038; Configure SQL Server with PowerShell DSC</title>
		<link>https://sqlvariant.com/2019/05/webcast-install-configure-sql-server-with-powershell-dsc/</link>
					<comments>https://sqlvariant.com/2019/05/webcast-install-configure-sql-server-with-powershell-dsc/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Sun, 05 May 2019 22:20:45 +0000</pubDate>
				<category><![CDATA[PASS]]></category>
		<category><![CDATA[Training Event]]></category>
		<category><![CDATA[Desired State Configuration]]></category>
		<category><![CDATA[DSC]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Webcast]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3314</guid>

					<description><![CDATA[<p>On Tuesday May 7th at 7 AM EDT (GMT -4) the PowerShell Virtual Group of PASS will host Jess Pomfret as she presents her session: Install &#038; Configure SQL Server with PowerShell DSC.</p>
The post <a href="https://sqlvariant.com/2019/05/webcast-install-configure-sql-server-with-powershell-dsc/">Webcast – Install & Configure SQL Server with PowerShell DSC</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><del>On Tuesday May 7</del><sup><del>th</del></sup><del> at 7 AM EDT (GMT -4) the</del> PowerShell Virtual Group of PASS will host Jess Pomfret as she presents her session: Install &amp; Configure SQL Server with PowerShell DSC.</p>



<p>The recording for this session has been posted to the PowerShell VG YouTube channel: </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 title="Install &amp; Configure SQL Server with PowerShell DSC" width="800" height="450" src="https://www.youtube.com/embed/ABJ2hsflwEE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Install &amp; Configure SQL Server with PowerShell DSC</h2>



<p>Get on the cutting edge by implementing infrastructure as code for your SQL Server environment. Using PowerShell Desired State Configuration (DSC) we&#8217;ll look at how to take a newly built Windows Server and get it ready for prime time while discussing the benefits associated with infrastructure as code. &#8211; Setup Pre-Requisites &#8211; Install SQL Server &#8211; Configure SQL Server &#8211; Make SQL Server Application Ready<br></p>



<h2 class="wp-block-heading">Jess Pomfret</h2>



<p>Jess Pomfret is a SQL Server DBA at Westfield Group in Westfield, Ohio. She started working with SQL Server in 2011 and currently works as part of a team administering over 100 instances ranging from 2005 to 2017. She enjoys the problem-solving aspects of performance tuning and automating processes with PowerShell. She also enjoys contributing to dbatools and dbachecks, two open source PowerShell modules that aid DBAs with automating the management of SQL Server instances. She grew up in the South West of England and outside of her DBA life enjoys Crossfit, cycling and watching proper football.<br></p>



<h2 class="wp-block-heading">Registration Links</h2>



<p>If you&#8217;re already a member of PASS, use this link to register for the webinar with your PASS account: <a href="http://powershell.pass.org/Home.aspx?EventID=13325">http://powershell.pass.org/Home.aspx?EventID=13325</a></p>



<p>If you&#8217;ve never heard of PASS and just want to learn how to &#8220;Install &amp; Configure SQL Server with PowerShell DSC&#8221; without any commitment, use this link to register for the webinar: <a href="https://attendee.gotowebinar.com/register/3184438960190324493">https://attendee.gotowebinar.com/register/3184438960190324493</a></p>



<h2 class="wp-block-heading">Wondering what DSC is?</h2>



<p>Check out the <span style="color: #0072c6; font-family: Segoe UI; font-size: 18pt; background-color: white;">SqlServerDsc</span> module on the PowerShell Gallery: <a href="https://www.powershellgallery.com/packages/SqlServerDsc/">https://www.powershellgallery.com/packages/SqlServerDsc/</a></p>The post <a href="https://sqlvariant.com/2019/05/webcast-install-configure-sql-server-with-powershell-dsc/">Webcast – Install & Configure SQL Server with PowerShell DSC</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/05/webcast-install-configure-sql-server-with-powershell-dsc/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3314</post-id>	</item>
		<item>
		<title>Deploy SSIS Packages with PowerShell .ISPAC Deployment, using the SSIS Provider</title>
		<link>https://sqlvariant.com/2019/05/deploy-ssis-packages-with-powershell-ispac-deployment-using-the-ssis-provider/</link>
					<comments>https://sqlvariant.com/2019/05/deploy-ssis-packages-with-powershell-ispac-deployment-using-the-ssis-provider/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 01 May 2019 12:35:08 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[.ISPAC]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3273</guid>

					<description><![CDATA[<p>In today's world, people expect to be able to commit one change, then have the entire project re-deployed and automated tests run against it.  Using the SSIS PowerShell Provider to deploy your code can help you accomplish that.</p>
The post <a href="https://sqlvariant.com/2019/05/deploy-ssis-packages-with-powershell-ispac-deployment-using-the-ssis-provider/">Deploy SSIS Packages with PowerShell .ISPAC Deployment, using the SSIS Provider</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>In my <a href="https://sqlvariant.com/2019/04/execute-ssis-package-from-powershell/">last post</a>, I showed how you can use the SSIS PowerShell Provider to execute an SSIS package with PowerShell.&nbsp; Of course, in order to execute that SSIS package, it has to get deployed first.&nbsp; In <a href="https://andyleonard.blog/2019/04/ssis-docker-and-windows-containers-part-5-deploying-to-the-ssis-catalog/" target="_blank" rel="noopener noreferrer">Part 5</a> of Andy Leonard’s “SSIS, Docker, and Windows Containers” series he used some PowerShell code from Matt Masson’s <a href="https://www.mattmasson.com/2012/06/publish-to-ssis-catalog-using-powershell/" target="_blank" rel="noopener noreferrer">blog post</a> to deploy an .ISPAC file to the SSIS catalog.</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/05/Deploy_ISPAC_toSSIS-1.jpg"><img loading="lazy" decoding="async" width="720" height="237" title="Deploy_ISPAC_toSSIS" style="display: inline; background-image: none;" alt="Deploy_ISPAC_toSSIS" src="https://sqlvariant.com/wp-content/uploads/2019/05/Deploy_ISPAC_toSSIS_thumb-1.jpg" border="0"></a>Now, Matt<span style="display: inline !important; float: none; background-color: #ffffff; color: #191e23; cursor: text; font-family: 'Noto Serif'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"> ( </span><a href="https://www.mattmasson.com/">blog</a><span style="display: inline !important; float: none; background-color: #ffffff; color: #191e23; cursor: text; font-family: 'Noto Serif'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"> | </span><a href="https://twitter.com/mattmasson">twitter</a><span style="display: inline !important; float: none; background-color: #ffffff; color: #191e23; cursor: text; font-family: 'Noto Serif'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;"> )</span> is certainly a “smart guy”, there is no doubt about that, but the question I wonder is: Is Matt Masson a “lazy guy”?&nbsp; Like me.&nbsp; <img decoding="async" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="https://sqlvariant.com/wp-content/uploads/2019/05/wlEmoticon-smilewithtongueout.png"></p>
<p>You see Matt’s code example used 14 lines of code to deploy a single .ISPAC file to a single package catalog.&nbsp; That seemed like a little too much for me.&nbsp; I set out to see if I could streamline the steps a little and I was able to knock off ~4 lines of code.&nbsp; This might not seem like much, but for me, it made the deployment process a lot more understandable. I accomplished this simply by letting the <a href="https://docs.microsoft.com/sql/powershell/sql-server-powershell-provider">SSIS PowerShell Provider</a> do some of the work.</p>
<p>I also think this streamlining is crucial to show how this technique could be very useful in a DevOps or Scale-Out scenario.</p>
<p>In today&#8217;s world, people expect to be able to commit one change, then have the entire project re-deployed and automated tests run against it.</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/05/Launch_SSIS_Provider-1.jpg"><img loading="lazy" decoding="async" width="511" height="291" title="Launch_SSIS_Provider" align="right" style="float: right; display: inline; background-image: none;" alt="Launch_SSIS_Provider" src="https://sqlvariant.com/wp-content/uploads/2019/05/Launch_SSIS_Provider_thumb.jpg" border="0"></a>Just like in the post on executing an SSIS package with the SSIS Provider, I’ll use SSMS to save me some work and capture the path I need to get started.</p>
<p>Once again I’m working with one of Andy’s demo files which has an .ISPAC file named TestSSISProject.ispac for this deployment.</p>
<p>I plan to do a Pull Request to add an SSIS Provider example to the “<a href="https://docs.microsoft.com/sql/integration-services/ssis-quickstart-deploy-powershell" target="_blank" rel="noopener noreferrer">Deploy an SSIS project with PowerShel</a>l” Docs page later today.</p>


<div class="wp-block-coblocks-gist"><script src="https://gist.github.com/SQLvariant/11ef68532b14d2a86db2b265cca47492.js"></script><noscript><a href="https://gist.github.com/SQLvariant/11ef68532b14d2a86db2b265cca47492">View this gist on GitHub</a></noscript></div>



<p>What’s next?&nbsp; The <a href="https://docs.microsoft.com/dotnet/api/microsoft.sqlserver.management.integrationservices">Docs pages</a> show lots of capabilities that are already available to choose from.  I think I want to figure out how to deploy a single SSIS package to an SSIS catalog using PowerShell.&nbsp; What do you want to be able to do with SSIS &amp; PowerShell?<br><br>(Please comment with what you want to do, or cool things you&#8217;ve already done with SSIS &amp; PowerShell)</p>



<p>Small update for this post: I received several requests to show how to Export an .ISPAC file from the SSIS Catalog, so I wrote a post about that, you can find the link here: <a href="https://sqlvariant.com/2019/05/exporting-an-ispac-from-the-ssis-catalog-via-the-ssis-powershell-provider/">https://sqlvariant.com/2019/05/exporting-an-ispac-from-the-ssis-catalog-via-the-ssis-powershell-provider/</a></p>The post <a href="https://sqlvariant.com/2019/05/deploy-ssis-packages-with-powershell-ispac-deployment-using-the-ssis-provider/">Deploy SSIS Packages with PowerShell .ISPAC Deployment, using the SSIS Provider</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/05/deploy-ssis-packages-with-powershell-ispac-deployment-using-the-ssis-provider/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3273</post-id>	</item>
		<item>
		<title>Execute SSIS Package from PowerShell</title>
		<link>https://sqlvariant.com/2019/04/execute-ssis-package-from-powershell/</link>
					<comments>https://sqlvariant.com/2019/04/execute-ssis-package-from-powershell/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 30 Apr 2019 14:36:40 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3263</guid>

					<description><![CDATA[<p>My friend Andy Leonard has written an excellent blog series on getting SSIS up &#38; running in a Docker container.  I would never have even tried to go down this road if not for his blog series. Here’s a list of the posts in Andy’s blog series: examined how to install Docker for Windows, pull [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/04/execute-ssis-package-from-powershell/">Execute SSIS Package from PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>My friend Andy Leonard has written an excellent blog series on getting SSIS up &amp; running in a Docker container.  I would never have even tried to go down this road if not for his blog series.</p>
<p>Here’s a list of the posts in Andy’s blog series:</p>
<ul>
<li>examined how to install Docker for Windows, pull a test image, search for a SQL Server on Windows image, install and interact with it (<a href="https://andyleonard.blog/2018/12/ssis-docker-and-windows-containers-part-0-getting-started/">Part 0</a>)</li>
<li>shared why I want to do all this (<a href="https://andyleonard.blog/2019/03/ssis-docker-and-windows-containers-part-1-why/">Part 1</a>)</li>
<li>shared one way to execute SSIS on a container in <a href="https://andyleonard.blog/2019/04/ssis-docker-and-windows-containers-part-2-executing-ssis-v0-1/">Part 2</a></li>
<li>shared a failed attempt to add an SSIS Catalog to a SQL Server-on-Windows container in <a href="https://andyleonard.blog/2019/04/ssis-docker-and-windows-containers-part-3-adding-the-ssis-catalog/">Part 3</a></li>
<li>shared a successful attempt to create an SSIS Catalog in a container (<a href="https://andyleonard.blog/2019/04/ssis-docker-and-windows-containers-part-4-adding-an-ssis-catalog-attempt-2/">Part 4</a>)</li>
<li>shared how to deploy SSIS Projects to an SSIS Catalog in a container (<a href="https://andyleonard.blog/2019/04/ssis-docker-and-windows-containers-part-5-deploying-to-the-ssis-catalog/">Part 5</a>)</li>
<li>explored one option for Executing Packages in an SSIS Catalog in a Container (<a href="https://andyleonard.blog/2019/04/ssis-docker-and-windows-containers-part-6-executing-packages-in-an-ssis-catalog-in-a-container/" target="_blank" rel="noopener noreferrer">Part 6</a>)</li>
</ul>
<p>In <a href="https://andyleonard.blog/2019/04/ssis-docker-and-windows-containers-part-6-executing-packages-in-an-ssis-catalog-in-a-container/" target="_blank" rel="noopener noreferrer">Part 6</a> Andy showed that it is possible to execute a package that is within an SSIS Catalog inside a Docker container.  However, he used the old dtexec command to do it.  I don’t blame him for resorting to a tool that he already knows well, after already kicking down so many barriers to get SSIS deployed &amp; running within a Docker container.<a href="https://sqlvariant.com/wp-content/uploads/2019/04/Execute_SSIS_from_PowerShell.jpg"><img loading="lazy" decoding="async" style="float: right; display: inline; background-image: none;" title="Execute_SSIS_from_PowerShell" src="https://sqlvariant.com/wp-content/uploads/2019/04/Execute_SSIS_from_PowerShell_thumb.jpg" alt="Execute_SSIS_from_PowerShell" width="396" height="596" align="right" border="0" /></a></p>
<p>But I still felt that since Andy had already used PowerShell in so many steps throughout the blog series, the series really should include an example of how to execute an SSIS package with PowerShell.  The only problem here was that I didn’t have many SSIS packages lying around in Docker containers for me to just try this.</p>
<p>Thankfully, Andy was very generous with his time last Thursday morning.  We did a web meeting, Andy shared his screen and he let me tell him what commands I thought he should try.  In the end, Andy was the one who figured out how to execute the SSIS package with PowerShell, I just showed him how to get there, despite the error messages he encountered.</p>
<p>At the end of our session, we found that the easiest way to execute an SSIS package in PowerShell was to navigate to the location of the package within the SSIS catalog, and then use the Get-Item cmdlet to grab the package and execute it.  You can save some typing by navigating to he package you want in SSMS, and then right-click on it and choose “Start PowerShell”.</p>
<p>Note: The &#8220;<strong>.</strong>&#8221; tells the Get-Item cmdlet to grab the current item.  You could also navigate to the folder the package is in, and then execute it using it&#8217;s <span style="text-decoration: underline;">DisplayName</span> property.</p>
<pre class="PowerShellColorizedScript"><span style="color: #000000;">(</span><span style="color: #0000ff;">Get-Item</span> <span style="color: #8a2be2;">.</span> <span style="color: #000000;">)</span><span style="color: #696969;">.</span><span style="color: #000000;">execute</span><span style="color: #000000;">(</span><span style="color: #a82d00;">$false</span><span style="color: #696969;">,</span> <span style="color: #a82d00;">$null</span><span style="color: #000000;">)</span></pre>
<p>After grabbing the package with Get-Item, we then use the .execute() method and pass it two parameters to run it.</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/04/Execute_SSIS_from_Catalog_wPowerShell.jpg"><img loading="lazy" decoding="async" style="display: inline; background-image: none;" title="Execute_SSIS_from_Catalog_wPowerShell" src="https://sqlvariant.com/wp-content/uploads/2019/04/Execute_SSIS_from_Catalog_wPowerShell_thumb.jpg" alt="Execute_SSIS_from_Catalog_wPowerShell" width="720" height="144" border="0" /></a></p>
<p>The &#8220;10031&#8221; number you&#8217;re seeing displayed there is the Execution ID of the package.  So when we see that, we know the package was successfully started.</p>
<p>Obviously, you have some easier options to do this in T-SQL or SSIS itself, but what if you’re already running some predecessor steps in PowerShell?</p>
<p>If you’re already doing work in PowerShell, and just happen to need to execute an SSIS package, this is a relatively easy option.</p>
<p>In addition, Andy and I figured out some other steps you could take to make executing SSIS in PowerShell even easier.  Since Andy is the expert in SSIS, not to mention a better story teller than me, I will let him show folks which pieces make the most sense.</p>
<p>In the meantime, I hope this post inspires you to try some things that you didn’t even know were possible! &#x1f44d;</p>The post <a href="https://sqlvariant.com/2019/04/execute-ssis-package-from-powershell/">Execute SSIS Package from PowerShell</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/04/execute-ssis-package-from-powershell/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3263</post-id>	</item>
		<item>
		<title>My Ignite 2018 SQL PowerShell Scripts now available in GitHub</title>
		<link>https://sqlvariant.com/2019/04/my-ignite-2018-sql-powershell-scripts-now-available-in-github/</link>
					<comments>https://sqlvariant.com/2019/04/my-ignite-2018-sql-powershell-scripts-now-available-in-github/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Sat, 27 Apr 2019 15:54:01 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL PowerShell]]></category>
		<category><![CDATA[SQL Vulnerability Assessment]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3256</guid>

					<description><![CDATA[<p>It appears that I forgot to post my SQL PowerShell Scripts from my talk at Ignite 2018 (video here). Big thanks to Tony Green ( t ) for bringing this to my attention. I took this opportunity to build out a repo on GitHub with all of the scripts I used that day.&#160; You can [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/04/my-ignite-2018-sql-powershell-scripts-now-available-in-github/">My Ignite 2018 SQL PowerShell Scripts now available in GitHub</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>It appears that I forgot to post my SQL PowerShell Scripts from my talk at Ignite 2018 (<a href="https://youtu.be/3tVnNm-w4Bg" target="_blank" rel="noopener noreferrer">video here</a>).</p>
<p>Big thanks to Tony Green ( <a href="https://twitter.com/runamuk0" target="_blank" rel="noopener noreferrer">t</a> ) for bringing this to my attention.</p>
<p><a href="https://twitter.com/runamuk0/status/1118162362261880837"><img loading="lazy" decoding="async" width="720" height="177" title="TonyGreen-Ignite2018-tweet" style="display: inline; background-image: none;" alt="TonyGreen-Ignite2018-tweet" src="https://sqlvariant.com/wp-content/uploads/2019/04/TonyGreen-Ignite2018-tweet.jpg" border="0"></a></p>
<p>I took this opportunity to build out a repo on GitHub with all of the scripts I used that day.&nbsp; You can find that repo <a href="https://github.com/SQLvariant/Demos/tree/master/Presentations/Ignite2018-THR2114">here</a>.</p>
<p>Going forward, I will try to post all of my presentation scripts in this repo.&nbsp; And please call me out if I forget to!&nbsp; <img decoding="async" class="wlEmoticon wlEmoticon-smile" style="" alt="Smile" src="https://sqlvariant.com/wp-content/uploads/2019/04/wlEmoticon-smile.png"></p>
<p><a href="https://github.com/SQLvariant/Demos/tree/master/Presentations/Ignite2018-THR2114"><img loading="lazy" decoding="async" width="720" height="588" title="GitHub-THR2114" style="display: inline; background-image: none;" alt="GitHub-THR2114" src="https://sqlvariant.com/wp-content/uploads/2019/04/GitHub-THR2114.jpg" border="0"></a></p>The post <a href="https://sqlvariant.com/2019/04/my-ignite-2018-sql-powershell-scripts-now-available-in-github/">My Ignite 2018 SQL PowerShell Scripts now available in GitHub</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/04/my-ignite-2018-sql-powershell-scripts-now-available-in-github/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3256</post-id>	</item>
		<item>
		<title>Quick Programming Note: Thoughts Expressed Here are Mine</title>
		<link>https://sqlvariant.com/2019/04/quick-programming-note-thoughts-expressed-here-are-mine/</link>
					<comments>https://sqlvariant.com/2019/04/quick-programming-note-thoughts-expressed-here-are-mine/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Mon, 08 Apr 2019 11:23:33 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3245</guid>

					<description><![CDATA[<p>Just a quick Programming Note abut this blog: The thoughts expressed here are my own, but I may share the same view of dozens, hundreds or even thousands of other data professionals.&#160; Thoughts expressed here do not represent any employer of mine; past, current, or future. I do work closely with software vendors from time [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/04/quick-programming-note-thoughts-expressed-here-are-mine/">Quick Programming Note: Thoughts Expressed Here are Mine</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>Just a quick Programming Note abut this blog: The thoughts expressed here are my own, but I may share the same view of dozens, hundreds or even thousands of other data professionals.&nbsp; Thoughts expressed here do not represent any employer of mine; past, current, or future.</p>
<p>I do work closely with software vendors from time to time, to help them get their data automation or user experience <strike>right</strike> better.&nbsp; However, the thoughts expresses here do no represent those companies, no matter how many times I quote their official blogs or documentation.</p>
<p>Cheers!</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/04/AaronIgniteShirt2016_Office_Zoomed.jpg"><img loading="lazy" decoding="async" width="720" height="636" title="AaronIgniteShirt2016_Office_Zoomed" style="display: inline; background-image: none;" alt="AaronIgniteShirt2016_Office_Zoomed" src="https://sqlvariant.com/wp-content/uploads/2019/04/AaronIgniteShirt2016_Office_Zoomed_thumb.jpg" border="0"></a></p>The post <a href="https://sqlvariant.com/2019/04/quick-programming-note-thoughts-expressed-here-are-mine/">Quick Programming Note: Thoughts Expressed Here are Mine</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/04/quick-programming-note-thoughts-expressed-here-are-mine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3245</post-id>	</item>
		<item>
		<title>What Chocolatey Packages Does a Business Intelligence Developer Need?</title>
		<link>https://sqlvariant.com/2019/04/what-chocolatey-packages-does-a-business-intelligence-developer-need/</link>
					<comments>https://sqlvariant.com/2019/04/what-chocolatey-packages-does-a-business-intelligence-developer-need/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Fri, 05 Apr 2019 17:00:01 +0000</pubDate>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Azure Data Studio]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3233</guid>

					<description><![CDATA[<p>I’m getting a new work laptop next week: Hooray!! &#x1f603; I’m going to have to install A LOT of software: Opportunity! &#x1f44d; Problem: I have a lot of meetings next week, and I don’t want to be distracted by installing a bunch of different pieces throughout the day. Solution: Chocolatey! &#x1f382; What is Chocolatey? “Chocolatey [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/04/what-chocolatey-packages-does-a-business-intelligence-developer-need/">What Chocolatey Packages Does a Business Intelligence Developer Need?</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><a href="https://sqlvariant.com/wp-content/uploads/2019/04/logo_long.png"><img loading="lazy" decoding="async" width="720" height="314" title="logo_long" style="display: inline; background-image: none;" alt="logo_long" src="https://sqlvariant.com/wp-content/uploads/2019/04/logo_long_thumb.png" border="0"></a></p>
<p>I’m getting a new work laptop next week: Hooray!! &#x1f603;</p>
<p>I’m going to have to install <strong>A LOT</strong> of software: Opportunity! &#x1f44d;</p>
<p><strong>Problem: </strong>I have a lot of meetings next week, and I don’t want to be distracted by installing a bunch of different pieces throughout the day.</p>
<p><strong>Solution:</strong> Chocolatey! &#x1f382;</p>
<h4>What is Chocolatey?</h4>
<p>“<strong>Chocolatey is a package manager for Windows (like apt-get or yum but for Windows)</strong>. It was designed to be a <strong>decentralized</strong> framework for quickly installing applications and tools that you need”<br />
(excerpted from <a href="https://chocolatey.org/about" target="_blank" rel="noopener noreferrer">Chocolatey.org</a>)</p>
<h4>How does it work?</h4>
<p>First you install Chocolatey, then you install the packages (very similar to installing a PowerShell module).</p>
<p>What the heck does this have to do with Business Intelligence?&nbsp; Well, it takes a lot of different pieces of software for me to do my work as a Business Intelligence Developer.&nbsp; Although in the future, with VS Code&nbsp; &amp; Azure Data Studio, some of these smaller pieces of software may turn into extensions for those editors.&nbsp; Who knows?&nbsp; But if you take a look at line #9 of the script below, that single line of code will install Power BI Desktop for me.</p>
<p>I took a look through the list of <a href="https://chocolatey.org/packages" target="_blank" rel="noopener noreferrer">Chocolatey Packages</a> and found a ton of stuff I use.&nbsp; Unfortunately I didn’t find packages for any of the following tools:</p>
<ul>
<li>DAX Studio</li>
<li>DAX Formatter</li>
<li>Power BI Helper</li>
</ul>
<h4>What am I missing?</h4>
<p>As I mentioned, I already found packages for a lot of software I already have installed.&nbsp; My question to you is: What packages am I missing that a Business Intelligence Developer who is starting to work with Databricks, should have?</p>
<p>Please comment with a link to the package!</p>
<h4>Want to give it a try?</h4>
<p>If you have never tried Chocolatey before, the steps are pretty simple.</p>
<ul>
<li>1) Open PowerShell as an Administrator.</li>
<li>2) Run the first line of this <strong><a href="https://gist.github.com/SQLvariant/d29ffd1e9905992318b4585c83399328" target="_blank" rel="noopener noreferrer">Gist</a></strong> I embedded (below).</li>
<li>3) pick any line of code below and install one of those packages.</li>
</ul>
<p>I plan to keep this <strong><a href="https://gist.github.com/SQLvariant/d29ffd1e9905992318b4585c83399328" target="_blank" rel="noopener noreferrer">Gist</a></strong> public, and update it with more packages as I find /am told about them.</p>
<p><script src="https://gist.github.com/SQLvariant/d29ffd1e9905992318b4585c83399328.js"></script></p>
<p>Cheers!</p>The post <a href="https://sqlvariant.com/2019/04/what-chocolatey-packages-does-a-business-intelligence-developer-need/">What Chocolatey Packages Does a Business Intelligence Developer Need?</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/04/what-chocolatey-packages-does-a-business-intelligence-developer-need/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3233</post-id>	</item>
		<item>
		<title>Group By Conference is Back April 11th!</title>
		<link>https://sqlvariant.com/2019/04/group-by-conference-is-back-april-11th/</link>
					<comments>https://sqlvariant.com/2019/04/group-by-conference-is-back-april-11th/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 02 Apr 2019 19:52:00 +0000</pubDate>
				<category><![CDATA[Training Event]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3220</guid>

					<description><![CDATA[<p>I have joined forces with Blyther Morrow &#38; Daniel Hutmacher to keep the GroupBy Virtual Conference going.&#160; We’re aiming to host the conference at least twice this year, and the next one is just over a week from now! 9:00am: SQL Server Memory Internals &#38; Troubleshooting – by Amit Bansal 10:15am: Inside Kubernetes – An [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/04/group-by-conference-is-back-april-11th/">Group By Conference is Back April 11th!</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>I have joined forces with Blyther Morrow &amp; Daniel Hutmacher to keep the GroupBy Virtual Conference going.&nbsp; We’re aiming to host the conference at least twice this year, and the next one is just over a week from now!</p>
<p></p>
<ul>
<li>9:00am: <a href="https://groupby.org/conference-session-abstracts/sql-server-memory-internals-troubleshooting/">SQL Server Memory Internals &amp; Troubleshooting – by Amit Bansal</a></li>
<li>10:15am: <a href="https://groupby.org/conference-session-abstracts/inside-kubernetes-an-architectural-deep-dive/">Inside Kubernetes – An Architectural Deep Dive – by Anthony Nocentino</a></li>
<li>11:30am: <a href="https://groupby.org/conference-session-abstracts/how-to-write-a-kick-a-anything/">How to write a kick a** anything – by Blythe Morrow</a></li>
<li>1:30pm: <a href="https://groupby.org/conference-session-abstracts/we-need-dataops-now/">We need DataOps – NOW – by Steph Locke</a></li>
<li>2:45pm: <a href="https://groupby.org/conference-session-abstracts/automate-the-pain-away-with-sql-server-2019/">Automate the Pain Away with SQL Server 2019 – by John Sterret</a></li>
<li>4:00pm: <a href="https://groupby.org/conference-session-abstracts/creating-a-sql-server-test-lab-on-your-workstation/">Creating a SQL Server Test Lab On Your Workstation – by David Fowler</a></li>
<li>5:15pm: <a href="https://groupby.org/conference-session-abstracts/powershell-for-the-sql-dba/">PowerShell for the SQL DBA – by Ben Miller</a></li>
</ul>
<p>*All Eastern Daylight Time (EDT = GMT -4)</p>
<p></p>
<p><a href="https://zoom.us/webinar/register/WN_1LtMAvyrQrC5fhA16iqFPQ"><strong><span style="background-color: #ffff00;">Registration is free, and it’s open now</span>.</strong></a> See you on April 11th!</p>
<p></p>
<p>The online platform we’re using is limited to 1,000 connections so that’s how many people who can register.&nbsp; If you’re planning to attend I recommend you register before we max out.</p>
<p></p>
<p>Looking forward to chatting with you on the day of the event</p>
<p><img loading="lazy" decoding="async" width="600" height="178" class="aligncenter size-full wp-image-3218" alt="" src="https://sqlvariant.com/wp-content/uploads/2019/04/Group_By_Conference_Logo-600x178.png" srcset="https://sqlvariant.com/wp-content/uploads/2019/04/Group_By_Conference_Logo-600x178.png 600w, https://sqlvariant.com/wp-content/uploads/2019/04/Group_By_Conference_Logo-600x178-300x89.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>


<p></p>The post <a href="https://sqlvariant.com/2019/04/group-by-conference-is-back-april-11th/">Group By Conference is Back April 11th!</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/04/group-by-conference-is-back-april-11th/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3220</post-id>	</item>
		<item>
		<title>Export AdventureWorksDW2017 to Excel for a Power BI Demo with Export-Excel</title>
		<link>https://sqlvariant.com/2019/03/export-adventureworksdw2017-to-excel-for-a-powerbi-demo-with-export-excel-in-powershell/</link>
					<comments>https://sqlvariant.com/2019/03/export-adventureworksdw2017-to-excel-for-a-powerbi-demo-with-export-excel-in-powershell/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Thu, 14 Mar 2019 13:04:48 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3206</guid>

					<description><![CDATA[<p>Have you ever wanted to export an entire SQL Server database to Excel file?  Yeah, me neither.  Until yesterday, when I was trying to build a Power BI demo with sample data (that needed to come from files, not a db) I have never even considered doing such a thing. Turns our, it’s extremely easy [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/03/export-adventureworksdw2017-to-excel-for-a-powerbi-demo-with-export-excel-in-powershell/">Export AdventureWorksDW2017 to Excel for a Power BI Demo with Export-Excel</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>Have you ever wanted to export an entire SQL Server database to Excel file?  Yeah, me neither.  Until yesterday, when I was trying to build a Power BI demo with sample data (that needed to come from files, not a db) I have never even considered doing such a thing.</p>
<p>Turns our, it’s extremely easy to do with the <a href="https://www.powershellgallery.com/packages/ImportExcel/">ImportExcel PowerShell</a> module.</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/03/AdventureWorksDW2017_InExcel.jpg"><img loading="lazy" decoding="async" style="display: inline; background-image: none;" title="AdventureWorksDW2017_InExcel" src="https://sqlvariant.com/wp-content/uploads/2019/03/AdventureWorksDW2017_InExcel_thumb.jpg" alt="AdventureWorksDW2017_InExcel" width="720" height="595" border="0" /></a></p>
<p>Obviously, you have to have the module installed, and a copy of <a href="https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorksDW2017.bak">AdventureWorksDW2017 db</a> restored to a SQL Server.  After that,  all you have to do is loop through the tables, ‘query’ them with the Read-SqlTableData cmdlet, and pipe the results to the Export-Excel cmdlet.</p>
<p>I did some trial and error with this yesterday.  I settled on exporting all of the Dimension tables to separate Worksheets within the same Excel file, and exporting all of the Fact tables to their own individual files (since they tend to be much larger).</p>
<p>I also tried out all tables in one file, as well as all tables in individual file.  I created <a href="https://gist.github.com/SQLvariant/453e49b8094b01c28e186bf7bc188e81">a gist</a> with all of these options.</p>
<p>If you decide to try this out yourself, the most things to do are to:</p>
<ul>
<li>Install the SqlServer &amp; ImportExcel modules</li>
<li>Import both the SqlServer &amp; ImportExcel modules into your PowerShell session</li>
<li>Change the name of the SQL Server instance in both the SQL Provider, and in the Read-SqlTableData cmdlet</li>
</ul>
<pre class="PowerShellColorizedScript"><span style="color: #006400;">#Requires -Modules SqlServer </span>            
<span style="color: #006400;">#Requires -Modules ImportExcel </span>            
<span style="color: #006400;">&lt;# The AdventureWorksDW2017 only has 29 tables and they're all under 1 million rows.#&gt;</span>            
<span style="color: #0000ff;">cd</span> <span style="color: #8a2be2;">SQLSERVER:\SQL\<span style="background-color: #ffff00;">LocalHost\SQL2017</span>\Databases\AdventureWorksDW2017\Tables</span>            
            
<span style="color: #006400;">&lt;# Scenario #1 A) all Dimensions in a single file,
    and B) each Fact table in their own file. #&gt;</span>            
             
<span style="color: #006400;">&lt;# A) Every Dimension table in a worksheet named after the table, the same Excel file #&gt;</span>            
<span style="color: #0000ff;">dir</span> <span style="color: #696969;">|</span> <span style="color: #0000ff;">WHERE</span> <span style="color: #000000;">{</span> <span style="color: #a82d00;">$_</span><span style="color: #696969;">.</span><span style="color: #000000;">name</span> <span style="color: #696969;">-like</span> <span style="color: #8b0000;">'dim*'</span> <span style="color: #000000;">}</span> <span style="color: #696969;">|</span>            
<span style="color: #0000ff;">foreach</span> <span style="color: #000000;">{</span>            
<span style="color: #8b0000;">"$($_.Name)"</span>            
<span style="color: #0000ff;">Read-SqlTableData</span> <span style="color: #000080;">-ServerInstance</span> <span style="color: #8a2be2;"><span style="background-color: #ffff00;">LocalHost\SQL2017</span></span> <span style="color: #000080;">-DatabaseName</span> <span style="color: #8a2be2;">AdventureWorksDW2017</span> <span style="color: #000080;">-SchemaName</span> <span style="color: #8a2be2;">dbo</span> <span style="color: #000080;">-TableName</span> <span style="color: #a82d00;">$_</span><span style="color: #696969;">.</span><span style="color: #000000;">Name</span> <span style="color: #000080;">-OutputAs</span> <span style="color: #8a2be2;">DataRows</span> <span style="color: #696969;">|</span>            
<span style="color: #0000ff;">Export-Excel</span> <span style="color: #000080;">-Path</span> <span style="color: #8b0000;">"c:\temp\AW\AdventureWorksDW2017_Dims.xlsx"</span> <span style="color: #000080;">-WorksheetName</span> <span style="color: #a82d00;">$_</span><span style="color: #696969;">.</span><span style="color: #000000;">Name</span> <span style="color: #000080;">-ExcludeProperty</span> <span style="color: #8a2be2;">RowError</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">RowState</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">Table</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">ItemArray</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">HasErrors</span>             
<span style="color: #000000;">}</span>            
            
<span style="color: #006400;">&lt;# B) Each Fact-table in it's own Excel file, named after the table. #&gt;</span>            
<span style="color: #0000ff;">dir</span> <span style="color: #696969;">|</span> <span style="color: #0000ff;">WHERE</span> <span style="color: #000000;">{</span> <span style="color: #a82d00;">$_</span><span style="color: #696969;">.</span><span style="color: #000000;">name</span> <span style="color: #696969;">-like</span> <span style="color: #8b0000;">'fact*'</span> <span style="color: #000000;">}</span> <span style="color: #696969;">|</span>            
<span style="color: #0000ff;">foreach</span> <span style="color: #000000;">{</span>            
<span style="color: #8b0000;">"$($_.Name)"</span>            
<span style="color: #0000ff;">Read-SqlTableData</span> <span style="color: #000080;">-ServerInstance</span> <span style="color: #8a2be2;"><span style="background-color: #ffff00;">LocalHost\SQL2017</span></span> <span style="color: #000080;">-DatabaseName</span> <span style="color: #8a2be2;">AdventureWorksDW2017</span> <span style="color: #000080;">-SchemaName</span> <span style="color: #8a2be2;">dbo</span> <span style="color: #000080;">-TableName</span> <span style="color: #a82d00;">$_</span><span style="color: #696969;">.</span><span style="color: #000000;">Name</span> <span style="color: #000080;">-OutputAs</span> <span style="color: #8a2be2;">DataRows</span> <span style="color: #696969;">|</span>            
<span style="color: #0000ff;">Export-Excel</span> <span style="color: #000080;">-Path</span> <span style="color: #8b0000;">"c:\temp\AW\$($_.Name).xlsx"</span> <span style="color: #000080;">-WorksheetName</span> <span style="color: #a82d00;">$_</span><span style="color: #696969;">.</span><span style="color: #000000;">Name</span> <span style="color: #000080;">-ExcludeProperty</span> <span style="color: #8a2be2;">IsReadOnly</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">IsFixedSize</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">IsSynchronized</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">SyncRoot</span><span style="color: #696969;">,</span><span style="color: #8a2be2;">Count</span>            
<span style="color: #000000;">}</span></pre>
<p>If you end up giving this a try, I would LOVE for you to comment and tell me how easy or hard it was for you to do?</p>The post <a href="https://sqlvariant.com/2019/03/export-adventureworksdw2017-to-excel-for-a-powerbi-demo-with-export-excel-in-powershell/">Export AdventureWorksDW2017 to Excel for a Power BI Demo with Export-Excel</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/03/export-adventureworksdw2017-to-excel-for-a-powerbi-demo-with-export-excel-in-powershell/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3206</post-id>	</item>
		<item>
		<title>How to Submit Feedback to Azure Data Studio WITHOUT tweeting.</title>
		<link>https://sqlvariant.com/2019/03/how-to-submit-feedback-to-azure-data-studio-without-tweeting/</link>
					<comments>https://sqlvariant.com/2019/03/how-to-submit-feedback-to-azure-data-studio-without-tweeting/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 12 Mar 2019 19:05:57 +0000</pubDate>
				<category><![CDATA[Azure Data Studio]]></category>
		<category><![CDATA[Feedback]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3202</guid>

					<description><![CDATA[<p>This is one of those things that doesn’t warrant a blog post; until you talk to three other well-versed data professionals who all had the same confusion. Azure Data Studio is a great little cross-platform SQL editor and the team has been working hard to add some of the most requested features.&#160; To make it [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/03/how-to-submit-feedback-to-azure-data-studio-without-tweeting/">How to Submit Feedback to Azure Data Studio WITHOUT tweeting.</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>This is one of those things that doesn’t warrant a blog post; until you talk to three other well-versed data professionals who all had the same confusion.</p>
<p>Azure Data Studio is a great little cross-platform SQL editor and the team has been working hard to add some of the most requested features.&nbsp; To make it easy for customers to request new features &amp; report bugs they include a little smiley in the lower-right corner for you to provide feedback that can go directly into their GiuHub repo.&nbsp; Although, it also give the opportunity to tweet about Azure Data Studio.&nbsp; I think part of the problem is that when you click on the smiley in the lower-right corner it actually says “Tweet feedback” not ‘Send us feedback’.&nbsp; I was confused by this myself and ended up <a href="http://twitter.com/SQLvariant/status/1093263838798118914">tweeting to Buck Woody</a> about it.&nbsp; He pointed out the “Submit a bug” text.</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/03/image.png"><img loading="lazy" decoding="async" width="720" height="493" title="image" style="display: inline; background-image: none;" alt="image" src="https://sqlvariant.com/wp-content/uploads/2019/03/image_thumb.png" border="0"></a></p>
<p>Clicking on “Submit a Bug” will bring up this little window where you can give the bug a name, fill in some details, and it even let’s you switch back to your Azure Data Studio window so you can copy the error message you received.</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/03/image-1.png"><img loading="lazy" decoding="async" width="670" height="765" title="image" style="display: inline; background-image: none;" alt="image" src="https://sqlvariant.com/wp-content/uploads/2019/03/image_thumb-1.png" border="0"></a></p>
<p>After that, you click on the Preview in GiHub button which takes you to a page in the Azured Data Studio repo with <a href="https://github.com/Microsoft/azuredatastudio/issues/3929">everything you already filled out</a> in the form.</p>
<p><a href="https://github.com/Microsoft/azuredatastudio/issues/3929"><img loading="lazy" decoding="async" width="720" height="469" title="image" style="display: inline; background-image: none;" alt="image" src="https://sqlvariant.com/wp-content/uploads/2019/03/image-2.png" border="0"></a></p>
<p>Again, once you’ve done it once, this seems like a waste of a blog post.&nbsp; But it seems like I’m not the only one who didn’t wanted to just tweet an error they were running into in Azure Data Studio.</p>The post <a href="https://sqlvariant.com/2019/03/how-to-submit-feedback-to-azure-data-studio-without-tweeting/">How to Submit Feedback to Azure Data Studio WITHOUT tweeting.</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/03/how-to-submit-feedback-to-azure-data-studio-without-tweeting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3202</post-id>	</item>
		<item>
		<title>Invoke-Sqlcmd is Now Available Cross-Platform in the SqlServer module</title>
		<link>https://sqlvariant.com/2019/03/invoke-sqlcmd-is-now-available-cross-platform-in-the-sqlserver-module/</link>
					<comments>https://sqlvariant.com/2019/03/invoke-sqlcmd-is-now-available-cross-platform-in-the-sqlserver-module/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Tue, 05 Mar 2019 04:33:50 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Invoke-SQLCmd]]></category>
		<category><![CDATA[SqlServer Module]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3179</guid>

					<description><![CDATA[<p>Invoke-Sqlcmd is Now Available for MacOS &#38; Linux in the SqlServer module.&#160; The module has been posted as v21.1.18095-preview which means to download the module you’ll have to add the -AllowPrerelease parameter. Update-Module SqlServer -AllowPrerelease But wait, there’s more.&#160; In order to use the Invoke-Sqlcmd cmdlet on PSCore you’ll also need to download PSCore 6.2 [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/03/invoke-sqlcmd-is-now-available-cross-platform-in-the-sqlserver-module/">Invoke-Sqlcmd is Now Available Cross-Platform in the SqlServer module</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>Invoke-Sqlcmd is Now Available for MacOS &amp; Linux in the <a href="https://www.powershellgallery.com/packages/SqlServer/21.1.18095-preview">SqlServer module</a>.&nbsp; The module has been posted as v21.1.18095-preview which means to download the module you’ll have to add the -AllowPrerelease parameter.</p>
<pre class="PowerShellColorizedScript"><span style="color: #0000ff;">Update-Module</span> <span style="color: #8a2be2;">SqlServer</span> <span style="color: #000080;">-AllowPrerelease</span></pre>
<p>But wait, there’s more.&nbsp; In order to use the Invoke-Sqlcmd cmdlet on PSCore you’ll also need to download PSCore 6.2 which, as of this writing, is currently in Release Candidate status.&nbsp; I guess that makes this sort of a double-preview <img decoding="async" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://sqlvariant.com/wp-content/uploads/2019/03/wlEmoticon-smile.png"></p>
<p>For information on how to “installing a PowerShell Core Preview release for Linux” check out the <a href="https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6#installing-preview-releases">docs page</a>.</p>
<p>If you&#8217;re on a Mac, you&#8217;ll currently need to run pwsh-preview to launch v6.2 of PSCore.&nbsp; Once you have the module updated &amp; PSCorev6.2 installed you&#8217;re ready to go.&nbsp; Nothing else needed.</p>
<p><a href="https://sqlvariant.com/wp-content/uploads/2019/03/clip_image002.png"><img loading="lazy" decoding="async" width="720" height="654" title="clip_image002" style="display: inline; background-image: none;" alt="clip_image002" src="https://sqlvariant.com/wp-content/uploads/2019/03/clip_image002_thumb.png" border="0"></a></p>
<p>To install <b>PSCore v6.2 on MacOS</b>, after you have run &#8216;brew cask install powershell&#8217; then run the following code to allow it to access the preview version:</p>
<pre class="bash">brew tap homebrew/cask-versions</pre>
<p>After that, run this to install the preview version of PSCore:</p>
<pre class="bash">brew cask install powershell-preview</pre>
<p>Finally, to launch the preview version of PSCore run the command below and off you go</p>
<pre class="bash">pwsh-preview</pre>
<p>If you’re still on an earlier version of PSCore and are unable to install PSCore 6.2 right now, you can still download preview of the SqlServer module to get the latest fixes and new features.&nbsp; You just won’t be able to use the Invoke-Sqlcmd cmdlet.</p>
<p>Another quick thing to note is that this is like a v.0.0.1 of Invoke-SqlCmd on PSCore; it does not have all the bells &amp; whistles of the version of Invoke-Sqlcmd for [full blown] Windows PowerShell.&nbsp; Obviously, more features will be added over time, but the basic functionality was ready to for customers to start &#8220;kicking the tires&#8221;.</p>
<p>The functionality listed in the release notes notes are as follows:</p>
<p>&#8220;<span style="display: inline !important; float: none; background-color: #ffffff; color: #000000; font-family: 'Segoe UI','Helvetica Neue',Helvetica,Arial,sans-serif; font-size: 18px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-spacing: 0px;">* Initial support for Invoke-Sqlcmd on .Net Core (-Variable, -DisableVariables, -DisableCommand,<br />
&nbsp;-QueryTimeout, -ConnectionTimeout, -Hostname not supported yet). </span>&#8221;</p>
<p>If you run into an issue with the cmdlet, please do comment on the <a href="https://www.powershellgallery.com/packages/SqlServer/21.1.18095-preview">PowerShell Gallery page</a> for the SqlServer module, Matteo is really good about responding there.</p>
<blockquote class="twitter-tweet" data-lang="en">
<p lang="en" dir="ltr">I just pushed out a new (prerelease) version of the SQLServer PowerShell module at <a href="https://t.co/mnYCjyVouu">https://t.co/mnYCjyVouu</a>.</p>
<p>Surprise, surprise! If you are on PowerShell 6.2.0 (also preview), you&#8217;ll be able to run Invoke-Sqlcmd (basic functionality).</p>
<p>Enjoy! <a href="https://t.co/Sol1tASTjw">pic.twitter.com/Sol1tASTjw</a></p>
<p>— Matteo Taveggia (@matteo_taveggia) <a href="https://twitter.com/matteo_taveggia/status/1102759236742701056?ref_src=twsrc%5Etfw">March 5, 2019</a></p></blockquote>
<p><script src="https://platform.twitter.com/widgets.js" charset="utf-8" async=""></script></p>The post <a href="https://sqlvariant.com/2019/03/invoke-sqlcmd-is-now-available-cross-platform-in-the-sqlserver-module/">Invoke-Sqlcmd is Now Available Cross-Platform in the SqlServer module</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/03/invoke-sqlcmd-is-now-available-cross-platform-in-the-sqlserver-module/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3179</post-id>	</item>
		<item>
		<title>Quick Blog: Foreach Result by Day</title>
		<link>https://sqlvariant.com/2019/02/quick-blog-foreach-result-by-day/</link>
					<comments>https://sqlvariant.com/2019/02/quick-blog-foreach-result-by-day/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Fri, 22 Feb 2019 21:10:28 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Power BI]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3151</guid>

					<description><![CDATA[<p>My friend Reza Rad ( blog &#124; twitter ) reached out to me this morning because he was running into some issues with a PowerShell cmdlet for gathering some log data. To make a long story short, the cmdlet in question had apparently been built with expectation that customers would want to gather results from [&#8230;]</p>
The post <a href="https://sqlvariant.com/2019/02/quick-blog-foreach-result-by-day/">Quick Blog: Foreach Result by Day</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><a href="https://sqlvariant.com/wp-content/uploads/2019/02/ForEachDailyResults_20190222.jpg"><img loading="lazy" decoding="async" width="720" height="228" title="ForEachDailyResults_20190222" style="display: inline; background-image: none;" alt="ForEachDailyResults_20190222" src="https://sqlvariant.com/wp-content/uploads/2019/02/ForEachDailyResults_20190222_thumb.jpg" border="0"></a></p>
<p>My friend Reza Rad ( <a href="http://radacad.com/blog">blog</a>  | <a href="https://twitter.com/Rad_Reza">twitter</a> )  reached out to me this morning because he was running into some issues with a PowerShell cmdlet for gathering some log data. To make a long story short, the cmdlet in question had apparently been built with expectation that customers would want to gather results from the last day, or maybe even the last week, but not much more than that.</p>
<p>My friend was trying to grab 3 months work of data all at once and it just wasn’t working. The logs went back for months on end, but you just couldn’t pull that many days at once without running into problems. We quickly realized that just asking for the logs one day at a time was the easiest way to guarantee that we got everything. But who wants to sit there and change the to/from dates 90 times??</p>
<p>I joked that you could write that code in Excel if you wanted but I was sure that there was an easy way to accomplish this by combining a few simple PowerShell tricks:</p>
<p>· Number range <span style="color: #800080;">90</span><span style="color: #696969;">..</span><span style="color: #800080;">1</span></p>
<p>· Foreach <span style="color: #0000ff;">foreach</span> <span style="color: #000000;">{}</span></p>
<p>· Date Add <span style="color: #000000;">(</span><span style="color: #0000ff;">Get-Date</span><span style="color: #000000;">)</span><span style="color: #696969;">.</span><span style="color: #000000;">AddDays</span><span style="color: #000000;">(</span><span style="color: #696969;">&#8211;</span>1<span style="color: #000000;">)</span></p>
<p>·<span style="color: #000080;"> -Append</span></p>
<p>PowerShell has a feature which allows you to emit all the numbers in a range. I admit it can sound like a useless trick until you have a reason to combine it with something else. (Like the simple random raffle number generator I still haven’t blogged about.) At which point you’re all like: OMG this is stupid-simple and yet perfect!</p>
<p>The number rage is normally shown as something 1..10, but the range could start anywhere, like 1433..1521. In our case, we can use this to count backwards from 90 [days] like this:</p>
<pre class="PowerShellColorizedScript"><span style="color: #800080;">90</span><span style="color: #696969;">..</span><span style="color: #800080;">1</span></pre>
<p>Again, that’s not much of a big deal, but since we can pass those numbers in to DateAdd via a foreach loop, it completely amplifies what you’re doing.</p>
<pre class="PowerShellColorizedScript"><span style="color: #800080;">90</span><span style="color: #696969;">..</span><span style="color: #800080;">1</span> <span style="color: #696969;">|</span>            
<span style="color: #0000ff;">foreach</span> <span style="color: #000000;">{</span> <span style="color: #000000;">(</span><span style="color: #0000ff;">Get-Date</span><span style="color: #000000;">)</span><span style="color: #696969;">.</span><span style="color: #000000;">AddDays</span><span style="color: #000000;">(</span><span style="color: #696969;">-</span><span style="color: #a82d00;">$_</span><span style="color: #000000;">)</span> <span style="color: #000000;">}</span></pre>
<p>Now that we have our list of 90 dates ready, all we have to do is combine it with the cmdlet that retrieves our data. In lieu of outing the product team who built the less-than-optimal cmdlet which started this problem, I’ll substitute the Get-SqlErrorLog cmdlet in its place.</p>
<pre class="PowerShellColorizedScript"><span style="color: #800080;">90</span><span style="color: #696969;">..</span><span style="color: #800080;">1</span> <span style="color: #696969;">|</span>            
<span style="color: #0000ff;">foreach</span> <span style="color: #000000;">{</span>            
<span style="color: #a82d00;">$Start</span><span style="color: #696969;">=</span><span style="color: #000000;">(</span><span style="color: #000000;">(</span><span style="color: #0000ff;">Get-Date</span><span style="color: #000000;">)</span><span style="color: #696969;">.</span><span style="color: #000000;">Date</span><span style="color: #000000;">)</span><span style="color: #696969;">.</span><span style="color: #000000;">AddDays</span><span style="color: #000000;">(</span><span style="color: #696969;">-</span><span style="color: #a82d00;">$_</span><span style="color: #000000;">)</span><span style="color: #000000;">;</span>            
<span style="color: #0000ff;">Get-SqlErrorLog</span> <span style="color: #000080;">-ServerInstance</span> <span style="color: #8a2be2;">localhost\sql2017</span> <span style="color: #000080;">-After</span> <span style="color: #a82d00;">$Start</span> <span style="color: #000080;">-Before</span> <span style="color: #a82d00;">$Start</span><span style="color: #696969;">.</span><span style="color: #000000;">AddDays</span><span style="color: #000000;">(</span><span style="color: #800080;">1</span><span style="color: #000000;">)</span> <span style="color: #696969;">|</span>            
<span style="color: #0000ff;">Out-File</span> <span style="color: #000080;">-Append</span> <span style="color: #000080;">-FilePath</span> <span style="color: #8a2be2;">C:\temp\SQLErrors.txt</span>            
<span style="color: #000000;">}</span></pre>
<p>3 quick things to point out here.</p>
<p>· I made sure that we were working with the date as of midnight instead of the current time by adding ().Date) around Get-Date.</p>
<p>· It’s probably obvious but just to be clear, the $Start= is setting the date as we’re looping through the code, and to give us a full day worth of logs I’m using .AddDays(1) to add a single day to date within the $Start variable to get the next day.</p>
<p>· Since the problem here is retrieving the logs, not storing their results, I’m using the -Append parameter to store them all in the same file.&nbsp; Of course, we don&#8217;t even need the -Append parameter if we were piping the results to the <a href="https://sqlvariant.com/2016/10/quick-blog-searching-sql-servers-saving-results-with-write-sqltabledata/"><span style="color: #0000ff;">Write-SqlTableData</span> cmdlet</a> we wouldn&#8217;t even need the -Append switch, but maybe a SQL Server table was overkill for this particular task.</p>
<p>Obviously, the cmdlet that will not [yet] be named needs to be fixed. In the meantime, a couple minutes &amp; a couple lines of PowerShell code to save yourself from an hour or more of manual work downloading daily log files is a great thing to have in your back pocket.</p>



<p></p>The post <a href="https://sqlvariant.com/2019/02/quick-blog-foreach-result-by-day/">Quick Blog: Foreach Result by Day</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2019/02/quick-blog-foreach-result-by-day/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3151</post-id>	</item>
		<item>
		<title>Scripts for SQL PowerShell Session at Microsoft Ignite 2017</title>
		<link>https://sqlvariant.com/2017/09/scripts-for-sql-powershell-session-at-ignite-2017/</link>
					<comments>https://sqlvariant.com/2017/09/scripts-for-sql-powershell-session-at-ignite-2017/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Thu, 28 Sep 2017 16:44:06 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Ignite]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[SQL PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3106</guid>

					<description><![CDATA[<p>This is just a quick blog post to share the scripts I used during my sessions at the Ignite conference this year. You can download a .zip file with the scripts here. If you&#8217;re looking for the slides or the video, those are available over on the Ignite site: https://myignite.microsoft.com/sessions/57084 (Note: It looks like you [&#8230;]</p>
The post <a href="https://sqlvariant.com/2017/09/scripts-for-sql-powershell-session-at-ignite-2017/">Scripts for SQL PowerShell Session at Microsoft Ignite 2017</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>This is just a quick blog post to share the scripts I used during my sessions at the Ignite conference this year.<img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2017/09/092817_1641_ScriptsforS1.png" alt="" align="right" /></p>
<p>You can download a .zip file with the scripts <a href="https://1drv.ms/u/s!AlwBo0ZcI2EZw7pLMXqSdUj8iLE_EA">here</a>.</p>
<p>If you&#8217;re looking for the slides or the video, those are available over on the Ignite site: <a href="https://myignite.microsoft.com/sessions/57084">https://myignite.microsoft.com/sessions/57084</a></p>
<p>(Note: It looks like you have to login in order to download the slides.)</p>
<p>Please comment if you have any questions about the scripts!</p>The post <a href="https://sqlvariant.com/2017/09/scripts-for-sql-powershell-session-at-ignite-2017/">Scripts for SQL PowerShell Session at Microsoft Ignite 2017</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2017/09/scripts-for-sql-powershell-session-at-ignite-2017/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3106</post-id>	</item>
		<item>
		<title>#TSQL2sDay Long Story Short: Avoid -Scope User</title>
		<link>https://sqlvariant.com/2017/09/tsql2sday-long-story-short-avoid-scope-user/</link>
					<comments>https://sqlvariant.com/2017/09/tsql2sday-long-story-short-avoid-scope-user/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Mon, 11 Sep 2017 22:26:46 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Gallery]]></category>
		<category><![CDATA[SqlServer Module]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3101</guid>

					<description><![CDATA[<p>For T-SQL Tuesday #94 the topic is databases and PowerShell. Rob Sewell asks us: What are you going to automate today? I&#8217;m going to automate some thing in SSRS &#38; SSAS, but that&#8217;s not what I&#8217;m going to write about today. Instead, I&#8217;m just going to post some pointers to help you install/update to the [&#8230;]</p>
The post <a href="https://sqlvariant.com/2017/09/tsql2sday-long-story-short-avoid-scope-user/">#TSQL2sDay Long Story Short: Avoid -Scope User</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>For <a href="https://sqldbawithabeard.com/2017/09/05/tsql2sday-94-lets-get-all-posh/?utm_content=buffer6318b&amp;utm_medium=social&amp;utm_source=twitter.com&amp;utm_campaign=buffer">T-SQL Tuesday #94</a> the topic is databases and PowerShell. Rob Sewell asks us: What are you going to automate today?</p>
<p>I&#8217;m going to automate some thing in SSRS &amp; SSAS, but that&#8217;s not what I&#8217;m going to write about today. Instead, I&#8217;m just going to post some pointers to help you install/update to the latest version of the SqlServer module more easily;</p>
<p>I put together <a href="https://www.mssqltips.com/sqlservertip/4993/new-features-and-best-practices-of-sql-server-powershell/?utm_content=bufferaac5a&amp;utm_medium=social&amp;utm_source=twitter.com&amp;utm_campaign=buffer">an article for MSSQLTips</a> on Best Practices for working with the SqlServer module that is available in the PowerShell Gallery.  The article has some handy details in it but here are the highlights:</p>
<p style="background: white;">You need to run this command from an elevated PowerShell session to install the latest version:<br />
<span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Install-Module </span><span style="color: blueviolet;">SqlServer</span></span></p>
<p>I didn&#8217;t mention in the article that you will probably need to add two additional parameters to upgrade your SqlServer module when the team releases new versions:</p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Install-Module </span><span style="color: blueviolet;">SqlServer</span><span style="color: navy;"> -AllowClobber </span><span style="color: navy;">-Force<br />
</span></span></p>
<p>If you want to download the module from the PowerShell Gallery so that you can copy it to a server that isn&#8217;t connected to the internet, use:</p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: blue;">Save-Module</span> <span style="color: blueviolet;"> SqlServer</span> <span style="color: navy;"> -Path</span> <span style="color: blueviolet;"> c:\temp\</span><br />
</span></p>
<p>And then copy the folder to the C:\Program Files\WindowsPowerShell\Modules\ directory on the server you need it on.</p>
<p style="background: white;">Whatever you do, try to <em>avoid</em> using the <span style="font-family: Lucida Console; font-size: 9pt;"><span style="color: navy;">-Scope </span><span style="color: blueviolet;">CurrentUser</span></span> option.  You may need to use it if you don&#8217;t have high enough permissions, <span style="text-decoration: underline;">in that situation go ahead and use -Scope CurrentUser</span>.  However, if you can avoid using it, do so.  I have lost a lot of time to having used this option.<span style="color: blueviolet; font-family: Lucida Console; font-size: 9pt;"><br />
</span></p>
<p style="background: white;"><span style="font-family: Lucida Console; font-size: 9pt; text-decoration: line-through;"><span style="color: blue;">Install-Module </span><span style="color: blueviolet;">SqlServer </span><span style="color: navy;">-Scope </span><span style="color: blueviolet;">CurrentUser<br />
</span></span></p>
<p>Finally, the SSAS cmdlets and my improvements to the Provider have now been incorporated into the main SqlServer module.  I&#8217;m working on an article to walk people the benefits of using that.  I hope to share the draft next week or so.</p>
<p>If you run into any trouble with the SqlServer module, <span style="background-color: yellow;"><strong>please don&#8217;t hesitate to reach out to me, I&#8217;m happy to help!</strong></span>  <span style="font-family: Segoe UI Emoji;">&#x1f642;</span></p>The post <a href="https://sqlvariant.com/2017/09/tsql2sday-long-story-short-avoid-scope-user/">#TSQL2sDay Long Story Short: Avoid -Scope User</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2017/09/tsql2sday-long-story-short-avoid-scope-user/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3101</post-id>	</item>
		<item>
		<title>Power BI Report Server (On-Premises) for All Data Sources is Available!</title>
		<link>https://sqlvariant.com/2017/08/powerbi-report-server-on-premises-for-all-data-sources-is-here/</link>
					<comments>https://sqlvariant.com/2017/08/powerbi-report-server-on-premises-for-all-data-sources-is-here/#comments</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Mon, 28 Aug 2017 14:25:30 +0000</pubDate>
				<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Report Server]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3063</guid>

					<description><![CDATA[<p>Power BI Report Server August 2017 Preview is now available. Think of this a &#8220;v.Next&#8221; of Power BI Report Server [On-Premises], for all Data Sources. Here&#8217;s an excerpt from the Power BI blog post from this weekend: &#8220;With this August 2017 preview, users can create Power BI reports in Power BI Desktop that connect to [&#8230;]</p>
The post <a href="https://sqlvariant.com/2017/08/powerbi-report-server-on-premises-for-all-data-sources-is-here/">Power BI Report Server (On-Premises) for All Data Sources is Available!</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2017/08/082817_1227_PowerBIRepo1.png" alt="" align="right" />Power BI Report Server August 2017 Preview is now available. Think of this a &#8220;<em>v.Next</em>&#8221; of Power BI Report Server [On-Premises], for <strong>all</strong> Data Sources.</p>
<p>Here&#8217;s an excerpt from the <a href="https://powerbi.microsoft.com/en-us/blog/power-bi-report-server-august-2017-preview-now-available/">Power BI blog post</a> from this weekend:</p>
<blockquote><p>&#8220;<em>With this August 2017 preview, users can create Power BI reports in Power BI Desktop that connect to any data source, and publish their reports to Power BI Report Server. There&#8217;s no special configuration required to enable this functionality</em>&#8220;</p></blockquote>
<p>You can <a href="https://powerbi.microsoft.com/report-server/" target="_blank" rel="noopener"><span style="font-family: Segoe UI;">Download Power BI Report Server August 2017 Preview here</span></a><span style="color: black; font-family: Segoe UI;">.</span></p>
<p>You will also want to <a href="https://www.microsoft.com/en-us/download/details.aspx?id=55791">Download Power BI Desktop (August 2017)</a> for Power BI Report Server.</p>
<p>Once you&#8217;ve done that, you can start taking your existing Power BI reports (.PBIX files) and saving them to your Power BI Report server, instead of having to upload them, and all the data they rely on, to the cloud. Which means that you can now build rich reports like this one below right off of your SQL Server database. Better yet, your coworkers interact with it from your internal Power BI Report Server.</p>
<h2><span style="color: #5b9bd5;">Wait, I thought Power BI Report Server had already gone GA?  But this says it&#8217;s in Preview<br />
</span></h2>
<p>Out of an abundance of clarity I want to mention that Power BI Report Server was made <strong>Generally Available</strong> (read: RTM) back in <strong>June of 2017</strong>. That version is <a href="https://powerbi.microsoft.com/en-us/documentation/reportserver-get-started/">still available</a> and only able to connect to SSAS as a data source.</p>
<h2><span style="color: #5b9bd5;">Back to the Power BI Report Server August 2017 Preview News:<br />
</span></h2>
<p>What new features can you expect when you install Power BI Desktop (August 2017) for Power BI Report Server?</p>
<blockquote>
<h3 data-bi-id="19-id-H3" data-bi-name="4-19-layer-H3"><a id="support-for-new-table-and-matrix-viuals" title="" href="https://powerbi.microsoft.com/en-us/documentation/reportserver-whats-new/#support-for-new-table-and-matrix-viuals" name="support-for-new-table-and-matrix-viuals" data-bi-id="1-support-for-new-table-and-matrix-viuals-A" data-bi-name="5-1-support-for-new-table-and-matrix-viuals" data-bi-type="link" data-bi-area="content_body"></a>Support for new table and matrix viuals</h3>
<p data-bi-id="20-id-P" data-bi-name="4-20-layer-P">The August 2017 preview of Power BI Report Server includes support for the new Power BI table and matrix visuals. To create reports with these visuals, you will need an updated Power BI Desktop release for the August 2017 preview. It cannot be installed side-by-side with Power BI Desktop (June 2017) release.</p>
</blockquote>
<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2017/08/082817_1227_PowerBIRepo2.png" alt="" align="right" />To me, this is <strong>massive</strong> news! If you think of the <a href="https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-dashboard-reports-unleashed-for-enterprise-monitoring/">SQL Performance Dashboard Reports</a> project which already allows you to publish reports about your SQL Server environment to a central SSRS server so that your coworkers can see what&#8217;s going on with the SQL Server anytime they want. Now, you can take that information further with the rich interactive visuals available in the Power BI toolset. Plus, Power BI is not only very easy to use, but it has tons of online resources available for it. The Guy in a Cube <a href="http://bit.ly/GIACyt">YouTube channel</a> is a great place to start.</p>
<p>But I don&#8217;t think this is massive news because DBAs and other data professionals can now build pretty dashboards about how their SQL Server is running. Building Power BI reports about your SQL environment is just <em>practice</em>. Now, data professionals have access to a full ecosystem to be able to serve up rich visualizations about whatever their coworkers need to know about, post it internally using existing domain security, and they can put it all together in just minutes!</p>
<h2><span style="color: #5b9bd5;">Community Visualizations<br />
</span></h2>
<p>I think there will be a lot more interest in the <a href="https://dbareports.io/"><strong>dbareports project</strong></a> now that it can be published internally. I&#8217;m very excited to see what kind of data visualizations data professionals come up with to share with their coworkers and the community!</p>
<p>I have already started contributing small modifications / enhancements to the dbareports Power BI files and I hope to contribute several more over the coming days as time allows. I can&#8217;t wait to see what enhancements everyone else comes up with.</p>
<h2><span style="color: #5b9bd5;">Any Issues?</span></h2>
<p>I did run across a couple issues this weekend that I flagged to the team. They might be unique to my environment / setup, so I&#8217;ll share them here in case you run into them too:</p>
<ol start="1" type="1">
<li style="margin: 0px; color: #000000;">Installing the August Preview blew away my Saved Data Source credentials I was using for each one of my reports.  I had to re-setup Data Source creds one-by-one (was early in the a.m. and <u>for once didn’t think to use PowerShell first</u>).  None of the previous versions of PBIRS, since January, had ever done this to me.
<ol start="1" type="a">
<li style="margin: 0px; color: #000000;">Worse yet, and the reason I will have to rollback to GA: My saved credentials get lost Every.  Single. Time.  I update a report.</li>
<li><strong>NOTE</strong>: This has not affected any of my reports where I was using &#8220;Log into the data source &#8211; As the user viewing the report &#8221; so you may be completely unaffected by this.</li>
</ol>
</li>
<li style="margin: 0px; color: #000000;">Could not get any reports to render using <a href="http://%3ccomputername%3e:8081/PBIReports">http://&lt;ComputerName&gt;:8081/PBIReports</a>.  Was only able to get reports to render after trying <a href="http://localhost:8081/PBIReports">http://LocalHost:8081/PBIReports</a></li>
<li>Power BI Desktop (August 2017) for Power BI Report Server doesn&#8217;t seem to want display a TreeMap visual to you.  However, as you can see from my screenshot above, the Power BI Report Server will render the TreeMap just fine.</li>
<li>As of right now, it seems that they maximum size your .PBIX file can be is 100 MB.  Keep that in mind if you&#8217;re working with imported models.</li>
</ol>
<p><figure id="attachment_3099" aria-describedby="caption-attachment-3099" style="width: 869px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-3099" src="https://sqlvariant.com/wp-content/uploads/2017/08/PBIRS_100mbLimit_August2017.jpg" alt="" width="869" height="313" srcset="https://sqlvariant.com/wp-content/uploads/2017/08/PBIRS_100mbLimit_August2017.jpg 869w, https://sqlvariant.com/wp-content/uploads/2017/08/PBIRS_100mbLimit_August2017-300x108.jpg 300w, https://sqlvariant.com/wp-content/uploads/2017/08/PBIRS_100mbLimit_August2017-768x277.jpg 768w" sizes="(max-width: 869px) 100vw, 869px" /><figcaption id="caption-attachment-3099" class="wp-caption-text">Power BI Report Server 100 MB file limit.</figcaption></figure></p>
<p>If any of you run into these issues too, please drop a comment!  &#x1f642;</p>
<p>Also keep in mind that with this preview version, while all data sources are now available, still not every single feature has been turned on just yet.  For a list of what has been turned on, please have a look at the <a href="https://powerbi.microsoft.com/en-us/documentation/reportserver-get-started/">official preview documentation</a>.</p>The post <a href="https://sqlvariant.com/2017/08/powerbi-report-server-on-premises-for-all-data-sources-is-here/">Power BI Report Server (On-Premises) for All Data Sources is Available!</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2017/08/powerbi-report-server-on-premises-for-all-data-sources-is-here/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3063</post-id>	</item>
		<item>
		<title>I’m Speaking at Ignite in Orlando!</title>
		<link>https://sqlvariant.com/2017/08/im-speaking-at-ignite-in-orlando/</link>
					<comments>https://sqlvariant.com/2017/08/im-speaking-at-ignite-in-orlando/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Wed, 23 Aug 2017 18:21:52 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Ignite]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL PowerShell]]></category>
		<category><![CDATA[Syndicated]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3056</guid>

					<description><![CDATA[<p>I&#8217;m excited to say that I will be speaking at Ignite this year in Orlando! I was at Ignite in Atlanta last year and it was an excellent experience. I&#8217;m really looking forward to meeting new people and running into old friends. If you&#8217;ll be at Ignite, here are the details on my session: Achieve [&#8230;]</p>
The post <a href="https://sqlvariant.com/2017/08/im-speaking-at-ignite-in-orlando/">I’m Speaking at Ignite in Orlando!</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2017/08/082317_1817_ImSpeakinga1.jpg" alt="" align="right" />I&#8217;m excited to say that I will be speaking at <strong><a href="https://www.microsoft.com/en-us/ignite/">Ignite </a></strong>this year in Orlando!</p>
<p>I was at Ignite in Atlanta last year and it was an excellent experience. I&#8217;m really looking forward to meeting new people and running into old friends.</p>
<p>If you&#8217;ll be at Ignite, here are the details on my session:</p>
<p><span style="color: black; font-family: Segoe UI Semibold; font-size: 25pt;">Achieve more in less time using the new SQL PowerShell<br />
</span></p>
<ul>
<li>
<div><a href="https://myignite.microsoft.com/speaker/218245?source=sessiondetail&amp;sessionId=55401"><span style="color: #0067b8; font-family: Arial; font-size: 13pt;">Aaron Nelson</span></a><span style="color: black; font-family: Arial; font-size: 13pt;"><br />
</span></div>
<p><span style="color: black; font-family: Segoe UI; font-size: 11pt;">Microsoft&#8217;s official PowerShell module for SQL Server offers faster ways to manage your entire data-loving world. Learn about the best features in the new sqlserver module, and why every data professional will find it useful. Prior to SQL Server 2016, using SQL PowerShell was like installing training wheels on a Ducati. The SQL Tools team changed all that, by working with the community to prioritize improvements to SQL PowerShell. Additionally, they&#8217;ve started releasing regular updates. The SQL Server team has already delivered new cmdlets to help you manage SQL Agent Jobs, SQL Error Logs, and Add &amp; Remove Logins. One of the best new features is the ability to now query multiple sources (SQL, csv files, etc.)<br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt;"><strong>Session Code<br />
</strong></span></p>
<p><span style="color: black; font-family: Segoe UI;"><a href="https://myignite.microsoft.com/sessions/55401?source=speakerdetail">THR3030</a><br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt;"><strong>Session Length<br />
</strong></span></p>
<p><span style="color: black; font-family: Segoe UI;">20 mins<br />
</span></p>
<p><span style="color: black; font-family: Segoe UI; font-size: 10pt;"><strong>Level<br />
</strong></span><a href="https://myignite.microsoft.com/sessions?f=%5B%7B%22name%22%3A%22Advanced%20(300)%22%2C%22facetName%22%3A%22levels%22%7D%5D"><span style="color: #0067b8; font-family: Arial; font-size: 11pt;">Advanced (300)</span></a><span style="color: black; font-family: Arial; font-size: 11pt;"><br />
</span></li>
</ul>The post <a href="https://sqlvariant.com/2017/08/im-speaking-at-ignite-in-orlando/">I’m Speaking at Ignite in Orlando!</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2017/08/im-speaking-at-ignite-in-orlando/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3056</post-id>	</item>
		<item>
		<title>[Quick Blog] SQL Server Cross-Platform Command Line Tools</title>
		<link>https://sqlvariant.com/2017/08/quick-blog-sql-server-cross-platform-command-line-tools/</link>
					<comments>https://sqlvariant.com/2017/08/quick-blog-sql-server-cross-platform-command-line-tools/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Mon, 21 Aug 2017 02:20:07 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Scripting Databases]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3052</guid>

					<description><![CDATA[<p>Recently while I was on a conference call with some of the engineers from the SQL Server product team at Microsoft, the topic of their new multi-platform scripting tool came up. I told them that I would really prefer to use PowerShell to script out my database objects no matter which O/S I was using [&#8230;]</p>
The post <a href="https://sqlvariant.com/2017/08/quick-blog-sql-server-cross-platform-command-line-tools/">[Quick Blog] SQL Server Cross-Platform Command Line Tools</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p>Recently while I was on a conference call with some of the engineers from the SQL Server product team at Microsoft, the topic of their new multi-platform scripting tool came up.  I told them that I would really <a href="https://connect.microsoft.com/SQLServer/feedback/details/2554415">prefer to use PowerShell</a> to script out my database objects no matter which O/S I was using or the database was hosted on.
</p>
<p>I also mentioned that the tools can be kind of hard to find.  With that in mind, I just wanted to write this quick blog post in the hopes of making it easier for customers to find these tools so they can try them out.
</p>
<p>Here&#8217;s an excerpt from their <a href="https://github.com/Microsoft/sql-xplat-cli">GitHub page</a> for mssql-scripter:
</p>
<blockquote>
<p>&#8220;We&#8217;re excited to introduce mssql-scripter, a multi-platform command line experience for scripting SQL Server databases.
</p>
</blockquote>
<blockquote>
<p>mssql-scripter is the multiplatform command line equivalent of the widely used Generate Scripts Wizard experience in SSMS. You can use mssql-scripter on Linux, macOS, and Windows to generate data definition language (DDL) and data manipulation language (DML) T-SQL scripts for database objects in SQL Server running anywhere, Azure SQL Database, and Azure SQL Data Warehouse.&#8221;
</p>
</blockquote>
<p>Cheers!</p>The post <a href="https://sqlvariant.com/2017/08/quick-blog-sql-server-cross-platform-command-line-tools/">[Quick Blog] SQL Server Cross-Platform Command Line Tools</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2017/08/quick-blog-sql-server-cross-platform-command-line-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3052</post-id>	</item>
		<item>
		<title>Session Resources for: Visual Design Tips for Power BI &#038; SSRS 2016+</title>
		<link>https://sqlvariant.com/2017/08/session-resources-for-visual-design-tips-for-power-bi-ssrs-2016/</link>
					<comments>https://sqlvariant.com/2017/08/session-resources-for-visual-design-tips-for-power-bi-ssrs-2016/#respond</comments>
		
		<dc:creator><![CDATA[Aaron Nelson]]></dc:creator>
		<pubDate>Thu, 17 Aug 2017 15:03:58 +0000</pubDate>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Power BI]]></category>
		<category><![CDATA[Power BI Report Server]]></category>
		<category><![CDATA[SSRS 2016]]></category>
		<category><![CDATA[Syndicated]]></category>
		<category><![CDATA[Theme File]]></category>
		<guid isPermaLink="false">https://sqlvariant.com/?p=3043</guid>

					<description><![CDATA[<p>Yesterday I did a session for Idera&#8217;s Geek Sync series called &#8220;Visual Design Tips for Power BI &#38; SSRS 2016+&#8221;. In the session, I called out a bunch of resources that I had used to build me session. Here are the things I talked about and the and where to download the different pieces. SQL [&#8230;]</p>
The post <a href="https://sqlvariant.com/2017/08/session-resources-for-visual-design-tips-for-power-bi-ssrs-2016/">Session Resources for: Visual Design Tips for Power BI & SSRS 2016+</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2017/08/081717_1503_SessionReso1.png" alt="" align="right" />Yesterday I did a session for Idera&#8217;s Geek Sync series called &#8220;Visual Design Tips for Power BI &amp; SSRS 2016+&#8221;. In the session, I called out a bunch of resources that I had used to build me session. Here are the things I talked about and the and where to download the different pieces.</p>
<h2>SQL Server Dashboard Reports</h2>
<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2017/08/081717_1503_SessionReso2.png" alt="" align="right" />I showed that you can download &amp; deploy the <span style="color: #24292e; font-family: Segoe UI; font-size: 10pt;">SQL Server Dashboard Reports</span> from the SQL Tiger team.</p>
<p>You can find a blog post explaining how those reports work <a href="https://blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-dashboard-reports-unleashed-for-enterprise-monitoring/">here</a></p>
<p>You can find the MSSQL Tiger Team&#8217;s GitHub Repo <a href="https://github.com/Microsoft/tigertoolbox/tree/master/SQL-performance-dashboard-reports">here</a><br />
An article I wrote explaining how to deploy those reports to your SSRS / Power BI Report Server with PowerShell <a href="https://www.mssqltips.com/sqlservertip/4738/powershell-commands-for-sql-server-reporting-services/">here</a></p>
<p>As a quick reminder, the performance_dashboard_main report from that project is now included as part of SQL Management Studio in SSMS 17.2+ <a href="http://aka.ms/SSMS">http://aka.ms/SSMS</a></p>
<h2>SSRS Themes</h2>
<p>I actually stole my SSRS theme from Guy in a Cube ( <a href="https://twitter.com/guyinacube">t</a> ). <a href="sqlvariant.com/BlogSupport/ssrs-Colors-NoLogo.zip">Here</a> is a modified version of the theme I was using. You can find out more about SSRS branding <a href="https://guyinacube.com/2016/06/brand-your-report-server/">here</a>.</p>
<h2>Power BI Themes</h2>
<p><img decoding="async" src="https://sqlvariant.com/wp-content/uploads/2017/08/081717_1503_SessionReso3.jpg" alt="" align="right" />You have <a href="https://community.powerbi.com/t5/Themes-Gallery/bd-p/ThemesGallery">plenty of options</a> for Power BI Themes. You can find the Waveform theme <a href="https://community.powerbi.com/t5/Themes-Gallery/Waveform/td-p/140536">here</a> or the theme I was using <a href="https://gist.github.com/SQLvariant/73a0619b3bbd855b484d1e0bbecb0a4c">here</a>.</p>
<h2>dbareports</h2>
<p>You can find out more about the dbareports open-source project at <a href="dbareports.io">dbareports.io</a></p>
<p>I hope that helps everyone and please leave a comment if I left out one of the resources I was using!</p>
<p>[contact-form]</p>The post <a href="https://sqlvariant.com/2017/08/session-resources-for-visual-design-tips-for-power-bi-ssrs-2016/">Session Resources for: Visual Design Tips for Power BI & SSRS 2016+</a> first appeared on <a href="https://sqlvariant.com">SQLvariations: SQL Server, a little PowerShell, maybe some Power BI</a>.]]></content:encoded>
					
					<wfw:commentRss>https://sqlvariant.com/2017/08/session-resources-for-visual-design-tips-for-power-bi-ssrs-2016/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3043</post-id>	</item>
	</channel>
</rss>
