SQL Server and PowerShell Let’s Get Serious

Slides:



Advertisements
Similar presentations
Batch Import/Export/Restore/Archive
Advertisements

Learningcomputer.com SQL Server 2008 – Administration, Maintenance and Job Automation.
A Networked Machine Management System 16, 1999.
Master Data Management & Microsoft Master Data Services Presented By: Jeff Prom Data Architect MCTS - Business Intelligence (2008), Admin (2008), Developer.
CMap Version 0.16 Ben Faga. CMap CMap Version 0.16 Bug fixes and code optimizations More intuitive menu system Asynchronous loading of comparative map.
Rob Sewell Making PowerShell Useful Real-Life Examples of Powershell in Action Slides available here -
ROLLING DATABASE SNAPSHOTS David Cobb Daveslog.com.
Others Talk, We Listen. Managing Database Projects in Visual Studio 2013.
SQL Database Management
Start-SPPowerShell – Introduction to PowerShell for SharePoint Admins and Developers Paul BAker.
Backups for Azure SQL Databases and SQL Server instances running on Azure Virtual Machines Session on backup to Azure feature (manual and managed) in SQL.
IT06 – HAVE YOUR OWN DYNAMICS NAV TEST ENVIRONMENT IN 90 MINUTES
Essentials of UrbanCode Deploy v6.1 QQ147
Intermediate DSpace: Metadata Imports & Exports
Working with SQL Server for Linux Cross-Platform
Justin Randall SQLintersection Session: Friday, 10:00am-11:15pm Automating SQL Server Administration Using SQLCMD Justin Randall.
Shared Services with Spotfire
Glasgow, SQL Server Meetup
6/16/2018 © 2014 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks.
PowerShell is Happening FOR REAL THIS TIME!!!
Getting Started With SQL Server Replication
Exam in just 24 hours!!! Pass your exam in first attempt by the help of our latest braindumps
Installation and database instance essentials
Fun with Reporting Services Tools
Upgrading to SQL Server 2016
Simplifying XEvents Management with dbatools
DevOps Database Administration
Transactional Replication A Deeper Dive Drew Furgiuele, Senior DBA IGS
Azure Automation and Logic Apps:
11/8/2018 2:35 PM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or.
SharePoint Saturday Omaha April 2016
SQL Server and PowerShell Let’s Get Serious
Making PowerShell Useful
DevOps Database Administration
SQL Saturday #654 - Omaha.
SQL Server and PowerShell Let’s Get Serious
Making PowerShell Useful
What’s new in SQL Server 2016 Availability Groups
Migrating your SQL Server Instance
dbatools - PowerShell and SQL Server Working Together
CRM 2016 Solutions and Package Deployer
PowerShell for Data Professionals
SQL Server and PowerShell Let’s Get Serious
SQL Server Scripting using PowerShell
Getting started with Powershell for the DBA
Table Partitioning Intro and make that a sliding window too!
Please thank our sponsors!
Making PowerShell Useful
Making PowerShell Useful
SharePoint Permissions Manager
Outsourcing Database Administration
EXPLORING THE SQL POWERSHELL MODULE
Your code is not just…your code
Presented by : Chirag Dani & Dhaval Shah
Table Partitioning Intro and make that a sliding window too!
Grow Your Script From Simple to Module
Summit Nashville /3/2019 1:48 AM
Table Partitioning Intro and make that a sliding window too!
Mass Hunting and exploitation with powershell
NAVIGATING THE MINEFIELD
TechEd /23/2019 9:23 AM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Gold Sponsors.
SQL Server Scripting using PowerShell
Michael Wall Senior DBA, Great Western Malting
Michelle Haarhues Keeping up with SSMS.
SSDT, Docker, and (Azure) DevOps
SSDT, Docker, and (Azure) DevOps
Bringing source control to BI world!
Your code is not just…your code
Samuel Kastberg Scripting a BizTalk Server installation
Presentation transcript:

SQL Server and PowerShell Let’s Get Serious Did you remember to? Start VM’s? Start SQL instances on local machine (both!) Start SSMS? Bring up web site to show? Open source code to show? Delete the .sql files? Create an empty “AnotherDatabase” for demos? 11/16/2018

About me Contact Info I’m a Senior SQL Server DBA at IGS Energy in Dublin, Ohio. I’ve been using SQL Server since SQL Server 2000 and I love it. I also enjoy DevOps, release management, and PowerShell. dfurgiuele@igsenergy.com @pittfurg http://www.port1433.com http://www.genesface.com 11/16/2018

AGENDA Why using PowerShell will make your life more awesome SQL Server PowerShell Provider Code, code, and more code! You can help me be better! Fill out an online evaluation here: http://www.sqlsaturday.com/492/sessions/sessionevaluation.aspx?dfsid=17102 11/16/2018

Using PowerShell Will Make Your Life Awesome! “I don’t want to learn PowerShell because I don’t have time.” “Why would I waste time writing this in PowerShell when I can already do it in T-SQL?” Understanding PowerShell in general increases your worth. Helps you interact with System Administrators better. Useful for deploying code or system changes. Saves you a ton of time (automate all the things!). Core Servers laugh at your puny GUI. Let me know how you plan on automating things in Azure. 11/16/2018

The SQL Server PowerShell Provider SQLPS Module It’s where the awesome lives Provides a directory hierarchy for interacting with SQL Server NOT perfect, but: SSMS 2016 fixes A LOT of problems Be careful with multiple versions of SSMS/SQL Server installed on same machine For more information, including cmdlets and SMO objects: https://msdn.microsoft.com/en-us/library/cc281947(v=sql.110).aspx Import the module Show the path Show databases, use get-member Show names and sizes 11/16/2018

