如何从列表中填充中央管理服务器注册

sql*_*irl 2 sql-server central-management-server

我需要从我域中的所有实例中删除用户。

为了做到这一点,我想创建一个 CMS 组并对其执行查询。问题是我要添加 150 多台服务器。如何将服务器批量添加到组中而不是手动添加?

Sco*_*red 5

我可能会为此任务推荐 Powershell,但我确实找到了一篇文章,它允许我自动生成 CMS 条目并且它对我有用 -使用 T-SQL 填充中央管理服务器

摘自那个帖子:

创建一个instance包含有关实例的一些信息的表

CREATE TABLE Instance (Instance varchar(255), SQLVersion varchar(10), 
    SDLC varchar(20));

INSERT INTO Instance VALUES
    ('(local)\sql2014cs','2014','Production'),
    ('(local)\sql2014ci','2014','Test'),
    ('(local)\sql2012','2012','Development'),
    ('(local)\SQLEXPRESS2012','2012','Production'),
    ('(local)\sql2008R2','2008 R2','Development');
Run Code Online (Sandbox Code Playgroud)

创建 CMS 分组

-- Version category
INSERT INTO msdb.dbo.[sysmanagement_shared_server_groups_internal] 
    VALUES ('Version','Instance Version',0,1,0);

-- Version subcategories
INSERT INTO msdb.dbo.[sysmanagement_shared_server_groups_internal] 
SELECT DISTINCT Instance.SQLVersion, Instance.SQLVersion, 0,
    Parent.server_group_id, 0
FROM Instance
CROSS JOIN msdb.dbo.[sysmanagement_shared_server_groups_internal] Parent
WHERE Parent.name = 'Version';

-- SDLC category
INSERT INTO msdb.dbo.[sysmanagement_shared_server_groups_internal] 
    VALUES ('SDLC','Instance SDLC level',0,1,0);

-- SDLC subcategories
INSERT INTO msdb.dbo.[sysmanagement_shared_server_groups_internal] 
SELECT DISTINCT Instance.SDLC, Instance.SDLC, 0,
    Parent.server_group_id, 0
FROM Instance
CROSS JOIN msdb.dbo.[sysmanagement_shared_server_groups_internal] Parent
WHERE Parent.name = 'SDLC';
GO
Run Code Online (Sandbox Code Playgroud)

添加实际实例

-- Instances broken out by Version
INSERT INTO msdb.dbo.[sysmanagement_shared_registered_servers_internal] 
SELECT Parent.server_group_id, Instance.Instance, Instance.Instance,
    Instance.Instance + ' - ' + Instance.SDLC, 0
FROM Instance
JOIN msdb.dbo.[sysmanagement_shared_server_groups_internal] Parent
    ON Instance.SQLVersion = Parent.name

-- Instances broken out by SDLC
INSERT INTO msdb.dbo.[sysmanagement_shared_registered_servers_internal] 
SELECT Parent.server_group_id, Instance.Instance, Instance.Instance,
    Instance.Instance + ' - ' + Instance.SQLVersion, 0
FROM Instance
JOIN msdb.dbo.[sysmanagement_shared_server_groups_internal] Parent
    ON Instance.SDLC = Parent.name
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明