Webhostingtalk资讯网

【下】使用SSIS将数据加载到Azure SQL数据仓库中

2017-08-30 17:26
作者:admin

准备数据仓库:在您设立了一个活跃的SQL数据仓库数据库【相关推荐:使用SSIS将数据加载到Azure SQL数据仓库中】,并已经确认您能连接到数据库之后,就说明您已经准备就绪了——至少说明您已经为尝试本文中的示例做好准备了,而这些示例基于我在SQL Server 2014本地实例上安装的AdventureWorks2014数据库。

如果您想要完全按照本文所示的方式尝试这些示例,那您就需要获取一个SQL Server实例上的数据库副本,并且为针对SQL数据仓库运行T-SQL指令以及构建 SSIS包设置了SSDT 。 此外,您还需要连接到您的SQL数据仓库数据库所必需的信息。在我的示例中,我使用了以下信息:

· 数据库名称:s dwdb2

· 服务器名称:sdwsrv1.database.windows.net

· 登录账号:sdwadmin

谨记这些考虑因素后,我们就可以开始了。首先,您需要在SQL数据仓库数据库上创建两个表格。这两个表格都必须是几乎相同的事实表,只有一列是不同的。 第一个表名为FactInternetSales,其如下面的CREATE TABLE指令所示:

CREATE TABLE dbo.FactInternetSales

ProductKey INT NOT NULL,

CustomerKey INT NOT NULL,

OrderDateKey INT NOT NULL,

OrderNumber INT NOT NULL,

OrderQty SMALLINT NOT NULL,

SalesAmt MONEY NOT NULL

WITH

CLUSTERED COLUMNSTORE INDEX,

DISTRIBUTION = ROUND_ROBIN

);

第二个表名为Fact Reseller Sales。 此表与上述表之间的唯一区别在于,Fact Reseller Sales表格中包含了SalesPersonKey列,它如下列的CREATE TABLE指令所示:

CREATE TABLE dbo.FactResellerSales

ProductKey INT NOT NULL,

CustomerKey INT NOT NULL,

OrderDateKey INT NOT NULL,

OrderNumber INT NOT NULL,

SalesPersonKey INT NULL,

OrderQty SMALLINT NOT NULL,

SalesAmt MONEY NOT NULL

WITH

CLUSTERED COLUMNSTORE INDEX,

DISTRIBUTION = ROUND_ROBIN

);

这两个表格都被创建为columnstore索引,并使用了循环分发方法。我运行了SSDT中针对SQL数据仓库数据库的两个脚本来创建这两个表格。 而在运行脚本之前,我使用了SSDT中的SQL Server对象资源管理器来连接SQL数据仓库数据库和启动一个新的查询。如果您对连接SQL数据仓库数据库或在数据库中创建表格存在任何疑问,请参阅我之前的文章,特别是最新的那两篇文章。

这就是您需要为尝试本文中的示例所做的全部SQL数据仓库工作。 之后,我们将创建一个包含单个数据流的SSIS包,而该数据流会从AdventureWorks2014数据库中检索数据,并将这些数据加载到两个目标表中。 通常情况下,数据仓库包含的表格会更多,而且在将数据加载到事实表中之前,我们可能会先将它们加载到维度表中,但是对于本文中的示例来说,这些事实表足以向我们展示加载的数据了。

设置连接

本文假设您知道如何在SSDT中创建SSIS包以及添加数据流任务,而您在进一步实施操作之前应首先完成这两个工作。如果您不确定要如何完成这些任务,请参阅以下MSDN文章(或其它任何文章),以获得如何继续操作的基本思路:

· 任务4:使用SQL Server数据工具创建SSIS项目

· 任务5:添加数据流任务

在创建了SSIS包并添加完数据流任务之后,您应该添加两个OLE DB连接管理器:一个用于检索源数据,另一个用于将数据加载到目标数据库中。在我的系统上,我创建了首个OLE DB连接管理器,用于指向我的本地SQL Server 2014实例上的AdventureWorks2014数据库。下图显示了我配置连接管理器属性的方式:

这些应该都很一目了然。您先指定数据库所处的示例,然后选择身份验证类型(如果您使用了SQL Server身份验证,请提供用户名和密码),最后再选择AdventureWorks2014数据库。

在创建连接管理器后,为了简洁起见,我将其重命名为AdventureWorks2014。 接着,我为我的SQL数据仓库数据库添加了第二个OLE DB连接管理器。 从理论上来说,我们可以使用ADO.NET连接管理器,但是我之前没有使用过该管理器,而且据微软表示,OLE DB连接管理器“可能会为您带来更好一点的性能”,所以我才坚持使用该管理器。

配置连接到SQL数据仓库数据库和配置连接到任意SQL Server实例类似,但它们之间存在着两个重要的差异,如下图所示。

您必须为服务器名称指定包含四个部分的完整名称,如insdwsrv1.database.windows.net。 此外,您还必须使用SQL Server身份验证,并提供必需的用户名和密码,然后再选择目标SQL数据仓库数据库。

另外,请一定要测试您的连接。 如果一切正常,您应该收到一条表明您已成功连接到数据库的提示。如果该提示显示连接失败,那您应该检查自己是否使用的是正确的凭据,或者正确的客户端IP地址是否被授予了访问Azure服务器的权限。

网友评论
暂无评论!