使用 SSIS
将 SSIS 项目部署到 SSIS 目录中后,您可以直接从 SSMS 运行程序包或使用 SQL Server Agent 安排这些程序包。您必须使用经 Windows 身份验证的登录名来执行 SSIS 程序包。有关更多信息,请参阅“为 SSIS 设置经 Windows 身份验证的用户”。
为 SSIS 项目设置数据库连接管理器
在使用连接管理器时,可以使用以下类型的身份验证:
-
对于使用 Amazon 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 代理
-
使用以下 SQL 语句创建代理。
USE [msdb] GO EXEC msdb.dbo.sp_add_proxy @proxy_name=N'SSIS_Proxy',@credential_name=N'SSIS_Credential',@description=N'' GO -
使用以下 SQL 语句向其他用户授予对代理的访问权限。
USE [msdb] GO EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'SSIS_Proxy',@login_name=N'mydomain\user_name' GO -
使用以下 SQL 语句向代理授予 SSIS 子系统访问权限。
USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='GRANT_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS' GO
查看代理和代理上的授权
-
使用以下 SQL 语句查看代理的被授权者。
USE [msdb] GO EXEC sp_help_proxy GO -
使用以下 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 代理。
撤消访问权限并删除代理
-
撤消子系统访问权限。
USE [msdb] GO EXEC msdb.dbo.rds_sqlagent_proxy @task_type='REVOKE_SUBSYSTEM_ACCESS',@proxy_name='SSIS_Proxy',@proxy_subsystem='SSIS' GO -
撤消代理上的授权。
USE [msdb] GO EXEC msdb.dbo.sp_revoke_login_from_proxy @proxy_name=N'SSIS_Proxy',@name=N'mydomain\user_name' GO -
删除代理。
USE [msdb] GO EXEC dbo.sp_delete_proxy @proxy_name = N'SSIS_Proxy' GO