当前位置:文档之家› SQL Server Analysis Services 教程(图片)

SQL Server Analysis Services 教程(图片)

SQL Server Analysis Services 教程(图片)
SQL Server Analysis Services 教程(图片)

SQL Server Analysis Services 教程

欢迎使用Analysis Services 教程。数据仓库开发人员使用Business Intelligence Development Studio 开发和部署Analysis Services 项目,并使用SQL Server Management Studio 管理从这些项目实例化的Analysis Services 数据库。本教程通过在所有示例中使用虚构公司Adventure Works Cycles,说明如何使用BI Development Studio 开发和部署Analysis Services 项目。

学习内容

在本教程中,您将了解以下内容:

?如何在BI Development Studio 的Analysis Services 项目中定义数据源、数据源视图、维度、属性、属性关系、层次结构和多维数据集。

?如何通过将Analysis Services 项目部署到Analysis Services 实例来查看多维数据集和维度数据,以及如何在随后处理已部署的对象以使用基础数据源中的数据来填充对象。

?如何在Analysis Services 项目中修改度量值、维度、层次结构、属性和度量值组,以及如何将增量更改部署到开发服务器上的已部署多维数据集。

?如何定义多维数据集内的计算、关键绩效指标(KPI)、操作、透视、翻译和安全角色。要求

若要完成本教程,需要使用下列组件、示例和工具:

?SQL Server 数据库引擎

?Analysis Services

?Business Intelligence Development Studio

?AdventureWorks2008R2DW2008 示例数据库

有关如何安装这些组件、示例和工具的信息,请参阅安装SQL Server 2008 R2和安装SQL Server 示例和示例数据库的注意事项。

此外,必须满足下列前提条件才能成功完成本教程:

?您必须是Analysis Services 计算机上本地管理员组的成员或Analysis Services 实例中的服务器角色的成员。

?您必须拥有对SQL ServerAdventureWorks2008R2 DW 数据库的读取权限。

内容

本教程共分为十节课。

第1 课:在Analysis Services 项目中定义数据源视图

在本课中,将使用BI Development Studio 在Analysis Services 项目中定义一个数据源视图。

第2 课:定义和部署多维数据集

在本课中,将使用多维数据集向导定义一个多维数据集及其维度,然后将该多维数据集部署到Analysis Services 的本地实例。

第3 课:修改度量值、属性和层次结构

在本课中,将改进多维数据集的用户友好特性,并逐渐增加对相关更改的部署,根据需要处理多维数据集及其维度。

第4 课:定义高级属性和维度属性

在本课中,将使用组合键来定义引用维度关系以及为属性成员排序,并定义自定义错误处理。

第5 课:定义维度和度量值组之间的关系

在本课中,将为退化维度定义一个事实关系,并定义一个多对多关系。

第6 课:定义计算

在本课中,将定义计算成员、命名集和脚本。

第7 课:定义关键绩效指标(KPI)

在本课中,将定义关键绩效指标(KPI)。

第8 课:定义操作

在本课中,将定义操作。

第9 课:定义透视和翻译

在本课中,将定义多维数据集的视图以及元数据的翻译。

第10 课:定义管理角色

在本课中,将定义管理角色和用户角色。

第 1 课:在Analysis Services 项目中定义数据源视图

若要在SQL Server 中设计商业智能应用程序,首先应在Business Intelligence Development Studio 中创建一个Analysis Services 项目。在此项目中,您将从数据源视图开始定义解决方案的所有元素。

创建新的Analysis Services 项目

1.单击“开始”,依此指向“所有程序”和Microsoft SQL Server 2008,再单击SQL Server Business Intelligence

Development Studio。

将打开MicrosoftVisual Studio 开发环境。

2.在Visual Studio 的“文件”菜单上,指向“新建”,然后单击“项目”。

3.在“新建项目”对话框中,从“项目类型”窗格中选择“商业智能项目”,再在“模板”窗格中选择“Analysis Services

项目”。

注意位于对话框底部的默认项目名称、默认解决方案名称和默认项目位置。默认情况下,将为解决方案创建新的目录。

4.将项目名称更改为Analysis Services Tutorial,这也将更改解决方案名称,然后单击“确定”。

您已经基于Analysis Services 项目模板,在同样命名为Analysis Services Tutorial的新解决方案中成功创建

了Analysis Services Tutorial项目。

定义数据源

创建Analysis Services 项目后,通常通过定义此项目要使用的一个或多个数据源来开始使用此项目。定义数据源时,将定义要用于连接此数据源的连接字符串信息。有关详细信息,请参阅使用数据源向导定义数据源(Analysis Services)。

在以下任务中,您将把AdventureWorksDW2008 示例数据库定义为Analysis Services Tutorial 项目的数据源。为了实现本教程教学目的,此数据库位于您的本地计算机上,而源数据库通常驻留在一台或多台远程计算机中。

定义新的数据源

1.在解决方案资源管理器中,右键单击“数据源”,然后单击“新建数据源”。

2.在“欢迎使用数据源向导”页上,单击“下一步”可打开“选择如何定义连接”页。

3.在“选择如何定义连接”页上,可以基于新连接、现有连接或以前定义的数据源对象来定义数据源。在本教程

中,将基于新连接定义数据源。确保已选中“基于现有连接或新连接创建数据源”,再单击“新建”。

4.在“连接管理器”对话框中,为数据源定义连接属性。在“提供程序”列表中,确保已选中“本机OLE DB\SQL

Server Native Client 10.0”。

Analysis Services 还支持“提供程序”列表中显示的其他访问接口。

5.在“服务器名称”文本框中,键入localhost。

要连接到本地计算机上的命名实例,请键入localhost\<实例名>。若要连接到特定的计算机而不是本地计算机,请键入该计算机名称或IP 地址。

6.确保已选中“使用Windows 身份验证”。在“选择或输入数据库名称”列表中,选

择AdventureWorksDW2008。

7.单击“测试连接”以测试与数据库的连接。

8.单击“确定”,然后单击“下一步”。

9.在该向导的“模拟信息”页上,可以定义Analysis Services 用于连接数据源的安全凭据。在选中―Windows 身

份验证‖时,模拟会影响用于连接数据源的Windows 帐户。Analysis Services 不支持使用模拟功能来处理

OLAP 对象。选择“使用服务帐户”,然后单击“下一步”。

10.在“完成向导”页上,键入名称Adventure Works DW,然后单击“完成”以创建新数据源。

修改表的默认名称

可以在数据源视图中更改FriendlyName属性的值以提高其名称的用户友好性。定义了这些对象的名称后,也可以对其进行更改。

在下面的任务中,将从Adventure Works DW 数据源视图中的每个表中删除“Dim”和“Fact”前缀来更改这些表的友好名称。这将提高将在下一课程中定义的多维数据集和维度对象的用户友好特性。此外,还可以更改列的友好名称,定义计算列,以及联接数据源视图中的表或视图以提高其用户友好特性。

修改表的默认名称

1.在数据源视图设计器的“表”窗格中,右键单击FactInternetSales表,然后单击“属性”以便在Adventure

Works Tutorial 数据源视图中显示FactInternetSales对象的属性。

2.单击―属性‖窗口标题栏上的“自动隐藏”按钮,使该窗口保持可见状态。

在―属性‖窗口保持打开状态时,更容易更改数据源视图中各个表的属性。如果不使用“自动隐藏”按钮使窗口保持打开状态,则在“关系图”窗格中单击其他对象时,该窗口将会关闭。

3.将FactInternetSales对象的FriendlyName属性更改为InternetSales。

如果在FriendlyName属性单元格外单击,则应用此更改。在下一课中,将定义一个基于该事实数据表的度

量值组。由于您在本课中进行了更改,因此该事实数据表的名称将为InternetSales,而不是FactInternetSales。

4.在“表”窗格中单击DimProduct。在―属性‖窗口中,将FriendlyName属性更改为“产品”。

