Introduction
Multi server administration allows you to create jobs and
maintenance plans once, on a server designated as your master server. All jobs and maintenance plans created on the
master server can then be executed on any server enlisted as a target server to
your master server. Job statuses can be
checked from the master server. In
effect you are centralizing your administration of automatic processes onto one
SQL Server.
The usefulness of multi server administration to you will
depend largely on how many SQL Servers you have and how many jobs and/or
maintenance plans are the same on more than one of them.
This article is designed to give you a good understanding of
multi server administration so that you can implement it on your SQL
Servers. Everything described in this
article was tested extensively on SQL Server 7.0 with Service Pack 3. It is likely that most of what I explain here
can be used on SQL Server 2000, but you would have to test this yourself.
Configuring Multi Server Administration
You must have at least 2 SQL Servers to configure multi
server administration. One server will
be designated a master or MSX and the other will be designated a target or
TSX. I am not aware of a limit to the
number of target servers one master server can have. A SQL Server designated as a target server
can only be enlisted to one master server.
To configure multi server administration double click the
Management folder, right click SQL Server Agent, select Multi Server
Administration, and choose Make this a master.
This will activate the wizard that will create your master server and
enlist the target server(s) you designate.
Complete the steps in the wizard to configure multi server
administration. Once complete you are
ready to add jobs and maintenance plans.
The first screen of the wizard (called Make MSX Wizard)
requests contact info for an operator called MSXOperator. This will be the only operator that can
receive notifications from multi server jobs.
Also, if you plan to be notified by e-mail then each target server that
you want to send you an e-mail must have a mail profile for the SQL Server
Agent. The subject of each e-mail will
identify which target server is sending the message to you.
I don’t know if clustered servers can be included in multi
server administration. I have seen one
distinct difference when trying to include a clustered server. The list of tasks the wizard will perform
includes starting the physical SQL Server Agent which doesn’t run in a
clustered environment; the clustered server uses a virtual SQL Server
Agent. Since the only clustered servers
we have are production servers I decided not to complete the set up and exited
the wizard.
Managing Multi Server Administration
Now to manage multi server administration you follow the
same directions as I gave above to launch the wizard to configure it. Except that now you won’t see the option Make
this a master. Double click the
Management folder, right click SQL Server Agent, select Multi Server
Administration, and Manage Target Servers.
You’ll see a window open up with a list of all your target servers. You’ll notice there are two tabs. The current one is Target Server Status and
the other one is Download Instructions.
Target Server Status
There are three buttons on the Target Server Status
tab. The Force Poll button can be used
to force the highlighted target server to poll for pending instructions. Doing this also resets the time until the
next poll will take place (I’ll discuss more about this in the Set Polling
Interval section).
The Force Defection button can be used to remove a target
server from multi server administration.
Doing this from the master server will leave the multi server jobs on
the ex-target server. You can then
remove them from the ex-target server by right clicking its SQL Server Agent,
selecting Multi Server Administration, and Defect From
MSX. When I forced the defection at the
target server all reference to it was removed from the master. It is best to not force defection when you
can issue a defect instruction that will automatically clean up most everything
associated with multi server administration (the few things a normal defection
doesn’t clean up will be discussed in other parts of this article).
The Post Instructions button allows you to instruct a target
server to defect, change the polling interval, synchronize clock with the
master server, and instruct a job to start.
These instructions are available to choose from after clicking this button.
Instructing a target server to defect is much cleaner than
forcing it to defect. The instruction
will be downloaded and executed the next time that target server polls the
master. Upon receiving the defect
instruction the server will remove itself from the list of target servers and
clean up almost everything associated with multi server administration. By this I mean it will delete all multi
server jobs from itself, however if a multi server maintenance plan created
those jobs, you will still find the name of the maintenance plan when you view
your maintenance plans. Upon opening the
plan you’ll find that none of the tabs have anything checked off. The following two queries will delete the
remains of these multi server maintenance plans:
USE msdb
DELETE mpd
FROM sysdbmaintplan_databases
mpd
WHERE mpd.plan_id
IN
(
SELECT mp.plan_id
FROM sysdbmaintplans
mp
LEFT JOIN sysdbMaintplan_jobs
mpj ON mpj.plan_id = mp.plan_id
LEFT JOIN sysjobs j
ON SUBSTRING(name,CHARINDEX('''',name,1)
+ 1, LEN(name) - 1 - CHARINDEX('''',name,1)) = mp.plan_name
WHERE mpj.plan_id
IS NULL AND mp.plan_name <> 'All ad-hoc plans'
AND j.job_id IS NULL
)
DELETE mp
FROM sysdbmaintplans
mp
LEFT JOIN sysdbMaintplan_jobs
mpj ON mpj.plan_id = mp.plan_id
LEFT JOIN sysjobs j
ON SUBSTRING(name,CHARINDEX('''',name,1)
+ 1, LEN(name) - 1 - CHARINDEX('''',name,1)) = mp.plan_name
WHERE mpj.plan_id
IS NULL AND mp.plan_name <> 'All ad-hoc plans'
AND j.job_id IS NULL
The Set Polling Interval instruction allows
you to change the polling interval from the default, which is 60 seconds. Polling interval can be set different
for each target server. The interval is
set in seconds and can be between 10 and 28800 (8 hours). To make the new polling interval take effect
immediately you can click on the Force Poll button after giving the new polling
intervals. Any time you force a target
server to poll for new instructions you reset the poll interval to start
counting from the time you forced that target server to poll. For example, if you have a target server with
a polling interval of 10 seconds and it polls for new instructions at 10
seconds past the minute and then 20 seconds past and so on. If you force it to poll for instructions at
15 seconds past the minute then it will continue polling every 10 seconds from
that time so that the next time it polls now will be 25 seconds past the minute
and then 35 seconds past and so on. This
can be useful if you want to make sure no target server polls at the same time as
any other target server and thus minimize network traffic to only one target
server at a time.
I have seen that when you defect a target server and then
enlist it again to the same master or a different master the polling interval
will be the number of seconds you set it to last before you defected the
server. So, if you set the polling
interval to 10 seconds, defect the server, and then enlist it as a target again
it will still have a polling interval of 10 seconds. This value doesn’t reset to the default of 60
seconds.
Now
let me discuss network traffic. I have
only been able to test multi server administration on a 100 MB Ethernet LAN
using switches to connect all the servers to the network. I used 1 master server and 3 target servers
and set all of them to poll the master every 10 seconds. Then I watched how much network traffic was
generated. The bandwidth used was so
small as to be negligible. I believe
there would be little or no problem running this on any network as long as you
increase your polling interval for smaller bandwidth. For example, I believe that polling every
hour or every two hours across a T1 line would be no problem as the polling
only lasts a second or less.
The last instruction you can issue is to have a multi server
job start. Multi server jobs will be
discussed below in another section of this article.
All these instructions can be sent to one or more target
servers or all target servers.
Download Instructions
The Download Instructions tab allows you to review the
instructions you have issued for each target server. In the target server drop down you can select
an individual target server or all target servers. For the job drop down you can select all jobs
or an individual job. Upon making
selections the display area changes to show the instructions associated with
the selected target server(s) and selected job(s).
In the display you will see the target server name,
operation, object name, date posted (which is the date you issued the
instruction), and the date downloaded (which is when the instruction was polled
by the target server and executed).
Adding Target Servers
It is a simple matter to add more target servers to a master
server after multi server administration is set up. Simply right click the SQL Server Agent of
the master server where you plan to add a target server, select Multi Server
Administration, and Add Target Server.
The list you see will be the SQL Servers registered with Enterprise
Manager on the computer you are logged into.
The list will include servers that are target servers to other servers
and other master servers. However, you
can’t enlist master servers nor can you enlist servers that are targets to a
different master. You must first defect
the target server from the other master before enlisting it with another master
server. Each target server can have only
one master server.
You can also enlist a target server by going to the server
you plan to make a target server. Right
click its SQL Server Agent, select Multi Server Administration, and Make this a
Target. This will launch the Make TSX
Wizard. When prompted enter the name of
the master server you want this target to be enlisted to.
Multi Server Maintenance Plans
After you have set up multi server administration you can
create multi server maintenance plans. This
must be done from the master server. The
creation process is identical to how you would do it on a server not part of
multi server administration except that the first screen of the wizard will
allow you to designate which servers this plan will run on. You can select one, multiple, or all target
servers and/or local. After creation
you’ll have to wait until each target server polls the master for it to get the
maintenance plan or you can force each one to poll. Whenever you make a change to the maintenance
plan instructions will be posted and polled by the target servers. All changes made to this plan will also be
reflected in the jobs on the local server if you included the local (master)
server in the maintenance plan.
I have noticed that if I only make a change on the
optimization tab for the change free space percentage it doesn’t keep this
change nor post it for the target servers.
However if I change the Shrink database when it grows beyond size and the
percentage mentioned above then both changes will be posted for the target
servers. The best way to make sure the
change you made will be posted is to reopen the maintenance plan and see if the
changes you made are there. If they are
then you can go see the posted instructions on the target server tab for multi
server administration.
Multi
Server Jobs
Upon successful creation of a master server you will notice
a plus sign next to the jobs icon in the left window of Enterprise
Manager. When you click on this plus
sign you will see to areas for jobs. One
is labeled Local Server Jobs and the other Multi Server Jobs. Jobs you want to run on the master must be
created in the Local Server Jobs area.
Multi server jobs created on the master can’t run on the
local server. If you created a multi
server maintenance plan (or create one now) that runs on the targets and the
local (master) server you can open the Local Server Jobs folder and see the
jobs for that maintenance plan that will run on the master server. Now look in the Multi Server Jobs folder and
you will see the same jobs for the same maintenance plan. However, these will only run on the target
servers.
Creating jobs is the same as you would for a SQL Server that
is not part of multi server administration.
The only difference here is that when you create a job in the Multi
Server Jobs folder you can select one or more target servers on which you want
this job to run. When you open the job
properties you’ll notice in the lower right corner a button labeled Change
(normally grayed out for local jobs).
Click it to assign target servers to the multi server job.
You can right click any multi server job (on the master
server) and select job status to see the last execution status for the job on
each target server. To see the entire
history for a job on a particular target server, simply click on the target
server and then click the button called view remote job history. Now you will be looking at the job history as
if you were looking at it on the server itself.
This way you can review the job history for multiple servers without
having to open each server and the various folders to see each job on each
server. The more servers you have the
more useful this becomes as you have to click around the screen less and
connect to one server instead of however many servers you have to view the
status and history for each server.
There is a radio button that allows you to view status by job or by
server.
You can start a particular multi server job on all or
selected target servers by right clicking the job, selecting start job, and
then deciding if you want to start it on all target servers or only a few.
The target server status button takes you to the same window
as described above in managing multi server administration.
The Synchronize Jobs button is only needed if you must
restore the msdb on the master server and there were
changes to multi server jobs that occurred after the last backup. This button will resynchronize those changes.
Security
One nice thing about multi server administration is that the
multi server jobs and MSXOperator on each target
server can’t be modified from the target server. All changes must be done on the master
server. This ensures that you or any
other administrator doesn’t accidentally (or intentionally) change or delete
those jobs. This feature also allows you
to know that all the multi server jobs are identical.
Removing Multi Server Administration
To remove multi server administration completely you must
defect all target servers. When the last
target server successfully defects the master server is uninstalled. Unfortunately, a number of multi server jobs
and the MSXOperator get left behind on the ex-master
and an empty shell for multi server maintenance plans gets left on each
ex-target server. I provided the SQL
commands to remove those orphaned plans from the ex-target servers earlier in
this article. Here are the SQL commands
you must execute on the ex-master server to remove what got left behind on it:
USE msdb
DELETE j
FROM sysjobs j
WHERE j.category_id = 2 --This is the ID for multi server jobs
IF (EXISTS
(SELECT name FROM msdb.dbo.sysoperators WHERE name = N'MSXOperator'))
---- Delete operator with the same name.
EXECUTE msdb.dbo.sp_delete_operator
@name = N'MSXOperator'
On the other hand if you leave the multi server jobs there
and make the ex-master server a master server again then the jobs will
automatically move to the multi server jobs folder and you can then simply add
target servers to them and they’ll be ready to use again. Jobs in the category [Uncategorized
(multi-server] can not be run on an ex-master server until the category is
changed to a local category. So you must
either run the above delete statement to get rid of them or change all of them
to local jobs if you plan to keep using them.
Summary
In this article you have learned how to set up multi server
administration, multi server maintenance plans, and multi server jobs. You have seen how useful or not useful multi
server administration will be for you with your current environment. You will also have a good working knowledge
of how to manage multi server administration.
I welcome your comments on this article.