Style Points Write scripts, not code Return objects where possible Let the provider do the work! Gross: Less Gross: Butter: [Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") $SQLSvr = "." $ServerObject = new-object "Microsoft.SqlServer.Management.Smo.Server" $SQLSvr $Databases = $ServerObject.Databases Add-Type -AssemblyName "Microsoft.SqlServer.SMO,Version=13.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91“ $SQLSvr = “localhost” $ServerObject = New-Object "Microsoft.SqlServer.Management.SMO.Server" $SQLSvr $Databases = $ServerObject.Databases Import-Module SQLPS $Databases = Get-ChildItem -Path "SQLSERVER:\SQL\LOCALHOST\DEFAULT\DATABASES" 11/16/2018

Let’s Just Do it! 11/16/2018

Real-World Example: Export Database Objects (not just tables) for DR purposes Why backup an entire reporting replica when you can just grab the good bits? Perfect for reporting environments Talk about the .Script() method, maybe bring up MSDN page if able? To File: .\Get-DatabaseObjects.ps1 -serverName localhost -databaseName AdventureWorks2014 -saveTo File -fileName C:\temp\Adventureworks2014_Objects.sql –Verbose To Database: .\Get-DatabaseObjects.ps1 -serverName localhost -instanceName sql2014 -databaseName AdventureWorks2014 -saveTo Database -repoServerName localhost -repoInstanceName sql2014 –repoDatabaseName Admin -repoSchemaName Repo -repoTableName ObjectsRepository –Verbose Create TWO new databases when you’re done, and run the generated script! 11/16/2018

Real-World Example: Dynamically Copy Database Tables From One Database to Another PowerShell makes it easy to iterate over a Database/Schema and script out objects while also copying the data. What about Foreign Keys? What about Indexes? Permissions? Good intro into PowerShell provider and SQL drive paths Refresh() method on tables… why? Create a new database .\Copy-DatabaseTables.ps1 -SourceServerName localhost -SourceInstanceName sql2014 -SourceDatabaseName AdventureWorks2014 -DestinationServerName localhost -DestinationDatabaseName Somedatabase -DestinationSchemaName Sales -WorkingDirectory C:\temp -noCheckConstraints –Verbose –WarningAction silentlycontinue 11/16/2018

Real-World Example: Copy SSIS Environments Need to clone that SSIS environment locally? What about to another server? Or another instance? Because it’s a colossal pain it the ass! Mention “SSIS” instead of “SQL” path, how the provider lists all instances under the main hostname Another good example of .Refresh() .\Export-SSISEnvironment.ps1 -SourceServer localhost -SourceInstance sql2014 -SourceFolder SomeProject -sourceEnvironment QA -targetServer localhost -targetInstance sql2014 -targetFolder NewProject –Verbose 11/16/2018

Real-World Example: Deploying Extended Events Want to shotgun a bunch of extended events to a lot of servers? PowerShell has got you covered! Show code, talk about how the provider can be fooled Talk about reflection loading (load with partial name) .\Export-SSISEnvironment.ps1 -SourceServer localhost -SourceInstance sql2014 -SourceFolder SomeProject -sourceEnvironment QA -targetServer localhost -targetInstance sql2014 -targetFolder NewProject –Verbose 11/16/2018

Real-World Example: Managing Backups Managing backups in SQL server isn’t neccesarily difficult, but being consistent can be. Using PowerShell you can keep your scripts unified across all servers for better naming conventions And you can use it to restore a database to a point in time by gathering all your log files together, too! Show code, talk about how the provider can be fooled Talk about reflection loading (load with partial name) .\Export-SSISEnvironment.ps1 -SourceServer localhost -SourceInstance sql2014 -SourceFolder SomeProject -sourceEnvironment QA -targetServer localhost -targetInstance sql2014 -targetFolder NewProject –Verbose 11/16/2018

Real-World Example: Auditing SQL Server Group Permissions Just who has access to that database? In an active directory environment, guess what? There’s a tool (and module!) for that… Great example about how you can marry multiple products together Install-windowsfeature -name AD-Domain-Services –IncludeManagementTools .\Start-SQLPermissionsAudit.ps1 -servername localhost -databaseName AdventureWorks2014 -Verbose | Export-Csv Users.txt -NoTypeInformation 11/16/2018

Wrapping Up PowerShell is a great tool that you should be using, or trying to use. Not saying it should solve/replace all your tasks, just supplement them. Helps blur the line between a SQL Server Professional/DevOps/Iteration Management/etc A more robust you = a more in-demand you. 11/16/2018

Would you like to know more? MSDN Resources: SQL Server PowerShell Provider: https://msdn.microsoft.com/en-us/library/cc281947.aspx Windows PowerShell Reference: https://technet.microsoft.com/en-us/library/ms714469(v=vs.85).aspx People/Blogs: Hey, Scripting Guy! http://blogs.technet.com/b/heyscriptingguy/ Mike Fal (@mike_fal): http://www.mikefal.net/ Allen White (@SQLRunr): http://sqlblog.com/blogs/allen_white/default.aspx Ben Miller (@dbaduck) 11/16/2018

Questions? 11/16/2018

Thank you, sponsors! 11/16/2018

About me Contact Info I’m a Senior SQL Server DBA at IGS Energy in Dublin, Ohio. I’ve been using SQL Server since SQL Server 2000 and I love it. I also enjoy DevOps, release management, and PowerShell. dfurgiuele@igsenergy.com @pittfurg http://www.port1433.com http://www.genesface.com 11/16/2018