5.使用同样的方法更改数据源视图中剩余的各个表的FriendlyName属性,删除―Dim‖前缀。

6.完成更改后,单击“自动隐藏”按钮,重新隐藏―属性‖窗口。

7.在“文件”菜单上,或者在BI Development Studio 的工具栏上,单击“全部保存”,以保存截至目前已在

Analysis Services Tutorial 项目中进行的更改。您可以根据需要在此处停止教程学习,并在以后继续。

第 2 课:定义和部署多维数据集

在MicrosoftAnalysis Services 项目中定义了数据源视图后,就可以定义一个初始Analysis Services 多维数据集了。

可以使用多维数据集向导,通过单个步骤定义一个多维数据集及其维度。也可以先定义一个或多个维度,然后使用多维数据集向导定义一个使用这些维度的多维数据集。如果要设计一个复杂的解决方案,通常是先定义维度。

本课程包含以下任务:

定义维度

在该任务中,将使用维度向导来定义维度。

定义多维数据集

在该任务中,将使用多维数据集向导来定义一个初始Analysis Services 多维数据集。

向维度中添加属性

在该任务中,将向您创建的维度中添加属性。

检查多维数据集和维度属性

在该任务中,将检查您使用多维数据集向导定义的多维数据集的结构。

部署Analysis Services 项目

在此任务中,将Analysis Services 项目部署到Analysis Services 本地实例,并了解某些部署属性。

浏览多维数据集

在该任务中,将使用多维数据集设计器和维度设计器中的浏览器来浏览多维数据集和维度数据。

定义维度

1.在解决方案资源管理器中,右键单击“维度”,然后单击“新建维度”。

2.在“欢迎使用维度向导”页上,单击“下一步”。

3.在“选择创建方法”页上,验证是否选择了“使用现有表”选项,然后单击“下一步”。

4.在“指定源信息”页上,验证是否选择了Adventure Works DW 数据源视图。

5.在“主表”列表中,选择“日期”。

6.单击“下一步”。

7.在“选择维度属性”页上,选中下列属性旁的复选框:

?日期键

?完整日期备用键

?英文月份名称

?日历季度

?日历年

?日历半期

8.将“完整日期备用键”属性的“属性类型”列的设置从“定期”更改为“日期”。为此,请单击“属性类型”列中的“定

期”。然后单击箭头展开选项。接下来,单击“日期”>“日历” > “日期”。单击―确定‖。重复这些步骤来如下更改下列属性的属性类型:

?“英文月份名称”更改为“月份”

?“日历季度”更改为“季度”

?“日历年”更改为“年”

?“日历半期”更改为“半年”

9.单击“下一步”。

10.在“完成向导”页的―预览‖窗格中,可以看到“日期”维度及其属性。

11.单击“完成”按钮以完成向导。

在解决方案资源管理器的Analysis Services Tutorial 项目中,―日期‖维度将显示在“维度”文件夹中。在开发环境的中央,维度设计器显示―日期‖维度。

12.在“文件”菜单上,单击“全部保存”。

定义多维数据集

多维数据集向导可以帮助您为多维数据集定义度量值组和维度。在下面的任务中,将使用维度向导来构建多维数据集。定义多维数据集及其属性

1.在解决方案资源管理器中,右键单击“多维数据集”,然后单击“新建多维数据集”。

2.在“欢迎使用多维数据集向导”页上,单击“下一步”。

3.在“选择创建方法”页上,确认已选中“使用现有表”选项,然后单击“下一步”。

4.在“选择度量值组表”页上,确认已选中Adventure Works DW 数据源视图。

5.单击“建议”允许多维数据集向导建议要用来创建度量值组的表。

多维数据集向导会检查这些表并建议将InternetSales作为度量值组表。度量值组表(又称为事实数据表)包含您感兴趣的度量值(如已销售的单位数)。

6.单击“下一步”。

7.在“选择度量值”页上,查看在“Internet 销售”度量值组中选择的度量值,然后清除下列度量值的复选框:

?促销关键字

?货币关键字

?销售区域关键字

?修订号

默认情况下,该向导会选择将事实数据表中未链接到维度的所有数值列作为度量值。但这四列不是实际的度量值。前三列是将事实数据表与未在此多维数据集的初始版本中使用的维度表链接起来的键值。

8.单击“下一步”。

9.在“选择现有维度”页上,选择您以前创建的“日期”维度,然后单击“下一步”。

10.在“选择新维度”页上,选择要创建的新维度。为此,请确认已选中“客户”、“地域”和“产品”复选框并清

除InternetSales复选框。

11.单击“下一步”。

12.在“完成向导”页上,将多维数据集的名称更改为Analysis Services Tutorial。在―预览‖窗格中,可以看

到InternetSales度量值组及其度量值,还可以看到“日期”、“客户”和“产品”维度。

13.单击“完成”按钮以完成向导。

在解决方案资源管理器的Analysis Services Tutorial 项目中,Analysis Services Tutorial 多维数据集显示在“多维数据集”文件夹中,而数据库维度则显示在“维度”文件夹中。此外,多维数据集设计器在开发环境的中央显示Analysis Services Tutorial 多维数据集。

14.在多维数据集设计器的工具栏上,将“缩放”级别更改为50 %,以便更轻松地查看多维数据集内的维度和事实

数据表。注意,事实数据表是黄色的,维度表是蓝色的。

15.在“文件”菜单上,单击“全部保存”。

向维度中添加属性

在下面的任务中,将使用维度设计器向―客户‖和―产品‖维度中添加属性。

向“客户”维度中添加属性

添加属性

1.打开―客户‖维度的维度设计器。为此,请在解决方案资源管理器的―维度‖节点中双击―客户‖维度。

2.在“属性”窗格中,请注意多维数据集向导已经创建的―客户关键字‖和―地域关键字‖属性。

3.在“维度结构”选项卡的工具栏上,使用―缩放‖图标以100 % 的缩放比例查看“数据源视图”窗格中的表。

4.将“数据源视图”窗格中的以下各列拖到“属性”窗格中:

?BirthDate

?MaritalStatus

?Gender

?EmailAddress

?YearlyIncome

?TotalChildren

?NumberChildrenAtHome

?EnglishEducation

?EnglishOccupation

?HouseOwnerFlag

?NumberCarsOwned

?Phone

?DateFirstPurchase

?CommuteDistance

5.将“数据源视图”窗格内―地域‖表中的以下各列拖到“属性”窗格中:

?City

?StateProvinceName

?EnglishCountryRegionName

?PostalCode

6.在―文件‖菜单上,单击“全部保存”。

向“产品”维度中添加属性

添加属性

1.打开―产品‖维度的维度设计器。

2.在“属性”窗格中,请注意多维数据集向导创建的―产品密钥‖属性。

3.在“维度结构”选项卡的工具栏上,使用―缩放‖图标以100 % 的缩放比例查看“数据源视图”窗格中的表。

4.将“数据源视图”窗格内―产品‖表中的以下各列拖到“属性”窗格中:

?StandardCost

?Color

?SafetyStockLevel

?ReorderPoint

?ListPrice

?Size

?SizeRange

?Weight

?DaysToManufacture

?ProductLine

?DealerPrice

?Class

?Style

?ModelName

?StartDate

?EndDate

?Status

5.在―文件‖菜单上,单击“全部保存”。

检查多维数据集和维度属性

定义多维数据集后,可以使用多维数据集设计器检查结果。在下面的任务中,您将检查Analysis Services Tutorial 项目中多维数据集的结构。

在多维数据集设计器中检查多维数据集和维度的属性

1.若要打开多维数据集设计器,请双击解决方案资源管理器中“多维数据集”节点中的Analysis Services

Tutorial多维数据集。

2.在多维数据集设计器中的“多维数据集结构”选项卡的“度量值”窗格中,展开“Internet 销售”度量值组以显示

所定义的度量值。

将度量值拖到所需的顺序中可以更改它们的顺序。所创建的度量值顺序将影响某些客户端应用程序对这些度量值进行排序的方式。度量值组及其包含的每个度量值都有属性,在―属性‖窗口中可以编辑这些属性。

