SSIS中的变量、表达式与动态性
立即解锁
发布时间: 2025-08-21 01:29:42 阅读量: 1 订阅数: 4 


精通SQL Server 2012 SSIS:专家级解决方案
### SSIS 中的变量、表达式与动态性
#### 一、引言
在 SSIS(SQL Server Integration Services)中,包就像一个可执行的应用程序,而处理变量是每个应用程序的基本需求之一。SSIS 中有两种类型的变量:
- **系统变量**:用于在包的特定位置获取系统信息。
- **用户变量**:可在其作用域内进行读写操作。
表达式是一种提供计算和编写基本半功能逻辑的方式,其应用不仅局限于派生列或条件拆分转换,而是广泛应用于整个包中。表达式为动态设置属性值提供了方法,是实现 SSIS 动态性的一种途径。动态性包括控制流任务的动态属性设置、连接管理器连接字符串的动态设置以及数据的动态传输等。
#### 二、变量和数据类型
1. **SSIS 数据类型**
SSIS 有自己的不同数据类型表示,其名称以 DT_ 开头,后面跟着具体的数据类型,如 I 表示整数、BOOL 表示布尔值、STR 表示字符串等。每次将数据从源移动到目标时,都需要进行输入和输出数据类型的转换。如需了解 SSIS 数据类型的更多详细信息,可参考[此链接](http://msdn.microsoft.com/en - us/library/ms345165(v = SQL.110).aspx)。
2. **操作步骤**
- **准备工作**
1. 打开 SQL Server Business Intelligence Development Studio (BIDS) 并创建一个新的 SSIS 项目。
2. 为 SSIS 项目提供名称和位置,然后继续。
3. 选择默认创建的包并将其重命名为:P01_VariablesAndDataTypes.dtsx。
- **管理变量**
1. 打开变量编辑器。可以通过在控制流设计区域右键单击并选择“变量”,或者选择“变量”菜单链接来打开。
2. 管理 SSIS 变量,点击“添加”按钮创建一个新变量。
3. 在变量编辑器中添加两个额外的列(命名空间和描述)来丰富变量的元数据(此版本的 SSIS 包含描述列)。
4. 为了更好地理解所有变量,可以启用“当变量值更改时引发事件”复选框。
5. 为避免创建重复的变量名并查看所有包变量,启用“显示系统变量”和“显示所有作用域的变量”选项。
6. 若要更改现有用户变量的作用域,选择所需变量并点击“移动变量”按钮,在弹出窗口中选择目标作用域,然后点击“确定”。
7. 若要为特定变量应用表达式,选择相应行中的“…”按钮,在出现的表达式编辑器中添加表达式。添加或移除表达式时,“EvaluateAsExpression”属性会自动设置为 true 或 false。
- **数据转换**
在数据流任务中,将 Products 表的 ListPrice 列转换为十进制数据类型,有以下四种数据转换选项:
1. **使用源数据库引擎**
1. 在控制流中添加一个数据流并打开它。
2. 创建一个 OLEDB 连接以查询 Adventure Works LT 示例数据库。在连接管理器中右键单击,选择“新建 OLEDB 连接…”。
3. 在数据连接列表中选择 AdventureWorksLT2012 数据库,如果未列出,点击“新建…”按钮创建一个新的。
4. 点击“确定”按钮并将连接重命名为 cmAdventureWorksLT。
5. 从 SSIS 工具箱的“其他源”中拖放 OLE DB 源组件到数据流设计区域。
6. 打开组件进行编辑,上一步创建的连接将自动分配给源组件,如果没有,从相应的下拉列表中选择。
7. 在“数据访问模式”属性中选择“SQL 命令”。
8. 在“SQL 命令文本”中添加 SQL 语句以从 Products 表返回数据:
```sql
SELECT ProductID, ProductNumber, convert(decimal(10,2),ListPrice) AS ListPrice
FROM SalesLT.Product
```
2. **使用 SSIS OLEDB 源组件**
1. 重复上述添加 OLE DB 源组件的步骤 3 - 14,使用以下 SQL 语句:
```sql
SELECT ProductID, ProductNumber, ListPrice
FROM SalesLT.Product
```
2. 关闭组件,再次打开,但这次通过右键单击源组件并选择“显示高级编辑器…”。
3. 选择“输入和输出属性”选项卡,展开“OLE DB 源输出”。
4. 在“输出列”下选择 ListPrice 列,在右侧面板中更改“DataType”属性。
3. **使用数据转换组件**
1. 按照步骤 3 - 5 再次拖放一个 OLE DB 源组件到数据流设计区域。
2. 从 SSIS 工具箱的“通用”中拖放数据转换组件到数据流设计区域。
0
0
复制全文
相关推荐










