dbatools demo
break #从PowerShell Gallery 安装dbatools模组 Install-Module dbatools <# 01.查找SQL实例 02.连接SQL实例 03.检查备份 04.检查磁盘空间 05.备份数据库 06.安装欧拉维护工具 07.运行Job 08.测试备份 09.查看fail的job 10.检查最大内存设置 11.检查SQL版本 12.数据库迁移和账号迁移 #> #开始, 查找SQL实例 #使用tcp,udp,spns,wmi等方式探查 Find-DbaInstance -ComputerName 192.168.1.51 #把登陆信息存起来 $securePassword = ('yourpassword' | ConvertTo-SecureString -asPlainText -Force) $credential = New-Object System.Management.Automation.PSCredential('sa', $securePassword) #然后,尝试连接SQL Connect-DbaInstance -SqlInstance 192.168.1.51 -SqlCredential $credential #弹框,输入账号密码 $cred=get-credential sa Connect-DbaInstance -SqlInstance 192.168.1.52 -SqlCredential $cred #可以使用SSMS中的注册服务器,利用里面存的账号信息登陆 Get-DbaRegisteredServer -Name 192.168.1.52 #使用管道,连续操作 Get-DbaRegisteredServer -Name 192.168.1.52 | get-dbalastbackup| Out-GridView #检查你的备份情况 get-dbalastbackup -SqlInstance 192.168.1.52 -SqlCredential $cred |Select-Object * | Out-GridView #备份有缺失? 检查磁盘空间是否足够,使用windows账号 get-dbadiskspace -ComputerName 192.168.1.52 -Credential fp-qsmc\administrator #OK,空间足够,快速备份数据库,作为测试可以设定网络共享路径 backup-dbadatabase -SqlInstance 192.168.1.52 -SqlCredential $cred -Path \\192.168.1.52\backup #确认备份时间 Get-DbaLastBackup -SqlInstance 192.168.1.52 -SqlCredential $cred | Out-GridView #安装欧拉维护工具 $params=@{ sqlinstance="192.168.1.52" installjobs=$true replaceexisting=$true backuplocation="\\192.168.1.52\backup" sqlcredential=$cred } Install-DbaMaintenanceSolution @params #运行一些Job get-dbaagentjob -SqlInstance 192.168.1.52 -SqlCredential $cred |Out-GridView -PassThru |Start-DbaAgentJob invoke-item -Path "\\192.168.1.52\backup" #如果你好奇,可以查看一下正在运行的job Get-DbaRunningJob -SqlInstance 192.168.1.52 -SqlCredential $cred |Out-GridView #测试备份,并运行dbcc checkdb Test-DbaLastBackup -SqlInstance 192.168.1.52 -SqlCredential $cred -Database AdventureWorks2019 | Out-GridView #查看fail的job列表 Find-DbaAgentJob -SqlInstance 192.168.1.51 -SqlCredential $cred -IsFailed | Get-DbaAgentJobHistory |Out-GridView #检查最大内存设置 Test-DbaMaxMemory -SqlInstance 192.168.1.52 -SqlCredential $cred | Set-DbaMaxMemory -WhatIf $instanceSplat = @{ SqlInstance = $source, $target } #检查dbowner设置 Test-DbaDbOwner @instanceSplat | Select-Object SqlInstance, Database, DBState, CurrentOwner, TargetOwner, OwnerMatch | Format-Table #检查恢复模式 Test-DbaDbRecoveryModel @instanceSplat | Select-Object SqlInstance, Database, ConfiguredRecoveryModel, ActualRecoveryModel | Format-Table #检查tempdb文件个数配置 Test-DbaTempDbConfig @instanceSplat|Format-Table #检查MAXDOP设置 Calculator (https://blogs.msdn.microsoft.com/sqlsakthi/p/maxdop-calculator), Test-DbaMaxDop @instanceSplat|Format-Table #检查SQL版本,是否打最新补丁 #更新补丁信息 Update-DbaBuildReference #检查SQL版本 Test-DbaBuild -SqlInstance 172.26.40.91 -SqlCredential $cred -Latest Test-DbaBuild -SqlInstance 192.168.1.52 -SqlCredential $cred -Latest #运行数据库迁移和账号迁移 $securePassword = ('yourpassword' | ConvertTo-SecureString -asPlainText -Force) $credential = New-Object System.Management.Automation.PSCredential('sa', $securePassword) $source = connect-dbainstance -sqlinstance 192.168.1.51 -SqlCredential $credential $target = connect-dbainstance -sqlinstance 192.168.1.52 -SqlCredential $credential $migrateDbSplat = @{ Source = $source Destination = $target Database = 'TSQL' BackupRestore = $true SharedPath = '\\192.168.1.51\backup' #SetSourceOffline = $true #Verbose = $true } Copy-DbaDatabase @migrateDbSplat #账号迁移 $migrateLoginSplat = @{ Source = $source Destination = $target #Verbose = $true } Copy-DbaLogin @migrateLoginSplat