3.在多维数据集设计器中,在“多维数据集结构”选项卡的“维度”窗格中,检查Analysis Services Tutorial 多维

数据集中的多维数据集维度。

请注意,尽管在数据库级别只创建了三个维度(如解决方案资源管理器所示),但在Analysis Services Tutorial 多维数据集内却有五个多维数据集维度。该多维数据集包含的维度比数据库多,其原因是,根据事实数据表中与日期相关的不同事实数据,―日期‖数据库维度被用作三个与日期相关的单独多维数据集维度的基础。这些与日期相关的维度也称为―角色扮演维度‖。使用三个与日期相关的多维数据集维度,用户可以按照下列三个与每个产品销售相关的单独事实数据在多维数据集中组织维度:产品订单日期、履行订单的到期日期和订单发货日期。通过将一个数据库维度重复用于多个多维数据集维度,Analysis Services 简化了维度管理,降低了磁盘空间使用量,并减少了总体处理时间。

4.在“多维数据集结构”选项卡的“维度”窗格中,展开“客户”,然后单击“编辑客户”,以便在维度设计器中打开

该维度。

维度设计器包含以下选项卡:“维度结构”、“属性关系”、“翻译”和“浏览器”。请注意,“维度结构”选项卡包含以下三个窗格:“属性”、“层次结构”和“数据源视图”。―维度‖中包含的属性将出现在“属性”窗格中。有关详细信息,请参阅:定义维度特性、创建用户定义的层次结构、定义属性关系

5.在解决方案资源管理器中右键单击“多维数据集”节点中的Analysis Services Tutorial多维数据集,然后单击

“视图设计器”,可以切换到多维数据集设计器。

6.在多维数据集设计器中,单击“维度用法”选项卡。

在此Analysis Services Tutorial 多维数据集视图中,可以看到―Internet 销售‖度量值组所用的多维数据集维

度。此外,可以定义每个维度及使用该维度的每个度量值组之间的关系类型。

7.单击“分区”选项卡。

多维数据集向导可以使用不带聚合的多维联机分析处理(MOLAP) 存储模式,为多维数据集定义单个分区。

通过MOLAP,所有叶级别数据和所有聚合均存储在多维数据集中,以便最大限度地提高性能。聚合是预先计算好的数据汇总,聚合可以在问题提出之前准备好答案,从而可以缩短查询响应时间。可在“分区”选项卡上定义其他分区、存储设置和写回设置。有关详细信息,请参阅分区(Analysis Services - 多维数据)、聚合和聚合设计和设计分区存储和聚合。

8.单击“浏览器”选项卡。

注意,由于浏览多维数据集尚未部署到Analysis Services 实例中,因此无法对其进行浏览。此时,Analysis Services Tutorial 项目中的多维数据集只是一个可以部署到任何Analysis Services 实例的多维数据集定义。

部署和处理多维数据集时,将在Analysis Services 实例中创建定义的对象,然后用基础数据源的数据填充这些对象。

9.在解决方案资源管理器中,右键单击“多维数据集”节点中的Analysis Services Tutorial,然后单击“查看代

码”。

此时在Analysis Services Tutorial.cube [XML] 选项卡上将显示Analysis Services Tutorial 多维数据集的

XML 代码。这是在部署期间在Analysis Services 实例中创建多维数据集所用的实际代码。有关详细信息,请参阅如何查看Analysis Services 项目的XML

10.关闭XML 代码选项卡。

部署Analysis Services 项目

1.在解决方案资源管理器中,右键单击“Analysis Services Tutorial”项目,然后单击“属性”。

将出现“Analysis Services Tutorial 属性页”对话框,并显示活动(开发)配置的属性。可以定义多个配置,每个配置可以具有不同的属性。例如,开发人员可能需要将同一项目配置为部署到不同的开发计算机,并具有不同的部署属性,如数据库名称或处理属性。注意“输出路径”属性的值。该属性指定生成项目时保存项目的XMLA 部署脚本的位置。这些脚本用于将该项目中的对象部署到Analysis Services 实例。

2.在左窗格的“配置属性”节点中,单击“部署”。

查看项目的部署属性。默认情况下,Analysis Services 项目模板将Analysis Services 项目配置为将所有项目增量部署到本地计算机上的默认Analysis Services 实例,以创建一个与此项目同名的Analysis Services 数据库,并在部署后使用默认处理选项处理这些对象。相关主题:配置Analysis Services 项目属性

注意

3.单击“确定”。

4.在解决方案资源管理器中,右键单击Analysis Services Tutoria项目,然后单击“部署”。

Business Intelligence Development Studio 将生成Analysis Services Tutorial 项目,然后使用部署脚本将其部署到指定的Analysis Services 实例中。部署进度将在下列两个窗口中显示:“输出”窗口和“部署进度–

Analysis Services Tutorial”窗口。打开―输出‖窗口,如果需要,可通过单击“视图”菜单上的“输出”实现。“输出”窗口显示部署的整体进度。“部署进度–Analysis Services Tutorial”窗口显示部署过程中每个步骤的详细信息。相关主题:生成Analysis Services 项目、部署Analysis Services 项目

5.查看“输出”窗口和“部署进度–Analysis Services Tutorial”窗口的内容,验证是否已生成、部署和处理多维

数据集,并且没有出现错误。

6.通过单击窗口中工具栏上的“自动隐藏”图标来隐藏“部署进度- Analysis Services Tutorial”窗口。

7.通过单击窗口中工具栏上的“自动隐藏”图标来隐藏“输出”窗口。

您已经将Analysis Services Tutorial 多维数据集成功部署到Analysis Services 的本地实例,并已对部署的多维数据集进行了处理。

浏览多维数据集

部署多维数据集后,可以在多维数据集设计器的“浏览器”选项卡中查看多维数据集数据,并可以在维度设计器的“浏览器”选项卡中查看维度数据。

浏览已部署的多维数据集

1.切换到Business Intelligence Development Studio 中的―产品‖维度的“维度设计器”。为此,请双击解决方案

资源管理器的“维度”节点的“产品”维度。

2.单击“浏览器”选项卡可显示Product Key属性层次结构的“所有”成员。在第3 课中,您将定义―产品‖维度的

用户层次结构,利用此结构可浏览该维度。

3.切换到Business Intelligence Development Studio 中的“多维数据集设计器”。为此,双击解决方案资源管理

器的“多维数据集”节点的Analysis Services Tutorial多维数据集。

4.选择“浏览器”选项卡,然后在设计器的工具栏上单击重新连接图标。

该设计器的左窗格会显示Analysis Services Tutorial 多维数据集中的对象。在“浏览器”选项卡的右侧有两个窗格:上部窗格是“筛选器”窗格,下部是“数据”窗格。在接下来的课程中,您将使用多维数据集浏览器进行分析。

第 3 课:修改度量值、属性和层次结构

本课程包含以下任务:

修改度量值

在此任务中,您将为Analysis Services Tutorial 多维数据集中的货币和百分比度量值指定格式设置属性。

修改―客户‖维度

在该任务中,将定义用户层次结构,创建命名计算,修改属性以使用命名计算并将属性和用户层次结构分组到显示文件夹中。

修改―产品‖维度

在该任务中,将定义用户层次结构,创建命名计算、定义所有―全部‖级别成员名称并定义显示文件夹。

修改―日期‖维度

在该任务中,将定义用户层次结构,修改属性成员名称并使用组合键指定唯一的属性成员。

浏览已部署的多维数据集

在此任务中,将使用多维数据集设计器中的浏览器浏览多维数据集数据。

修改度量值

可以使用FormatString属性来定义格式设置以控制如何向用户显示度量值。在此任务中,您将为Analysis Services Tutorial 多维数据集中的货币和百分比度量值指定格式设置属性。

修改多维数据集的度量值

1.切换到Analysis Services Tutorial 多维数据集的多维数据集设计器的“多维数据集结构”选项卡,在“度量值”

