一、 安装配置
1. 安装要求
Server
- SQL Server 2000
- No PowerShell needed on the host for SQL Server-only commands
- PowerShell remoting enabled on the host for remote Windows commands
Workstation
- Windows 7 with PowerShell 3
- Linux or macOS with PowerShell 6.1
2. 离线安装
- 下载安装包 https://dbatools.io/zip
- 解压安装包并重命名为 dbatools
- powershell中输入 $env:PSModulePath 可看到改环境变量配置的Module路径,可以选择将dbatools目录放入其中,或者为PSModulePath环境变量配置dbatools所在路径,避免每次都要执行 import-module
- 之后就可以随意执行下get命令测试了(管理员模式运行),例如下图,注意 -sqlinstance 后跟的是主机名
- 也有在线安装方法,不过内网服务器基本都没法用,不详细列出,可参考 https://dbatools.io/download/
- 离线安装文档 https://dbatools.io/offline/
二、 命令测试
测试 Sync-DbaAvailabilityGroup 命令,该命令用于AlwaysOn AG主从同步,可同步对象默认包括:SpConfigure, CustomErrors, Credentials, DatabaseMail, LinkedServers, Logins, LoginPermissions, SystemTriggers, DatabaseOwner, AgentCategory, AgentOperator, AgentAlert, AgentProxy, AgentSchedule, AgentJob,可以用exclude参数排除部分对象,也可利用参数指定只同步某些对象。
Example: 1,同步所有对象
Sync-DbaAvailabilityGroup -Primary localhost -AvailabilityGroup myag
Example: 2,利用Get-DbaAvailabilityGroup获取AG信息;排除login1,login2,job中仅同步job1,job2,其余对象均同步
Get-DbaAvailabilityGroup -SqlInstance localhost | Sync-DbaAvailabilityGroup -ExcludeType LoginPermissions, LinkedServers -ExcludeLogin login1, login2 -Job job1, job2
Example: 3,查看该命令到底要执行什么(不实际执行)
Get-DbaAvailabilityGroup -SqlInstance localhost | Sync-DbaAvailabilityGroup -WhatIf
同步期间可能会出现如下报错,可能是因为脚本无法访问link server中的密码
Example: 4,仅同步LinkedServers,Logins,LoginPermissions类型对象
Get-DbaAvailabilityGroup -SqlInstance localhost | Sync-DbaAvailabilityGroup -ExcludeType SpConfigure,CustomErrors,Credentials,DatabaseMail,SystemTriggers,DatabaseOwner,AgentCategory,AgentOperator,AgentAlert,AgentProxy,AgentSchedule,AgentJob
Example: 5,仅同步AgentSchedule,AgentJob类型对象,如果已存在则drop后重新同步
Get-DbaAvailabilityGroup -SqlInstance localhost | Sync-DbaAvailabilityGroup -Force -ExcludeType SpConfigure,CustomErrors,Credentials,DatabaseMail,LinkedServers,Logins,LoginPermissions,SystemTriggers,DatabaseOwner,AgentCategory,AgentOperator,AgentAlert,AgentProxy
没有include参数感觉还蛮不方便的,只同步一类对象要写exclude一大串
参考: