jobs.sp_add_target_group_member (Azure エラスティック ジョブ) (Transact-SQL)

適用対象: Azure SQL Database

Azure SQL Database Azure Elastic Jobs サービスのターゲット グループにデータベースまたはデータベースのグループを追加します。

Transact-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 Database 論理サーバー内のすべてのデータベース、エラスティック プール内のすべてのデータベース、または個々のデータベースを含む、ターゲット データベースまたはデータベースのコレクションの種類。 target_type は nvarchar(128) で、既定値はありません。

target_typeの有効な値は、SqlServerSqlElasticPoolSqlDatabaseです。

@refresh_credential_name

データベース スコープの資格情報の名前。 refresh_credential_name は nvarchar(128) で、既定値はありません。

Microsoft Entra 認証 (旧称 Azure Active Directory) を使用する場合は、 @refresh_credential_name パラメーターを省略します。 資格情報ベースの認証でのみ使用できます。

@server_name

指定したターゲット グループに追加する必要がある Azure SQL Database 論理サーバーの名前。 server_name は、target_typeが SqlServerされるときに指定する必要があります。 server_name は nvarchar(128) で、既定値はありません。

@server_nameの一部として.database.windows.netを含めます。

@database_name

指定したターゲット グループに追加する必要があるデータベースの名前。 database_name は、target_typeが SqlDatabaseされるときに指定する必要があります。 database_name は nvarchar(128) で、既定値はありません。

@elastic_pool_name

指定したターゲット グループに追加する必要がある Azure SQL Database エラスティック プールの名前。 elastic_pool_name は、target_typeが SqlElasticPoolされるときに指定する必要があります。 elastic_pool_name は nvarchar(128) で、既定値はありません。

@target_id アウトプット

ターゲット グループに追加された場合にターゲット グループ メンバーに割り当てられるターゲット ID 番号。 target_id は uniqueidentifier 型の出力変数で、既定値は NULL です。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

サーバーまたはエラスティック プールがターゲット グループに含まれている場合、実行時にはサーバーまたはエラスティック プール内のすべての単一データベースでジョブが実行されます。

エラスティック ジョブのすべてのターゲットに対して 1 つの方法を選択します。 たとえば、1 つのエラスティック ジョブの場合、データベース スコープの資格情報を使用するように 1 つのターゲット サーバーを構成し、もう 1 つを Microsoft Entra ID 認証を使用するように構成することはできません。 詳細については、認証に関するページをご覧ください。

アクセス許可

既定では、このストアド プロシージャを実行できるのは、 sysadmin 固定サーバー ロールのメンバーです。 このストアド プロシージャを使って、他のユーザーが所有するジョブの属性を編集できるのは、sysadmin のメンバーだけです。

ターゲット グループに 1 つのデータベースを追加する

次の例は、Microsoft Entra (旧称 Azure Active Directory) 認証を使用して、 ElasticJobGroupという名前のターゲット グループにサーバー内の 1 つのデータベースを追加する方法を示しています。

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

ターゲット グループ (プール) を作成する

次の例では、1 つまたは複数のエラスティック プール内のすべてのデータベースをターゲットにする方法を示します。

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