窗格中展开“Internet 销售”度量值组,右键单击“订单数量”,然后单击“属性”。

2.在―属性‖窗口中,单击“自动隐藏”以阻止―属性‖窗口打开。

当―属性‖窗口处于打开状态时,同时更改多维数据集中多个项的属性将更加容易。

3.在―属性‖窗口的FormatString列表中,键入#,#。

4.在“多维数据集结构”选项卡的工具栏上,单击“显示度量值网格”。

通过网格视图,您可以同时选择多个度量值。

5.选择下列度量值之一:可以通过在按住Ctrl 键的同时单击各个度量值的方式来选择多个度量值:

?Unit Price

?Extended Amount

?Discount Amount

?Product Standard Cost

?Total Product Cost

?Sales Amount

?Tax Amt

?Freight

6.在―属性‖窗口的FormatString列表中,选择Currency。

7.在―属性‖窗口顶部的下拉列表框中,选择Unit Price Discount Pct度量值,然后在FormatString列表中选

择Percent。

8.在―属性‖窗口中,将Unit Price Discount Pct度量值的Name属性更改为“单价折扣百分比”。

9.在“度量值”窗格中,单击Tax Amt,然后将此度量值的名称更改为Tax Amount。

10.在―属性‖窗口中,单击“自动隐藏”以隐藏―属性‖窗口,然后在“多维数据集结构”选项卡的工具栏上单击“显示

度量值树”。

11.在“文件”菜单上,单击“全部保存”。

修改“客户”维度

有许多不同的方式可用来增加多维数据集中维度的用户友好性和功能。在本主题的各任务中,您将修改―客户‖维度。重命名属性

可以使用维度设计器的“维度结构”选项卡更改属性名称。

重命名属性

1.在Business Intelligence Development Studio 中,切换到―客户‖维度的“维度设计器”。为此,请在解决方案

资源管理器的“维度”节点中双击―客户‖维度。

2.在“特性”窗格中,右键单击“英语国家/地区区域名”,并选择“重命名”。将该特性的名称更改为“国家/地区-

区域”。

3.以相同方法更改以下属性的名称:

?“英语教育”属性—更改为“教育”

?“英语教育”属性—更改为“教育”

?“省/市/自治区名”属性—更改为“省/市/自治区”

4.在―文件‖菜单上,单击“全部保存”。

创建层次结构

通过将属性从“属性”窗格拖至“层次结构”窗格可以创建新的层次结构。

创建层次结构

1.将“国家/地区-区域”属性从“属性”窗格拖动到“层次结构”窗格中。

2.将“省/市/自治区”属性从“属性”窗格中拖动到位于“国家/地区-区域”级别下方的“层次结构”窗格的<新级

别>单元格中。

3.将“市县”属性从“属性”窗格中拖动到位于“省/市/自治区”级别下方的“层次结构”窗格的<新级别>单元格中。

4.在“维度结构”选项卡的“层次结构”窗格中,右键单击“层次结构”的层次结构的标题栏,选择“重命名”,并键

入“客户所在地域”。

此层次结构的名称现在为“客户所在地域”。

5.在―文件‖菜单上,单击“全部保存”。

添加命名计算

可以向数据源视图的表中添加命名计算,命名计算是一个表示为计算列的SQL 表达式。该表达式的显示形式和工作方式类似于表中的列。通过命名计算,不必修改基础数据源中的表即可扩展数据源视图中现有表的关系架构。有关详细信息,请参阅在数据源视图中定义命名计算(Analysis Services)。

添加命名计算

1.在解决方案资源管理器中双击“数据源视图”文件夹中的Adventure Works DW 数据源视图,将其打开。

2.在“表”窗格中,右键单击Customer,然后单击“新建命名计算”。

3.在“创建命名计算”对话框中,在“列名”框中键入FullName,然后在“表达式”框中键入下列CASE语句:

4.CASE

5. WHEN MiddleName IS NULL THEN

6. FirstName + ' ' + LastName

7. ELSE

8. FirstName + ' ' + MiddleName + ' ' + LastName

9.END

CASE语句将FirstName、MiddleName和LastName列串联为一个列,该列将在―客户‖维度中用作“客户”

属性的显示名称。

10.单击“确定”,然后展开“表”窗格中的Customer。

FullName命名计算显示在Customer 表中列的列表中,并由一个图标指示它是命名计算。

11.在―文件‖菜单上,单击“全部保存”。

12.在“表”窗格中,右键单击Customer,并选择“浏览数据”。

13.查看“浏览Customer 表”视图中的最后一列。

注意,FullName列显示在数据源视图中,正确串联基础数据源中多个列的数据,而不修改原始数据源。

14.关闭“浏览Customer 表”视图。

将命名计算用于成员名称

在数据源视图中创建命名计算后,可以将命名计算用作特性的属性。

将命名计算用于成员名称

1.切换到―客户‖维度的维度设计器。

2.在“维度结构”选项卡的“属性”窗格中,单击“客户键”属性。

3.打开―属性‖窗口并单击标题栏上的“自动隐藏”按钮,以便该窗口保持打开状态。

4.在“名称”属性字段中,键入“全名”。

5.在NameColumn属性字段中单击,然后单击浏览(…) 按钮以打开“名称列”对话框。

6.选择“源列”列表中的FullName,然后单击“确定”。

7.将“全名”属性从“属性”窗格中拖动到位于“市县”级别下方的“层次结构”窗格的<新级别>单元格中。

8.在―文件‖菜单上,单击“全部保存”。

定义显示文件夹

可以使用显示文件夹将用户和属性层次结构分组为文件夹结构,以增加用户友好性。

定义显示文件夹

1.打开―客户‖维度的“维度结构”选项卡。

2.在“属性”窗格中,在按住Ctrl 键的同时单击下列各个属性,将它们选中:

?市/县

?国家/地区-区域

?邮政编码

?省/市/自治区

3.在―属性‖窗口中,单击AttributeHierarchyDisplayFolder属性字段,并键入“位置”。

4.在“层次结构”窗格中,单击“客户所在地域”,然后在―属性‖窗口中选择“位置”作为DisplayFolder属性的值。

5.在“属性”窗格中,在按住Ctrl 键的同时单击下列各个属性,将它们选中:

?上下班路程

?教育

?性别

?户主标志

?婚姻状况

?拥有的汽车数

?家中子女数目

?职业

?子女总数

?年收入

6.在―属性‖窗口中,单击AttributeHierarchyDisplayFolder属性字段并键入Demographic。

7.在“属性”窗格中,在按住Ctrl 键的同时单击下列各个属性,将它们选中:

?电子邮件地址

?电话

8.在―属性‖窗口中,单击AttributeHierarchyDisplayFolder属性字段,并键入“联系人”。

9.在―文件‖菜单上,单击“全部保存”。

定义组合的KeyColumns

KeyColumns属性中包含表示特性键的一个或多个列。在本课中,您会为“市县”和“省/市/自治区”属性创建组合键。需要唯一标识属性时,组合键可能会有帮助。例如,在本教程的稍后部分定义属性关系时,“市县”属性必须唯一确定“省/市/自治区”属性。但是,在不同的省/自治区可能有些城市会重名。为此,将创建由“市县”属性

的StateProvinceName和City列组成的组合键。有关详细信息,请参阅如何修改特性的KeyColumn 属性。

若要为“市县”属性定义组合的KeyColumns

1.打开―客户‖维度的“维度结构”选项卡。

2.在“属性”窗格中,单击“市县”属性。

3.在“属性”窗口中,在KeyColumns字段中单击,然后单击浏览(...) 按钮。

4.在“键列”对话框的“可用列”列表中,选择StateProvinceName列,然后单击>按钮。

现在,City和StateProvinceName列会显示在“键列”列表中。

5.单击―确定‖。

6.若要设置“市县”特性的NameColumn属性,请在―属性‖窗口的NameColumn字段中单击,然后单击浏览(...)

