从 Azure 的 SSIS 包中使用 Windows 身份验证访问数据存储和文件共享
适用于:Azure 数据工厂 Azure Synapse Analytics
可以从 Azure 数据工厂 (ADF) 和 Azure Synapse 的 Azure-SSIS Integration Runtime (IR) 上运行的 SSIS 包中使用 Windows 身份验证访问数据存储(如 SQL Server、文件共享、Azure 文件存储等)。 数据存储可以位于本地环境,可以托管在 Azure 虚拟机 (VM) 上,也可以作为托管服务在 Azure 中运行。 如果它们位于本地环境,则需要将 Azure SSIS IR 加入连接到本地网络的虚拟网络(Azure 虚拟网络),请参阅将 Azure-SSIS IR 加入 Azure 虚拟网络。 以下四种方法可从 Azure-SSIS IR 上运行的 SSIS 包中使用 Windows 身份验证访问数据存储:
连接方法 | 有效范围 | 安装步骤 | 在包中访问方法 | 凭据集和连接资源的数量 | 连接资源的类型 |
---|---|---|---|---|---|
设置活动级别执行上下文 | 每个执行 SSIS 包活动 | 将 SSIS 包作为 ADF 管道中的执行 SSIS 包活动运行时,配置“Windows 身份验证”属性以设置“执行/运行方式”上下文。 有关详细信息,请参阅配置执行 SSIS 包活动。 |
直接在包中访问资源,例如,使用 UNC 路径访问文件共享或 Azure 文件存储:\\YourFileShareServerName\YourFolderName 或 \\YourAzureStorageAccountName.file.core.chinacloudapi.cn\YourFolderName |
仅支持适用于所有连接资源的一个凭据集 | - 本地/Azure VM 上的文件共享 - Azure 文件,请参阅使用 Azure 文件共享 - 使用 Windows 身份验证的本地/Azure VM 上的 SQL Server - 使用 Windows 身份验证的其他资源 |
设置目录级别执行上下文 | 每个 Azure-SSIS IR,但是,如果同时设置活动级别执行上下文,则会被替代(见上文) | 执行 SSISDB catalog.set_execution_credential 存储过程来设置“执行/运行方式”上下文。有关详细信息,请参阅本文下面的其余部分。 |
直接在包中访问资源,例如,使用 UNC 路径访问文件共享或 Azure 文件存储:\\YourFileShareServerName\YourFolderName 或 \\YourAzureStorageAccountName.file.core.chinacloudapi.cn\YourFolderName |
仅支持适用于所有连接资源的一个凭据集 | - 本地/Azure VM 上的文件共享 - Azure 文件,请参阅使用 Azure 文件共享 - 使用 Windows 身份验证的本地/Azure VM 上的 SQL Server - 使用 Windows 身份验证的其他资源 |
通过 cmdkey 命令持久保留凭据 |
每个 Azure-SSIS IR,但是,如果同时设置活动/目录级别执行上下文,则会被替代(见上文) | 预配 Azure-SSIS IR 时在自定义安装脚本 (main.cmd ) 中执行 cmdkey 命令(例如,在使用文件共享、Azure 文件存储或 SQL Server 的情况下):cmdkey /add:YourFileShareServerName /user:YourDomainName\YourUsername /pass:YourPassword ,cmdkey /add:YourAzureStorageAccountName.file.core.chinacloudapi.cn /user:azure\YourAzureStorageAccountName /pass:YourAccessKey 或cmdkey /add:YourSQLServerFullyQualifiedDomainNameOrIPAddress:YorSQLServerPort /user:YourDomainName\YourUsername /pass:YourPassword 。有关详细信息,请参阅为 Azure-SSIS IR 自定义安装程序。 |
直接在包中访问资源,例如,使用 UNC 路径访问文件共享或 Azure 文件存储:\\YourFileShareServerName\YourFolderName 或 \\YourAzureStorageAccountName.file.core.chinacloudapi.cn\YourFolderName |
支持不同连接资源的多个凭据集 | - 本地/Azure VM 上的文件共享 - Azure 文件,请参阅使用 Azure 文件共享 - 使用 Windows 身份验证的本地/Azure VM 上的 SQL Server - 使用 Windows 身份验证的其他资源 |
在包执行时装载驱动器(非永久) | 每个包 | 在包的控制流开头添加的执行过程任务中(例如,net use D: \\YourFileShareServerName\YourFolderName )执行 net use 命令 |
通过映射驱动器访问文件共享 | 支持不同文件共享的多个驱动器 | - 本地/Azure VM 上的文件共享 - Azure 文件,请参阅使用 Azure 文件共享 |
警告
如果不使用上述任何方法通过 Windows 身份验证访问数据存储,依赖于 Windows 身份验证的包将无法访问它们,并在运行时失败。
本文的其余部分介绍如何配置托管在 SQL 数据库/SQL 托管实例上的 SSIS 目录 (SSISDB),以便在使用 Windows 身份验证的 Azure-SSIS IR 上运行包来访问数据存储。
仅可使用一组凭据
在 SSIS 包中使用 Windows 身份验证时,只能使用一组凭据。 按照本文中的步骤操作时提供的域凭据适用于 Azure-SSIS IR 上的所有包执行(交互式或按预定),直至更改或删除这些凭据。 如果必须使用多组不同的凭据将包连接到不同的数据存储,应考虑上述替代方法。
提供 Windows 身份验证的域凭据
若要提供域凭据,让包使用 Windows 身份验证访问本地数据存储,请执行以下操作:
使用 SQL Server Management Studio (SSMS) 或其他工具连接到托管 SSISDB 的 SQL 数据库/SQL 托管实例。 有关详细信息,请参阅连接到 Azure 中的 SSISDB。
将 SSISDB 设置为当前数据库后,打开一个查询窗口。
运行以下存储过程,并提供相应的域凭据:
catalog.set_execution_credential @user='<your user name>', @domain='<your domain name>', @password='<your password>'
运行 SSIS 包。 这些包使用所提供的凭据通过 Windows 身份验证访问本地数据存储。
查看域凭据
若要查看可用的域凭据,请执行以下操作:
使用 SSMS 或其他工具连接到托管 SSISDB 的 SQL 数据库/SQL 托管实例。 有关详细信息,请参阅连接到 Azure 中的 SSISDB。
将 SSISDB 设置为当前数据库后,打开一个查询窗口。
运行以下存储过程,并检查输出:
SELECT * FROM catalog.master_properties WHERE property_name = 'EXECUTION_DOMAIN' OR property_name = 'EXECUTION_USER'
清除域凭据
若要清除和删除按本文所述提供的凭据,请执行以下操作:
使用 SSMS 或其他工具连接到托管 SSISDB 的 SQL 数据库/SQL 托管实例。 有关详细信息,请参阅连接到 Azure 中的 SSISDB。
将 SSISDB 设置为当前数据库后,打开一个查询窗口。
运行以下存储过程:
catalog.set_execution_credential @user='', @domain='', @password=''
连接到本地 SQL Server
若要检查能否连接到本地 SQL Server,请执行以下操作:
若要运行此测试,请找一台未加入域的计算机。
在未加入域的计算机上,运行以下命令,以便通过要使用的域凭据启动 SSMS:
runas.exe /netonly /user:<domain>\<username> SSMS.exe
通过 SSMS 检查能否连接到本地 SQL Server。
先决条件
若要从 Azure 中运行的包中访问本地 SQL Server,请执行以下操作:
在 SQL Server 配置管理器中,启用 TCP/IP 协议。
允许通过 Windows 防火墙进行访问。 有关详细信息,请参阅配置 Windows 防火墙以访问 SQL Server。
将 Azure-SSIS IR 加入连接到本地 SQL Server 的 Azure 虚拟网络。 有关详细信息,请参阅将 Azure-SSIS IR 加入 Azure 虚拟网络。
使用 SSISDB
catalog.set_execution_credential
存储过程提供凭据,如本文中所述。
连接到本地文件共享
若要检查能否连接到本地文件共享,请执行以下操作:
若要运行此测试,请找一台未加入域的计算机。
在未加入域的计算机上运行以下命令。 这些命令会打开一个命令提示符窗口,其中包含要使用的域凭据,然后通过获取目录列表测试与本地文件共享的连接性。
runas.exe /netonly /user:<domain>\<username> cmd.exe dir \\fileshare
检查是否返回本地文件共享的目录列表。
先决条件
若要从 Azure 中运行的包中访问本地文件共享,请执行以下操作:
允许通过 Windows 防火墙进行访问。
将 Azure-SSIS IR 加入连接到本地文件共享的 Azure 虚拟网络。 有关详细信息,请参阅将 Azure-SSIS IR 加入 Azure 虚拟网络。
使用 SSISDB
catalog.set_execution_credential
存储过程提供凭据,如本文中所述。
连接到 Azure VM 上的文件共享
若要从 Azure 中运行的包中访问 Azure VM 上的文件共享,请执行以下操作:
使用 SSMS 或其他工具连接到托管 SSISDB 的 SQL 数据库/SQL 托管实例。 有关详细信息,请参阅连接到 Azure 中的 SSISDB。
将 SSISDB 设置为当前数据库后,打开一个查询窗口。
运行以下存储过程,并提供相应的域凭据:
catalog.set_execution_credential @domain = N'.', @user = N'username of local account on Azure virtual machine', @password = N'password'
连接到 Azure 文件中的文件共享
有关 Azure 文件的详细信息,请参阅 Azure 文件。
若要从 Azure 中运行的包中访问 Azure 文件存储中的文件共享,请执行以下操作:
使用 SSMS 或其他工具连接到托管 SSISDB 的 SQL 数据库/SQL 托管实例。 有关详细信息,请参阅连接到 Azure 中的 SSISDB。
将 SSISDB 设置为当前数据库后,打开一个查询窗口。
运行以下存储过程,并提供相应的域凭据:
catalog.set_execution_credential @domain = N'Azure', @user = N'<storage-account-name>', @password = N'<storage-account-key>'
相关内容
- 部署包。 有关详细信息,请参阅使用 SSMS 将 SSIS 项目部署到 Azure。
- 运行包。 有关详细信息,请参阅使用 SSMS 运行 Azure 中的 SSIS 包。
- 计划包。 有关详细信息,请参阅计划 Azure 中的 SSIS 包。