指定为列生成数据的详细信息
若要在 Visual Studio 高级专业版 中生成数据,必须创建并运行数据生成计划。 数据生成计划包含关于要向其填充数据的表和列的信息。 创建计划后,可以指定关于要用于填充这些列的各种数据的详细信息。 有关更多信息,请参见使用数据生成器生成数据库的测试数据和如何:创建数据生成计划。
数据生成计划的各个部分
下图显示了数据生成计划窗口,其中包括列细节窗格和“数据生成预览”窗口。
“数据生成计划”窗口
常规任务
在下表中,可以找到支持此方案的常规任务的说明,以及指向有关如何成功完成这些任务的更多信息的链接。
常规任务 |
支持内容 |
---|---|
亲身实践:可以按照介绍性演练操作,熟悉如何创建和运行一个简单的数据生成计划。 |
|
查看列详细信息:对于数据生成计划中包括的每个表,均可查看该表中各列的当前详细信息。 可以指定在生成数据时包括的列。 |
查看列详细信息 |
为每个列指定数据生成器:每个列必须有相关的数据生成器。 只能指定列的 SQL 数据类型支持的那些数据生成器。 |
为列指定数据生成器 |
为指定的数据生成器指定属性:可以通过指定属性为每个列配置数据生成的详细信息。 可以按范围或分布对值进行约束,也可以提供数据生成所必需的详细信息。 此类详细信息可能包括数据绑定生成器的源连接字符串。 |
为数据生成器指定属性 |
更改 SQL 数据类型的默认数据生成器:每个 SQL 数据类型均有关联的默认数据生成器。 例如,默认情况下,类型为 Int16 的列将使用 SmallInt 数据生成器。 可以查看和更改每个 SQL 数据类型的默认生成器。 |
|
使用数据绑定生成器根据 Excel 电子表格生成数据:可以配置数据绑定生成器以根据 Excel 电子表格中的表生成数据。 例如,可以使用此方法填充引用表。 |
查看列详细信息
突出显示数据生成计划中的表时,列详细信息窗格将显示该表中的列。 对于每个列,该窗格均显示数据生成是否包括该列、该列的 SQL 数据类型以及分配给该列的数据生成器。 选中或清除列的复选框可在生成数据时包括或排除该列。
下表描述了每个列的详细信息:
列名 |
详细信息 |
---|---|
列 |
列的名称。 此列包含一个复选框,选中该复选框可以为该列生成数据,清除该复选框可以将该列留空。 不需要为可以为 null 或具有默认约束的列生成数据。 “属性”窗口显示“允许为 Null”和“默认值”属性,可以使用这些属性来决定哪些列要填充数据。 有关更多信息,请参见如何:为数据生成指定列。 |
键 |
如果列是主键列或外键列,则为键的图片。 此列只读,仅用于提供信息。 |
数据类型 |
列的 SQL 数据类型。 此列只读,仅用于提供信息。 有关更多信息,请参见 Microsoft 网站上的下列主题:数据类型 (SQL Server 2005) 和数据类型 (Transact-SQL)。 |
生成器 |
将为此列生成数据的数据生成器的类型。 每个 SQL 数据类型均有一个默认数据生成器,首次创建数据生成计划时此列中将显示该生成器。 可以通过单击列中的下箭头并单击不同的生成器,来更改数据生成器。 |
生成器输出 |
此生成器的输出。 此列用于生成多个输出值的任何数据生成器。 例如,当使用数据绑定生成器时,必须指定 SELECT 查询才能从数据源检索数据。 指定 SELECT 查询后,此列包含该查询返回的数据列的列表。 通过单击下箭头然后单击适当的选项,指定要用于填充此列的数据。 有关更多信息,请参见本文档后面的“连接信息”和“选择查询”节。 自定义数据生成器也可以使用此列。 一个自定义数据生成器可以生成多个输出值。 例如,自定义数据生成器可以生成位于两个不同日期范围之一内的日期。 然后,您可以使用该列来指定要使用的输出。 |
为列指定数据生成器
通过为数据生成计划窗口的列细节窗格中的每个列指定生成器和生成器输出,可以控制生成什么数据来填充列。
对于如何分配数据生成器,应考虑以下几点:
并非所有数据生成器类型都能与所有 SQL 数据类型一起使用。 此列表仅显示可供列的 SQL 数据类型使用的数据生成器。
标识列和外键列将使用“SQL 计算值”数据生成器和“外键”数据生成器,而与该列的 SQL 数据类型无关。 而且,您不能更改标识列和外键列的数据生成器。
有关更多信息,请参见标准数据生成器类型和选项(数据库工具/数据生成器/默认生成器)。
为数据生成器指定属性
为某列指定数据生成器的类型后,可以配置该数据生成器的属性,以优化所生成的数据。 若要配置属性,请单击数据生成计划窗口的列细节窗格,然后打开**“属性”**窗口。 可以配置三种类别的属性:列信息、数据库约束和生成器。 列信息和数据库约束属性为只读,提供关于可用于自定义数据生成计划的每个列的信息。 生成器属性通常为可读写,但有些数据生成器可能有只读属性。
提示
如果“属性”窗口分类显示,您将看到各个类别。 如果“属性”窗口按字母顺序显示,则看不到这些类别。 可以单击“属性”窗口中工具栏上的“分类显示”和“按字母顺序显示”按钮在两个视图间切换。
“列信息”属性和“数据库约束”属性
下表包含每个列的列信息属性和数据库约束属性。
属性 |
详细信息 |
---|---|
大小 |
数据库列的大小(以字节为单位)。 |
允许空 |
True 或 False。 指定列是否可以具有 NULL 值。 |
CHECK 约束 |
如果列没有 CHECK 约束则为空。 如果列具有 CHECK 约束,则指定该 CHECK 约束的公式。
注意
因为一列可以具有多个 CHECK 约束,所以当其不为空时此属性是一个字符串数组。数组的每个元素分别是其中一个约束的公式的字符串。
|
默认值 |
如果列没有默认约束则为空。 如果列具有默认约束,则指定默认值。 |
外键 |
如果列没有外键约束则为空。 如果列具有外键约束,则指定外键所引用的表和列。 |
主键 |
True 或 False。 指定列是否为表的主键的一部分。 |
唯一 |
True 或 False。 指定列是否为唯一约束的一部分。 |
生成器属性
设置生成器属性可控制数据的生成方式。 可供每个列使用的属性取决于分配给该列的数据生成器。 不是所有数据生成器都有全部属性。 例如,数据绑定生成器具有一个“连接信息”属性,可用于指定到数据源的连接字符串。 其他数据生成器无需此属性。
下表包含每个列的生成器属性。
属性 |
详细信息 |
数据生成器类型 |
默认值 |
---|---|---|---|
Null 百分比 |
为列生成的 NULL 值的近似百分比。 只有在列接受 NULL 值时,才能修改此属性。 对于不接受 NULL 值的列,此属性必须为 0。 值 0 意味着不生成 NULL 值。 值为 100 表示仅生成 NULL 值。 |
除 SQL 计算值之外的所有数据生成器。 |
0 |
种子 |
随机数据生成算法中使用的种子值。 标准数据生成器是确定性的。 如果使用相同的种子值,则将再次生成相同的随机数据。 通过更改种子值,可生成一组不同的(但具有确定性的)随机数据。 |
除 SQL 计算值之外的所有数据生成器。 |
5 您可以使用“选项”页来更改“种子”属性的默认值。 有关更多信息,请参见选项(数据库工具/数据生成器/常规)。 |
唯一 |
当该属性为 True 时,为列生成的数据具有唯一性。 该属性与“步长”属性一同用于数值类型。 |
除 SQL 计算值、正则表达式、图像和数据绑定之外的所有数据生成器。 |
如果列是唯一约束的一部分,则为 True;否则为 False。 |
步长 |
当“唯一”属性为 True 时,每行的数据通过将“步长”值加到上一行的数据计算而得。 “步长”属性的值可以为负。 |
Decimal、Real、Float、Money、DateTime 和整数数据生成器。 |
如果可以成功分析某个现有的 CHECK 约束,则基于该约束。 smalldatetime:1 分钟 datetime:1 分钟 所有其他数值类型:1 |
分布 |
随机生成的数据近似的统计分布曲线。 可以将此属性设置为 Uniform、Normal、Normal Inverse、Exponential 或 ExponentialInverse。 |
Decimal、Money、DateTime、Real、Float 和整数数据生成器。 |
均匀 |
最小值 |
为列生成的数据的最小值。 |
Decimal、Money、DateTime、Real、Float 和整数数据生成器。 |
如果可以成功分析某个现有的 CHECK 约束,则基于该约束。 smalldatetime:1/1/1900 datetime:1/1/1753 所有其他数值类型:0 |
最大值 |
为列生成的数据的最大值。 |
Decimal、Money、DateTime、Real、Float 和整数数据生成器。 |
如果可以成功分析某个现有的 CHECK 约束,则基于该约束。 smalldatetime:6/6/2079 datetime:12/31/9999 所有其他数值类型:由数据类型或列定义所定义的最大值。 |
区域设置 |
将用于生成随机字符的区域设置。 可以单击下箭头来显示可用区域设置的列表。 此属性基于数据库列的排序规则的区域设置,而非基于操作系统区域设置或 Visual Studio 区域设置。 |
String |
默认值 |
最小长度 |
为列生成的数据的最小长度。 |
字符串、二进制 |
1 |
最大长度 |
为列生成的数据的最大长度。 应使此值保持合理以避免出现 OutOfMemory 异常。 |
字符串、二进制、正则表达式 |
由数据类型或列定义所定义的最大长度。 4000 8000 |
表达式 |
要用于生成数据的正则表达式。 所生成的数据与指定的模式匹配。 有关更多信息,请参见正则表达式生成器。 |
正则表达式 |
[a-zA-Z0-9]* |
高度 |
为列生成的图像的高度。 |
Image |
根据列的大小计算而得,以确保所生成的图像适合列的大小。 64 |
宽度 |
为列生成的图像的宽度。 |
Image |
根据列的大小计算而得,以确保所生成的图像适合列的大小。 64 |
连接信息 |
数据源的连接字符串。 可通过以下方式指定连接字符串:
在 Visual Studio 中,此属性连接到“服务器资源管理器”。 在“服务器资源管理器”中指定的连接字符串出现在此属性中,在此属性中指定的连接字符串出现在“服务器资源管理器”中。 有关更多信息,请参见数据绑定生成器。 |
数据绑定生成器 |
无默认值。 |
Select 查询 |
用于从数据源检索数据的 SELECT 查询。 指定 SELECT 语句后,将用该查询返回的各个列的名称更新“生成器输出”列。 该查询返回的所有列都必须有一个名称或别名,只有这样,这些列对于数据生成才是有效的。 然后必须指定在“生成器输出”列中您所希望存在的列。 有关更多信息,请参见本主题前面提到的生成器输出列。
警告
恶意用户可能会在此属性中添加任意 Transact-SQL 代码。有关更多信息,请参见使用数据生成器生成数据库的测试数据。
|
数据绑定生成器 |
无默认值。 |
后续步骤
至此,您已经指定了要生成的数据的详细信息,现在您可以预览和生成数据。 有关更多信息,请参见如何:预览数据生成计划和如何:运行数据生成计划以生成数据。
相关方案
使用数据生成器生成数据库的测试数据
在运行数据库单元测试之前,可能要将测试数据插入数据库中。 可以使用数据生成器创建切实可行的测试数据,而不必向开发人员公开生产数据。用自定义数据生成器生成专用的测试数据
如果所生成的数据必须满足内置数据生成器所不支持的要求,则可以创建自己的数据生成器。