按钮。

7.在“名称列”对话框的“源列”列表中,选择City,然后单击“确定”。

8.在―文件‖菜单上,单击“全部保存”。

为“省/市/自治区”属性定义组合的KeyColumns

1.打开―客户‖维度的“维度结构”选项卡。

2.在“属性”窗格中,单击“省/市/自治区”属性。

3.在“属性”窗口中,在KeyColumns字段中单击,然后单击浏览(...) 按钮。

4.在“键列”对话框的“可用列”列表中,选择EnglishCountryRegionName列,然后单击>按钮。

现在,EnglishCountryRegionName和StateProvinceName列会显示在“键列”列表中。

5.单击―确定‖。

6.若要设置“省/市/自治区”特性的NameColumn属性,请在―属性‖窗口的NameColumn字段中单击,然后单

击浏览(...) 按钮。

7.在“名称列”对话框的“源列”列表中,选择StateProvinceName,然后单击“确定”。

8.在―文件‖菜单上,单击“全部保存”。

定义属性关系

如果基础数据支持,则应定义属性间的属性关系。定义属性关系可加快维度、分区和查询处理的速度。有关详细信息,请参阅定义属性关系和属性关系。

定义属性关系

1.在―客户‖维度的维度设计器中,单击“属性关系”选项卡。

2.在关系图中,右键单击“市县”属性,然后选择“新建属性关系”。

3.在“创建属性关系”对话框中,“源属性”是“市县”。将“相关属性”设置为“省/市/自治区”。

4.在“关系类型”列表中,将关系类型设置为“刚性”。

因为各成员之间的关系不会随时间变化,所以此关系类型为“刚性”。例如,某个市县不太可能成为另一个省/市/自治区的一部分。

5.单击―确定‖。

6.在关系图中,右键单击“省/市/自治区”属性,然后选择“新建属性关系”。

7.在“创建属性关系”对话框中,“源属性”是“省/市/自治区”。将“相关属性”设置为“国家/地区-区域”。

8.在“关系类型”列表中,将关系类型设置为“刚性”。

9.单击―确定‖。

10.在―文件‖菜单上,单击“全部保存”。

部署更改、处理对象以及查看更改

更改属性和层次结构后,必须部署更改并重新处理相关对象,然后才能查看这些更改。

部署更改、处理对象以及查看更改

1.在BI Development Studio 的“生成”菜单上,单击“部署Analysis Services 教程”。

2.在收到“部署成功完成”消息后,单击―客户‖维度的维度设计器的“浏览器”选项卡,然后单击设计器工具栏上的

重新连接图标。

3.确保在“层次结构”列表中选择了“客户所在地域”,然后在浏览器中依次展开“全部”、Australia、New South

Wales和Coffs Harbour。

浏览器会将客户显示在市县中。

4.切换到Analysis Services 教程多维数据集的“多维数据集设计器”。为此,请在解决方案资源管理器的“多维数

据集”节点中,双击“Analysis Services Tutorial”多维数据集。

5.单击“浏览器”选项卡,然后在设计器的工具栏上单击重新连接图标。

6.在“度量值组”窗格中,展开“客户”。

注意,―客户‖下只出现没有显示文件夹值的显示文件夹和属性,而不显示属性的较长列表。

7.在“文件”菜单上,单击“全部保存”。

修改“产品”维度

在本主题下的任务中,将使用命名计算为产品系列提供更具说明性的名称,在―产品‖维度中定义一个层次结构,并为该层次结构指定―(全部)‖成员名称。还可以按显示文件夹组合各个属性。

添加命名计算

您可以向数据源视图内的表中添加命名计算。在下面的任务中,将创建一个用来显示产品系列完整名称的命名计算。

1.在解决方案资源管理器中双击―数据源视图‖文件夹中的Adventure Works DW 数据源视图,将其打开。

2.在关系图窗格中,右键单击Product表,再单击“新建命名计算”。

3.在“创建命名计算”对话框中的“列名”框中,输入ProductLineName。

4.在“表达式”框中,输入下面的CASE语句:

5.CASE ProductLine

6. WHEN 'M' THEN 'Mountain'

7. WHEN 'R' THEN 'Road'

8. WHEN 'S' THEN 'Accessory'

9. WHEN 'T' THEN 'Touring'

10. ELSE 'Components'

11.END

此CASE语句可以为多维数据集内的每个产品系列创建用户友好的名称。

12.单击“确定”即可创建名为ProductLineName的命名计算。

13.在―文件‖菜单上,单击“全部保存”。

修改某个特性的NameColumn 属性

修改某个特性的NameColumn 属性值

1.切换到―产品‖维度的维度设计器。为此,请在解决方案资源管理器的―维度‖节点中双击―产品‖维度。

2.在“维度结构”选项卡的“属性”窗格中,选择“产品系列”。

3.在―属性‖窗口中的NameColumn属性字段中单击,然后单击浏览(…) 按钮以打开“名称列”对话框。

4.选择“源列”列表中的ProductLineName,然后单击“确定”。

NameColumn 字段中现在包含Product.ProductLineName (WChar)文本。“产品系列”属性层次结构的成员现在将显示产品系列的完整名称,而不会显示缩写形式的产品系列名称。

5.在“维度结构”选项卡的“属性”窗格中,选择“产品密钥”。

6.在―属性‖窗口中的NameColumn属性字段中单击,然后单击省略号(…) 按钮以打开“名称列”对话框。

7.选择“源列”列表中的EnglishProductName,然后单击“确定”。

NameColumn 字段中现在包含Product.EnglishProductName (WChar)文本。

8.在―属性‖窗口中,将“产品密钥”属性的Name属性值更改为“产品名称”。

创建层次结构

1.将“产品系列”属性从“属性”窗格拖动到“层次结构”窗格中。

2.将“型号名称”属性从“属性”窗格中拖动到“层次结构”窗格中位于“产品系列”级别下方的<新级别>单元中。

3.将“产品名称”属性从“属性”窗格中拖动到“层次结构”窗格中位于“型号名称”级别下方的<新级别>单元中。

4.在“维度结构”选项卡的“层次结构”窗格中,右键单击“层次结构”层次结构的标题栏,选择“重命名”,并键

入Product Model Lines。

此层次结构的名称现在为Product Model Lines。

5.在―文件‖菜单上,单击“全部保存”。

指定文件夹名称与“全部”级别成员名称

指定文件夹名称和成员名称

1.在“属性”窗格中,在按住Ctrl 键的同时单击下列各个属性,将它们选中:

?Class

?Color

?Days To Manufacture

?Reorder Point

?Safety Stock Level

?Size

?Size Range

?Style

?Weight

2.在―属性‖窗口的AttributeHierarchyDisplayFolder属性字段中,键入Stocking。

此时即将这些属性分组放到单独的显示文件夹中。

3.在“特性”窗格中,选择下列特性:

?经销价格

?标价

?标准成本

4.在―属性‖窗口的AttributeHierarchyDisplayFolder属性单元中,键入“财务”。

此时即将这些属性分组放到第二个显示文件夹中。

5.在“特性”窗格中,选择下列特性:

?结束日期

?开始日期

?状态

6.在―属性‖窗口的AttributeHierarchyDisplayFolder属性单元中,键入“历史记录”。

此时即将这些属性分组放到第三个显示文件夹中。

7.在“层次结构”窗格中选择“产品型号系列”层次结构,然后在―属性‖窗口中将AllMemberName属性更改为“所

有产品”。

8.单击“层次结构”窗格的空白区域,再将AttributeAllMemberName属性更改为“所有产品”。

单击空白区域,即可修改―产品‖维度自身的属性。您还可以单击―属性‖窗格中位于属性列表顶部的―产品‖维度图标。

9.在―文件‖菜单上,单击“全部保存”。

定义属性关系

如果基础数据支持,则应定义属性间的属性关系。定义属性关系可加快维度、分区和查询处理的速度。有关详细信息,请参阅定义属性关系和属性关系。

