使用 SSIS - Amazon Relational Database Service

使用 SSIS

将 SSIS 项目部署到 SSIS 目录中后,您可以直接从 SSMS 运行程序包或使用 SQL Server Agent 安排这些程序包。您必须使用经 Windows 身份验证的登录名来执行 SSIS 程序包。有关更多信息,请参阅“为 SSIS 设置经 Windows 身份验证的用户”。

为 SSIS 项目设置数据库连接管理器

在使用连接管理器时,可以使用以下类型的身份验证:

  • 对于使用 AWS Managed Active Directory 的本地数据库连接,您可以使用 SQL 身份验证或 Windows 身份验证。对于 Windows 身份验证,请使用 DB_instance_name.fully_qualified_domain_name 作为连接字符串的服务器名称。

    myssisinstance.corp-ad.example.com 为例,其中 myssisinstance 是数据库实例名称,corp-ad.example.com 是完全限定域名。

  • 对于远程连接,请始终使用 SQL 身份验证。

  • 对于使用自托管式 Active Directory 的本地数据库连接,您可以使用 SQL 身份验证或 Windows 身份验证。对于 Windows 身份验证,请使用 .LocalHost 作为连接字符串的服务器名称。

创建 SSIS 代理

您需要创建 SSIS 凭证和 SSIS 代理,才能使用 SQL Server Agent 安排 SSIS 程序包。以经 Windows 身份验证的用户身份运行这些过程。

创建 SSIS 凭证
  • 为代理创建凭证。为此,您可以使用 SSMS 或以下 SQL 语句。

    USE [master] GO CREATE CREDENTIAL [SSIS_Credential] WITH IDENTITY = N'mydomain\user_name', SECRET = N'mysecret' GO
    注意

    IDENTITY 必须是经域身份验证的登录名。将 mysecret 替换为经域身份验证的登录的密码。

    每当更改 SSISDB 主机时,请更改 SSIS 代理凭证以允许新主机访问它们。

创建 SSIS 代理
  1. 使用以下 SQL 语句创建代理。

    USE [msdb] GO EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N'' GO
  2. 使用以下 SQL 语句向其他用户授予对代理的访问权限。

    USE [msdb] GO EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name' GO
  3. 使用以下 SQL 语句向代理授予 SSIS 子系统访问权限。

    USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS' GO
查看代理和代理上的授权
  1. 使用以下 SQL 语句查看代理的被授权者。

    USE [msdb] GO EXEC sp_help_proxy GO
  2. 使用以下 SQL 语句查看子系统授权。

    USE [msdb] GO EXEC msdb.dbo.sp_enum_proxy_for_subsystem GO

使用 SQL Server Agent 安排 SSIS 程序包

创建凭证和代理并向 SSIS 授予对代理的访问权限后,您可以创建 SQL Server Agent 作业来安排 SSIS 程序包。

安排 SSIS 程序包
  • 您可以使用 SSMS 或 T-SQL 创建 SQL Server Agent 作业。以下示例使用 T-SQL。

    USE [msdb] GO DECLARE @jobId BINARY(16) EXEC msdb.dbo.sp_add_job @job_name=N'MYSSISJob', @enabled=1, @notify_level_eventlog=0, @notify_level_email=2, @notify_level_page=2, @delete_level=0, @category_name=N'[Uncategorized (Local)]', @job_id = @jobId OUTPUT GO EXEC msdb.dbo.sp_add_jobserver @job_name=N'MYSSISJob',@server_name=N'(local)' GO EXEC msdb.dbo.sp_add_jobstep @job_name=N'MYSSISJob',@step_name=N'ExecuteSSISPackage', @step_id=1, @cmdexec_success_code=0, @on_success_action=1, @on_fail_action=2, @retry_attempts=0, @retry_interval=0, @os_run_priority=0, @subsystem=N'SSIS', @command=N'/ISSERVER "\"\SSISDB\MySSISFolder\MySSISProject\MySSISPackage.dtsx\"" /SERVER "\"my-rds-ssis-instance.corp-ad.company.com/\"" /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E', @database_name=N'master', @flags=0, @proxy_name=N'SSIS_Proxy' GO

从代理撤消 SSIS 访问权限

您可以使用以下存储过程撤消对 SSIS 子系统的访问权限并删除 SSIS 代理。

撤消访问权限并删除代理
  1. 撤消子系统访问权限。

    USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS' GO
  2. 撤消代理上的授权。

    USE [msdb] GO EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name' GO
  3. 删除代理。

    USE [msdb] GO EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy' GO