jobs.sp_add_target_group_member (Azure 弹性作业) (Transact-SQL)
适用于:Azure SQL 数据库
将数据库或数据库组添加到 Azure 弹性作业服务中用于Azure SQL 数据库的目标组。
语法
[jobs].sp_add_target_group_member [ @target_group_name = ] 'target_group_name'
[ @membership_type = ] 'membership_type' ]
[ , [ @target_type = ] 'target_type' ]
[ , [ @refresh_credential_name = ] 'refresh_credential_name' ]
[ , [ @server_name = ] 'server_name' ]
[ , [ @database_name = ] 'database_name' ]
[ , [ @elastic_pool_name = ] 'elastic_pool_name' ]
[ , [ @target_id = ] 'target_id' OUTPUT ]
参数
@target_group_name
要向其添加成员的目标组的名称。 target_group_name为 nvarchar(128),没有默认值。
@membership_type
指定是包括目标组成员还是将其排除。 membership_type 为 nvarchar(128),默认值为“Include”。 membership_type的有效值为“Include”或“Exclude”。
@target_type
目标数据库或数据库集合的类型,包括Azure SQL 数据库逻辑服务器中的所有数据库、弹性池中的所有数据库或单个数据库。 target_type为 nvarchar(128),没有默认值。
target_type的有效值为 , SqlElasticPool
SqlDatabase
。SqlServer
@refresh_credential_name
数据库范围的凭据的名称。 refresh_credential_name为 nvarchar(128),没有默认值。
使用 Microsoft Entra 身份验证(以前为 Azure Active Directory)时,省略 @refresh_credential_name 参数。 仅用于基于凭据的身份验证。
@server_name
应添加到指定目标组的Azure SQL 数据库逻辑服务器的名称。 当target_type为SqlServer
server_name时,应指定server_name。 server_name为 nvarchar(128),没有默认值。
包括.database.windows.net
作为@server_name的一部分。
@database_name
应添加到指定目标组的数据库的名称。 当target_type为SqlDatabase
时,应指定database_name。 database_name为 nvarchar(128),没有默认值。
@elastic_pool_name
应添加到指定目标组的Azure SQL 数据库弹性池的名称。 当target_type为SqlElasticPool
elastic_pool_name时,应指定elastic_pool_name。 elastic_pool_name为 nvarchar(128),没有默认值。
@target_id 输出
分配给目标组成员的目标标识号,前提是其已创建并添加到目标组。 target_id是 uniqueidentifier 类型的输出变量,默认值为 NULL
.
返回代码值
0
(成功)或 1
(失败)。
注解
如果将服务器或弹性池包括在目标组中,则执行作业时,作业就会在服务器或弹性池中的所有单一数据库上执行。
为弹性作业的所有目标选择一种方法。 例如,对于单个弹性作业,不能将一个目标服务器配置为使用数据库范围的凭据,另一个服务器则使用 Microsoft Entra ID 身份验证。 有关详细信息,请参阅身份验证。
权限
默认情况下,只有 sysadmin 固定服务器角色的成员才可以执行此存储过程。 仅 sysadmin 的成员可以使用此存储过程来编辑其他用户拥有的作业的属性。
示例
将一个数据库添加到目标组
以下示例演示如何使用 Microsoft Entra(前 Azure Active Directory)身份验证将服务器中的一个数据库添加到名为 ElasticJobGroup
的目标组。
连接到 job_database
并运行以下命令,将 master
数据库添加到名为: ElasticJobGroup
的目标组:
-- Connect to the job database specified when creating the job agent
-- Create a target group containing elastic job database
EXEC jobs.sp_add_target_group 'ElasticJobGroup';
-- Add a server target member
EXEC jobs.sp_add_target_group_member
@target_group_name = 'ElasticJobGroup',
@target_type = 'SqlDatabase',
@server_name = 'server1.database.windows.net',
@database_name = 'master';
--View the recently created target group and target group members
SELECT * FROM jobs.target_groups
WHERE target_group_name='ServerGroup1';
GO
SELECT * FROM jobs.target_group_members
WHERE target_group_name='ServerGroup1';
GO
将多个数据库添加到目标组
以下示例将组中的所有 London
数据库和 NewYork
服务器添加到该组 Servers Maintaining Customer Information
。 在这种情况下 ElasticJobs
,必须连接到创建作业代理时指定的作业数据库。
使用 Microsoft Entra 身份验证(前为 Azure Active Directory)时,省略 @refresh_credential_name 参数,仅当使用数据库范围的凭据时,才应提供此参数。 在以下示例中,已注释掉 @refresh_credential_name
参数。
--Connect to the jobs database specified when creating the job agent
USE ElasticJobs;
GO
-- Create a target group containing server(s)
EXEC jobs.sp_add_target_group @target_group_name = N'Servers Maintaining Customer Information';
GO
-- Add a server target member
EXEC jobs.sp_add_target_group_member
@target_group_name = N'Servers Maintaining Customer Information',
@target_type = N'SqlServer',
--@refresh_credential_name=N'refresh_credential', --database-scoped credential
@server_name=N'London.database.windows.net';
GO
-- Add a server target member
EXEC jobs.sp_add_target_group_member
@target_group_name = N'Servers Maintaining Customer Information',
@target_type = N'SqlServer',
--@refresh_credential_name=N'refresh_credential', --database-scoped credential
@server_name=N'NewYork.database.windows.net';
GO
--View the recently added members to the target group
SELECT * FROM [jobs].target_group_members
WHERE target_group_name= N'Servers Maintaining Customer Information';
GO
排除逻辑服务器上的数据库
以下示例演示如何对逻辑服务器 server1.database.windows.net
中的所有数据库执行作业,但命名 MappingDB
的数据库或命名 MappingDB2
的数据库除外。
连接到 job_database
,然后运行以下命令:
--Connect to the job database specified when creating the job agent
-- Create a target group containing server(s)
EXEC [jobs].sp_add_target_group N'ServerGroup';
GO
-- Add a server target member
EXEC jobs.sp_add_target_group_member
@target_group_name = N'ServerGroup',
@target_type = N'SqlServer',
@server_name=N'server1.database.windows.net';
GO
--Exclude one database from a server target group
EXEC [jobs].sp_add_target_group_member
@target_group_name = N'ServerGroup',
@membership_type = N'Exclude',
@target_type = N'SqlDatabase',
@server_name = N'server1.database.windows.net',
@database_name = N'MappingDB';
GO
--Exclude another database from a server target group
EXEC [jobs].sp_add_target_group_member
@target_group_name = N'ServerGroup',
@membership_type = N'Exclude',
@target_type = N'SqlDatabase',
@server_name = N'server1.database.windows.net',
@database_name = N'MappingDB2';
GO
--View the recently created target group and target group members
SELECT * FROM [jobs].target_groups
WHERE target_group_name = N'ServerGroup';
GO
SELECT * FROM [jobs].target_group_members
WHERE target_group_name = N'ServerGroup';
GO
创建目标组(池)
以下示例演示如何以一个或多个弹性池中的所有数据库为目标。
连接到 job_database
,然后运行以下命令:
--Connect to the job database specified when creating the job agent
-- Create a target group containing pool(s)
EXEC jobs.sp_add_target_group 'PoolGroup';
-- Add an elastic pool(s) target member
EXEC jobs.sp_add_target_group_member
@target_group_name = 'PoolGroup',
@target_type = 'SqlElasticPool',
@server_name = 'server1.database.windows.net',
@elastic_pool_name = 'ElasticPool1';
-- View the recently created target group and target group members
SELECT * FROM jobs.target_groups
WHERE target_group_name = N'PoolGroup';
GO
SELECT * FROM jobs.target_group_members
WHERE target_group_name = N'PoolGroup';
GO