定义属性关系

1.在―产品‖维度的维度设计器中,单击“属性关系”选项卡。

2.在关系图中,右键单击“型号名称”属性,然后选择“新建属性关系”。

3.在“创建属性关系”对话框中,“源属性”是“型号名称”。将“相关属性”设置为“产品系列”。

因为各成员之间的关系会随时间变化,所以在“关系类型”列表中,将关系类型设置保留为“柔性”。例如,产品型号可能会最终移动到另一个产品系列中。

4.单击―确定‖。

5.在―文件‖菜单上,单击“全部保存”。

检查“产品”维度更改

检查“产品”维度更改

1.在Business Intelligence Development Studio 的“生成”菜单上,单击“部署Analysis Services 教程”。

2.在收到“部署成功完成”消息后,单击“产品”维度的维度设计器的“浏览器”选项卡,然后单击设计器工具栏上

的重新连接图标。

3.确认已经选中了“层次结构”列表中的“产品型号系列”,再展开“所有产品”。

数据库图片的存储

1、引言 数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。但是,如果我们想动态的显示图片,上述方法就不能满足需要了。我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。 2、建立后台数据库 假定处理的是图片新闻,那么我们可以建立相应的数据库及数据表对象。我们要存取的数据表结构的SQL脚本如下所示: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[picturenews] GO CREATE TABLE [dbo].[picturenews] ( [id] [int] IDENTITY (1, 1) NOT NULL , [image] [image] NULL , [content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL , [detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO 表picturenews中,字段id作为标识,每存储一行数据,自动增加1。字段image 用于存储图片信息,其数据类型为“image”。 3、向数据库存储二进制图片 启动Dreamweaver MX后,新建一个JSP文件。其代码如下所示。 <%@ page contentType="text/html;charset=gb2312"%>

C#从SQL 数据库中读取和存入图片

C#从SQL 数据库中读取和存入图片 本实例主要介绍如何将图片存入数据库。将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用 ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。主要代码如下: private void button1_Click(object sender, EventArgs e) { openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP"; if(openFileDialog1.ShowDialog()==DialogResult.OK) { string fullpath =openFileDialog1.FileName;//文件路径 FileStream fs = new FileStream(fullpath, FileMode.Open); byte[] imagebytes =new byte[fs.Length]; BinaryReader br = new BinaryReader(fs); imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length)); //打开数据库 SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05"); con.Open(); SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con); com.Parameters.Add("ImageList", SqlDbType.Image); com.Parameters["ImageList"].Value = imagebytes; com.ExecuteNonQuery(); con.Close();

怎样将图片上传到数据库进行保存

这个范例共包括三个ASP文件和一个数据库(一个表),全部在同一目录下。 1、tblImage 表结构(ACCESS 2000) sn 自动编号序列号 content-type 文本图片类型 image OLE 对象图片数据 2、SimpleImageToData.asp:上传表单及保存图片到数据库的代码部分,主要文件。 <%@ Language=VBScript %> <% option explicit %> <% '从一个完整路径中析出文件名称 function getFileNamefromPath(strPath) getFileNamefromPath = mid(strPath,instrrev(strPath,"\")+1) end function '定义数据库连接字符串 dim cnstr cnstr = "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.MapPath("./upload.mdb") %> 单个图像保存到数据库 上传图片 显示图片


<% if request.ServerVariables("REQUEST_METHOD") = "POST" then dim sCome, sGo, binData, strData dim posB, posE, posSB, posSE dim binCrlf dim strPath, strFileName, strContentType binCrlf = chrb(13)&chrb(10) '定义一个单字节的回车换行符

C# 图片保存到数据库和从数据库读取图片并显示

C# 图片保存到数据库和从数据库读取图片并显示 图片保存到数据库的方法: public void imgToDB(string sql) { //参数sql中要求保存的imge变量名称为@images //调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'"); FileStream fs = File.OpenRead(t_photo.Text); byte[] imageb = new byte[fs.Length]; fs.Read(imageb, 0, imageb.Length); fs.Close(); SqlCommand com3 = new SqlCommand (sql,con); com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb; if (com3.Connection.State == ConnectionState.Closed) com3.Connection.Open(); try { com3.ExecuteNonQuery(); } catch { } finally { com3.Connection.Close(); } } 数据库中读出图片并显示在picturebox中: 方法一: private void ShowImage(string sql) { //调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'"); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); byte[] b= (byte[])cmd.ExecuteScalar(); if (b.Length 〉0) { MemoryStream stream = new MemoryStream(b, true); stream.Write(b, 0, b.Length); pictureBox1.Image = new Bitmap(stream); stream.Close(); } conn.Close(); }

上传图片及存到数据库

1.上传图片到指定的文件夹,并且把图片的路径存到数据库里面。 //判断上传是否有文件 if (FileUpload1.HasFile) { string filepath = FileUpload1.PostedFile.FileName.ToString(); //将图片保存到项目文件夹image里面 string fileName = System.IO.Path.GetFileName(filepath); string savePaht = Server.MapPath("images/" + fileName); FileUpload1.SaveAs(savePaht); string strSql = "insert into userInfo (userimage) values ('"+ filepath+"')"; // string strSql = "insert into userInfo (userimage) values (@image)"; //userInfo 是表名userimage是图片的字段 Sqlconnection conn=new Sqlconnection(@"数据库的连接字符串"); SqlCommand cmd = new SqlCommand(strSql, conn); conn.open(); //cmd.parameters.add("@image",sqldbtype.varchar,100).value="./image"+filepath; cmd.ExecuteNonQuery(); } 2.遍历文件夹里面的图片,显示在datalist里面 //获取图片所在的文件夹的路径 DirectoryInfo imagesfile = new DirectoryInfo(Server.MapPath("./images")); //绑定数据源 DataList1.DataSource = imagesfile.GetFiles("*.jpg"); DataList1.DataBind();

存储过程_将图片存入数据库

一、写一个存储过程,将图片存入数据库中 基本情况介绍: 数据库版本:oracle 11g 数据库用户:scott 数据库密码:tiger JDK:1.6 要导入的图片:D:\picture\1.jpg --创建存储图片的表 CREATE TABLE IMAGE_LOB (T_ID V ARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL); --创建存储图片的目录 CREATE OR REPLACE DIRECTORY IMAGES AS 'D:\picture'; 存储过程如下: CREATE OR REPLACE PROCEDURE IMG_INSERT (TID V ARCHAR2,FILENAME V ARCHAR2) AS F_LOB BFILE;--文件类型 B_LOB BLOB; BEGIN iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE) V ALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB; --插入空的blob F_LOB:= BFILENAME ('IMAGES', FILENAME); --获取指定目录下的文件 DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONL Y); --以只读的方式打开文件 DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB)); --传递对象 DBMS_LOB.FILECLOSE (F_LOB); --关闭原始文件 COMMIT; END;

将数据库中保存的图片缩小的一种方法

在数据库的日常维护中,经常遇到一些小问题需要处理,比如图片的存储,说起来也是我当初程序设计考虑不全。 数据库: SQLServer 2000 程序:Delphi 图片存放字段类型: BLOB 客户只存了不到1000张图片,结果数据库存放空间现在是相当的大了, 因客户端用户上传图片时,小的几M,大的几十M,主要是数码相机照的,最开始时,我的软件没有处理大小, 最近才缩小处理后再保存. 而现在资料库文件就是40多G了 带来问题:查询带图片的功能时很慢,每次备份时很慢,且备份文件也大。以后如果继续增大…… 解决方法:改变数据库中图片的大小, 在保证1024*768的清晰程度下,尽可能小的改变资料库容量。 使用中间图片c:\tmp.jpg取出数据库的图形,按比例缩小,然后保存在数据库中,再收缩数据库。 具体过程: 1.将数据库中图片取出用TADOBlobStream处理。 2.用函数ZoomJpgSize(iLen,iWid,picBlob)等比例缩小。 3.用TADOBlobStream将图片保存回数据库。 4.收缩数据库DBCC SHINKDATABASE('bb001',TRUNCATEONLY) 具体核心代码见附件。 test_ZoomJpg.rar 最后问题得以解决. 最后文件大小从40G下降到了不到1G。 说明: 1.源程序可以继续改进,TADOBlobStream流是否可以转为二进制直接压缩。欢迎交流15196670@https://www.doczj.com/doc/1916672479.html, 2.源程序用c:\tmp.jpg处理几M的图片时速度慢。 3.源程序图片处理可以继续加强,如放大,缩小,导出本地文件,旋转等功能。

