看来您不需要为Azure Elastic Job创建单独的数据库,也许您在创建Azure Elastic Job时忽略了一些东西。
你可以参考我用sql创建的过程:
use master;
CREATE LOGIN masteruser WITH PASSWORD='qazwsx!1111';
CREATE LOGIN jobuser WITH PASSWORD='qazwsx!1111';
use master;
CREATE USER masteruser FROM LOGIN masteruser;
use gongdb;
CREATE USER masteruser FROM LOGIN masteruser;
use gongdb;
CREATE USER jobuser FROM LOGIN jobuser;
GRANT CREATE TABLE TO jobuser;
EXEC sp_addrolemember 'db_owner', 'jobuser';
use gongdb;
-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='qazwsx!1111';
-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL jobuser
WITH IDENTITY = 'jobuser',
SECRET = 'qazwsx!1111';
CREATE DATABASE SCOPED CREDENTIAL masteruser
WITH IDENTITY = 'masteruser',
SECRET = 'qazwsx!1111';
SELECT * FROM sys.database_scoped_credentials
EXEC jobs.sp_add_target_group 'DemoGroup';
SELECT * FROM jobs.target_groups WHERE target_group_name='DemoGroup';
EXEC jobs.sp_add_target_group_member 'DemoGroup',
@target_type = 'SqlServer',
@refresh_credential_name='masteruser', --credential required to refresh the databases in server
@server_name='<server>.database.windows.net'
GO
EXEC jobs.sp_add_job @job_name='CreateTableTest', @description='Create Table Test'
EXEC jobs.sp_add_jobstep @job_name='CreateTableTest',
@command=N'IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id(''Test''))
CREATE TABLE [dbo].[Test]([TestId] [int] NOT NULL);',
@credential_name='jobuser',
@target_group_name='DemoGroup'
SELECT * FROM jobs.jobs
SELECT js.* FROM jobs.jobsteps js
JOIN jobs.jobs j
ON j.job_id = js.job_id AND j.job_version = js.job_version
exec jobs.sp_start_job 'CreateTableTest';
SELECT * FROM jobs.job_executions WHERE is_active = 1 ORDER BY start_time DESC
===================更新=====================
当您创建Azure Elastic Job 时,您将只指定一个数据库作为您的工作数据库。
目标数据库是您需要访问的数据库。比如你在gongdb进行建表操作,那么你的目标数据库就是gongdb。
为了让Azure Elastic Job访问目标数据库,您需要为目标数据库创建USER,然后创建访问所需的凭据。
之所以需要master db,是因为master db是一个权限较高的系统数据库。目标数据库的USER必须由master创建。
在我提供的SQL中,作业数据库和目标数据库都是gondb,可能会引起你的误解。