介绍如何将图片存入数据库

本实例主要介绍如何将图片存入数据库。将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。主要代码如下: private void button1_Click(object sender, EventArgs e) { openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP"; if(openFileDialog1.ShowDialog()==DialogResult.OK) { string fullpath =openFileDialog1.FileName;//文件路径 FileStream fs = new FileStream(fullpath, FileMode.Open); byte[] imagebytes =new byte[fs.Length]; BinaryReader br = new BinaryReader(fs); imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length)); //打开数据库 SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05"); con.Open(); SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con); com.Parameters.Add("ImageList", SqlDbType.Image); com.Parameters["ImageList"].Value = imagebytes; com.ExecuteNonQuery(); con.Close(); }

存储图片到SQLSERVER大数据库中

实用标准文档 如何存储图片到SQL SERVER数据库中 SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。 下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。 1、建立一个表: 在SQL SERVER中建立这样结构的一个表: 列名类型目的 ID Integer主键ID IMGTITLEVarchar(50)图片的标题 IMGTYPEVarchar(50)图片类型. https://www.doczj.com/doc/1916672479.html,要以辨认的类型 IMGDATA Image用于存储二进制数据 2、存储图片到SQL SERVER数据库中 为了能存储到表中,你首先要上传它们到你的WEB服务器上,你可以开发一个webform,它用来将客户端中TextBoxwebcontrol中的图片入到你的WEB服务器上来。将你的encType属性设置为:myltipart/formdata. Stream imgdatastream = File1.PostedFile.InputStream; int imgdatalen = File1.PostedFile.ContentLength; string imgtype = File1.PostedFile.ContentType; string imgtitle = TextBox1.Text; byte[] imgdata = new byte[imgdatalen];

int n = imgdatastream.Read(imgdata,0,imgdatalen); string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];S qlConnection connection = new SqlConnection(connstr); SqlCommand command = new SqlCommand ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata) VALUES ( @imgtitle, @imgtype,@imgdata )", connection );SqlParameter paramTitle = new SqlParameter ("@imgtitle", SqlDbType.VarChar,50 ); paramTitle.Value = imgtitle; command.Parameters.Add( paramTitle); SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image );文案大全 实用标准文档 paramData.Value = imgdata; command.Parameters.Add( paramData ); SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 );paramType.Value = imgtype; command.Parameters.Add( paramType ); connection.Open(); int numRowsAffected = command.ExecuteNonQuery(); connection.Close(); 3、从数据库中恢复读取

图片保存到mysql数据库

在我们设计和制作网站的过程中,有时把图片保存到数据库中要比存成文件的形式更加方便。PHP和MySQL这对黄金组合可以很容易的实现上述功能。在本文中,我们将会向读者介绍如何把图片保存到MySQL数据库中以及如何将数据库中的图片显示出来。 设置数据库 我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。 MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。 在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。 CREATE TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB ); 编写上传脚本 关于如何实现文件的上传,我们在这里就不再介绍了。现在,我

们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。 这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录。 下面,我们简单说明一下上述脚本程序。首先,我们通过“If($Picture != "none")”检查是否有文件被上传。然后,使用addslashes()函数避免出现数据格式错误。最后,连接MySQL,选择数据库并插入图片。 显示图片 在知道了如何将图片存入数据库之后,我们就需要考虑怎样才能从

上传图片及存到大数据库

实用标准文案 1.上传图片到指定的文件夹,并且把图片的路径存到数据库里面。 //判断上传是否有文件 if (FileUpload1.HasFile) { string filepath = FileUpload1.PostedFile.FileName.ToString(); //将图片保存到项目文件夹image里面 string fileName = System.IO.Path.GetFileName(filepath); string savePaht = Server.MapPath("images/" + fileName); FileUpload1.SaveAs(savePaht); string strSql = "insert into userInfo (userimage) values ('"+ filepath+"')"; // string strSql = "insert into userInfo (userimage) values (@image)"; //userInfo 是表名 userimage是图片的字段 Sqlconnection conn=new Sqlconnection(@"数据库的连接字符串"); SqlCommand cmd = new SqlCommand(strSql, conn); conn.open(); //cmd.parameters.add("@image",sqldbtype.varchar,100).value="./image"+filepath; cmd.ExecuteNonQuery(); } 2.遍历文件夹里面的图片,显示在datalist里面 //获取图片所在的文件夹的路径 DirectoryInfo imagesfile = new DirectoryInfo(Server.MapPath("./images")); //绑定数据源 DataList1.DataSource = imagesfile.GetFiles("*.jpg"); DataList1.DataBind(); 精彩文档

大数据库存储图片教程

数据库存储图片(MsSQL/ORACLE/ACCESS) (2009-05-24 16:34:01) 转载 标签: 分类:C#开发 it 下面我来汇总一下如何将图片保存到SqlServer、Oracle、Access数据库中。首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步 1.将图片转换为二进制数组(byte[]); 2.把转换后的二进制数组(byte[])作为参数传递给要执行的Command; 3.执行Command; 首先,如何把图片转换成byte[],如果你使用的是https://www.doczj.com/doc/1916672479.html,2.0,那么你可以使用FileUpLoad控件来实现 byte[] fileData = this.FileUpload1.FileBytes; 如果你用的是https://www.doczj.com/doc/1916672479.html,1.1或者你在创建WinForm那么你可以使用下面的方法来把图片转换为byte[] public byte[] getBytes(string filePath) { System.IO.FileStream fs = new System.IO.FileStream(filePath,

System.IO.FileMode.Open); byte[] imgData = new byte[fs.Length]; fs.Read(imgData, 0, (int)fs.Length); return imgData; }接下来我们要做的就是要把已经得到的byte[]作为参数传递给Command对象 1.SqlServer数据库。SqlServer有Image字段类型,最大可以存储2G的数据。byte[] fileData = this.FileUpload1.FileBytes; string sql = "insert into t_img(img) values (@img)"; string strconn = System.Configuration.ConfigurationManager.ConnectionStrings["fengd ongDB"].ToString(); SqlConnection sqlConn = new SqlConnection(strconn); SqlCommand sqlComm = new SqlCommand(sql, sqlConn); sqlComm.Parameters.Add("@img", SqlDbType.Image);//添加参数sqlComm.Parameters["@img"].Value = fileData;//为参数赋值 sqlConn.Open(); sqlComm.ExecuteNonQuery(); sqlConn.Close(); 2.Oracle数据库。在Oracle数据库中我们可以使用BLOB字段类型,最大可以

存储图片到SQL SERVER数据库中

如何存储图片到SQL SERVER数据库中 SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。 1、建立一个表: 在SQL SERVER中建立这样结构的一个表: 列名类型目的 ID Integer 主键ID IMGTITLE Varchar(50) 图片的标题 IMGTYPE Varchar(50) 图片类型. https://www.doczj.com/doc/1916672479.html,要以辨认的类型 IMGDATA Image 用于存储二进制数据 2、存储图片到SQL SERVER数据库中 为了能存储到表中,你首先要上传它们到你的WEB 服务器上,你可以开发一个web form,它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来。将你的encType 属性设置为:myltipart/formdata. Stream imgdatastream = File1.PostedFile.InputStream; int imgdatalen = File1.PostedFile.ContentLength; string imgtype = File1.PostedFile.ContentType; string imgtitle = TextBox1.Text; byte[] imgdata = new byte[imgdatalen]; int n = imgdatastream.Read(imgdata,0,imgdatalen); string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"]; SqlConnection connection = new SqlConnection(connstr); SqlCommand command = new SqlCommand ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata) V ALUES ( @imgtitle, @imgtype,@imgdata )", connection ); SqlParameter paramTitle = new SqlParameter ("@imgtitle", SqlDbType.VarChar,50 ); paramTitle.Value = imgtitle; command.Parameters.Add( paramTitle); SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image ); paramData.Value = imgdata;

将图片转换成二进制存储在数据库中

将图片转换成二进制存储在数据库中 using System; usingSystem.Collections.Generic; https://www.doczj.com/doc/1916672479.html,ponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Text; usingSystem.Windows.Forms; using System.IO; usingSystem.Data.SqlClient; namespace WindowsApplication1 { public partial class Form1 : Form { stringstrPath; FileStream file; public Form1() { InitializeComponent(); } //先定义一个方法用于将传入的图片转换成二进制代码 private Byte[] setPhotoByte(string photoPath) { if (photoPath != null ) { string str = photoPath;//保存传入的路径 //将传入路径下的图片以文件方式打开 file = new FileStream(str, FileMode.Open, FileAccess.Read);//以只读方式打开传入路劲下的图片 Byte[] byteSQLData = new byte[file.Length]; file.Read(byteSQLData, 0, byteSQLData.Length);//完整的将文件中的数据读入到创建的byte数据中 file.Close(); MessageBox.Show(photoPath); returnbyteSQLData; } else { if (File.Exists(@"E:/学生党员信息管理系统/其它/默认相片.jpg") == true) { string str = @"E:/学生党员信息管理系统/其它/默认相片.jpg";

存储图片到SQLSERVER数据库中

存储图片到 S Q L S E R V E R数据库 中 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

如何存储图片到S Q L S E R V E R数据库中 SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。 1、建立一个表: 在SQL SERVER中建立这样结构的一个表: 列名类型目的 ID Integer 主键ID IMGTITLE Varchar(50) 图片的标题 IMGTYPE Varchar(50) 图片类型. 要以辨认的类型 IMGDATA Image 用于存储二进制数据 2、存储图片到SQL SERVER数据库中 为了能存储到表中,你首先要上传它们到你的WEB 服务器上,你可以开发一个web form,它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来。将你的 encType 属性设置为:myltipart/formdata. string imgtitle = ; byte[] imgdata = new byte[imgdatalen]; int n = (imgdata,0,imgdatalen); string connstr=((NameValueCollection)("appSettings"))["connstr"]; SqlConnection connection = new SqlConnection(connstr); SqlCommand command = new SqlCommand ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata) VALUES ( @imgtitle, @imgtype,@imgdata )", connection ); SqlParameter paramTitle = new SqlParameter ("@imgtitle", ,50 ); = imgtitle; SqlParameter paramData = new SqlParameter( "@imgdata", ); = imgdata; SqlParameter paramType = new SqlParameter( "@imgtype", ,50 ); = imgtype; (); int numRowsAffected = (); (); 3、从数据库中恢复读取 现在让我们来从SQL Server中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。 private void Page_Load(object sender, e) { string imgid =["imgid"]; string connstr=((NameValueCollection) ("appSettings"))["connstr"];

VB+SQL数据库图片存取

VB+SQL图片存取vb代码 VB窗体界面如下: 1.把图片写入到Field中函数代码: Private Sub picsavetodb(ByRef fld As ADODB.Field,

diskfile As String) Const blocksize = 4096 Dim bytedata() As Byte Dim numblocks As Long Dim filelength As Long Dim leftover As Long Dim sourcefile As Long Dim i As Long sourcefile = FreeFile Open Trim(CommonDialog1.filename) For Binary Access Read As sourcefile filelength = LOF(sourcefile) If filelength = 0 Then Close sourcefile MsgBox Trim(CommonDialog1.filename) & "无内容或不存在!"

Else numblocks = filelength \ blocksize leftover = filelength Mod blocksize fld.Value = Null ReDim bytedata(blocksize) For i = 1 To numblocks Get sourcefile, , bytedata() fld.AppendChunk bytedata() Next ReDim bytedata(leftover) Get sourcefile, , bytedata() fld.AppendChunk bytedata() Close sourcefile End If End Sub

数据库存储解决方案

数据库存储解决方案 一、应用分析 信息化扶植过程中所面对的挑衅 跟着信息体系日益广泛的应用,各大年夜企业的IT部分将会见对很多前所未有的挑衅,个中最难敷衍的就是若何保护、存储和治理信息,这对于任何一个组织来说都是至关重要的。IT部分必须设计一种具备不间断运行才能、可随时扩充的、易于治理的存储基本举措措施。它不只可以或许加倍有效地存储、治理数据、支撑无法猜测的数据增长,并且可以或许及时地将大年夜量的数据转换成有价值的营业信息。企业组织营业应用法度榜样可以用以下两种办法之一来应对信息过载:被这些数据的宏大年夜数量和多样性压垮,或者应用这些信息,并将其转换成可以用来在贸易范畴博得竞争优势的有价值的资产。IT运营治理部分在数据的存储治理方面所碰到的问题都是类似的,他们都不合程度的受数据急剧增长和复杂多样的应用所困扰。 为了保障 7×24 的体系可用性而倔强抗争 面对激烈的行业竞争和营业的持续化需求,供给 7×24 的办事是当今信息化扶植的最根本的请求之一。这就请求 IT 部分要确保临盆体系的不间断的可用性。因为体系数据备份、体系硬件保护、体系软件进级、增长新的设备、处理报表和测试新应用等原因可能须要将临盆体系暂停,所有这些在一些关键的应用中将是无法被接收的。 数据量的激增带来的挑衅 企业的并购、数据中间的归并与数据大年夜集中、营业的全球化、推出多样化的办事电子商务的实施、大年夜型数据仓库的应用等,使数据增长难以预感和控制。IT 部分须要赓续购买新的存储设备,以储存急速增长的数据。然则,紧缩的 IT 预算,无法知足采购的需求。增长更多的存储设备可以临时解决存储容量不足的问题,然则随之而来的是更多的存储治理问题。因为增长存储设备的同时,也增长了存储治理的工作量和复杂度。传统的存储治理办法消费专业存储治理人员的时光和精力,不只无法有效地治理大年夜量的数据,并且还无法充分应用已有的磁盘存储空间。因为汗青原因或体系应用的特点,IT 部分存在多种计算平台的情况越来越广泛。多平台使存储治理加倍复杂,是体系治理人员面对的又一个挑衅。 新应用开辟的紧急性 面对愈演愈烈的竞争,企业不只要供给 7×24 的办事,还要赓续推出新的办事或者应用。这就请求企业组织的 IT 部分在较短时光内可以或许以合理的成本、及时地开辟出真正实用的应用法度榜样,架构恰当的体系平台。 数据的迁徙、移植和归并 数据中间的归并与集中、新应用推广的实施带来的问题是,如安在不间断临盆体系的前提下,

用JSP实现将图片存入数据库或从数据库中取出

数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。但是,如果我们想动态的显示图片,上述方法就不能满足需要了。我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。 2、建立后台数据库 假定处理的是图片新闻,那么我们可以建立相应的数据库及数据表对象。我们要存取的数据表结构的SQL脚本如下所示: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[picturenews] GO CREATE TABLE [dbo].[picturenews] ( [id] [int] IDENTITY (1, 1) NOT NULL , [image] [image] NULL , [content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL , [detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO 表picturenews中,字段id作为标识,每存储一行数据,自动增加1。字段image 用于存储图片信息,其数据类型为“image”。 3、向数据库存储二进制图片 启动Dreamweaver MX后,新建一个JSP文件。其代码如下所示。 <%@ page contentType="text/html;charset=gb2312"%> 存储图片

新闻标题:
新闻图片:
新闻内容:

相关主题
文本预览
相关文档 最新文档