1.3 SQL Server数据库使用简介
微软公司的SQL Server目前的最新版本是SQL Server 2008版,其前一个版本SQL Server 2005是目前最流行的数据库管理系统。它提供了数据库引擎、数据分析与整合、数据报表等服务功能。在信息管理软件开发界面,SQL Server数据库管理系统具有十分重要的地位。
1.3.1 使用SQL Server Management Studio管理数据库
SQL Server Management Studio(SSMS)是SQL Server的图形用户界面的管理中心。SSMS的前身是SQL Server Enterprise Management,称为企业管理器。SSMS提供了与企业管理器类似的功能,与企业管理器相比,SSMS提供了更多的功能。它将数据库管理和查询分析器整合到一个用户界面中,用户使用更方便。SSMS提供了管理SQL Server数据库服务器所有对象的功能。用户可以在SSMS中以图形化的方式创建数据库、表、视图、存储过程、索引等。
启动SSMS时会显示“连接到服务器”窗口,如图1.25所示。
图1.25 “连接到服务器”窗口
“服务器类型”下拉列表框列出了可供使用的SQL Server服务,默认的是SQL Server数据库引擎。用户也可以选择SSIS或分析服务来进行连接,然后在“服务器名称”文本框中输入要连接的服务器的名称或IP地址。指定身份验证类型,SQL Server支持以下两种验证类型。
● Windows身份验证:使用登录到Windows的用户名和密码完成验证过程,也就是说,一旦登录到Windows,SQL Server就将使用信任连接。这意味着SQL Server相信已经验证过用户名和密码了。
● SQL Server身份验证:使用SQL Server提供的验证模式进行验证,需要在SQL Server中创建用户名和密码。用户必须在“登录名”和“密码”文本框中输入用户名和密码才能通过验证,比如以sa用户名登录。
登录成功后将进入SSMS的主界面,该界面的左侧提供了对象树,使得用户可以管理SQL Server的方方面面。在左侧的对象树中选中某个对象列表时,右侧的摘要视图中则会显示出详细的对象信息,比如在左侧选中AdventureWorks数据库中的表节点,在右侧的摘要栏中会显示出所有的表信息,如图1.26所示。
图1.26 “Microsoft SQL Server Management Studio”窗口
在摘要窗口中可以对表进行编辑,比如添加一个新表、删除现有的表,或对表结构进行修改。一个很有用的功能是可以为表生成SQL脚本,用鼠标右键单击要生成脚本代码的表,在弹出的快捷菜单中选择“编写脚本为”命令,将会弹出可供编写的Create、Insert、Update、Delete、Select或Drop等脚本。开发人员可以生成脚本,然后在程序中填充参数,这在日常工作中使用相当频繁。
对象资源管理器的树状节点提供了SQL Server所有对象的一个列表,在数据库节点下面可以创建新的数据库,为现有的数据库添加数据库关系图、表、视图、存储过程等。下面新建一个名为DemoSite的数据库,1.3.2节将使用SQL Server整合服务,为该数据库中的表导入数据。用鼠标右键单击数据库节点,在弹出的快捷菜单中选择“新建数据库”命令,将弹出图1.27所示的“新建数据库”窗口。
图1.27 “新建数据库”窗口
在“数据库名称”文本框中输入DemoSite。在数据库文件列表的路径栏中为即将生成的数据库文件和事务日志文件指定要存放的路径,左上侧的选项和文件组页提供了对于排序规则、兼容级别等的设置信息,一般情况下保持默认即可。
设置完成后单击“确定”按钮,一个新的数据库就出现在数据库的节点下面,接下来就可以展开DemoSite节点了。用鼠标右键单击表节点,在弹出的快捷菜单中选择“新建表”命令,在右侧的窗口中会新增一个新建表的页面,如图1.28所示。
图1.28 新建表
注意:当从SQL Server 2000数据库迁移到SQL Server 2005时,会出现无法创建视图、无法创建数据库关系图等现象,此时可以将兼容级别设置为SQL Server 2005(90)来解决问题。
在该窗口中可以输入列名,选定SQL Server数据类型,在底部的列属性栏可以为列指定属性,比如是否是自动增长的标识列、列的计算属性及是否为空等。
注意:开发人员可以从现有的表中复制列,打开现有的表结构,按下Ctrl键或Shift键用鼠标选中多个列,然后按“Ctrl+C”组合键复制列,回到新建表页面,按“Ctrl+V”组合键即可完成复制。
在新建表窗口中用鼠标右键单击某一列,在弹出的快捷菜单中可以选择为列设置主键、添加索引、插入或删除列等。限于篇幅原因,这里不再详细介绍,请读者参考专门介绍SQL Server 2005的书籍。
1.3.2 使用Integration Services在多数据库间传递数据
SQL Server Integration Services(SQL Server整合服务,SSIS),是SQL Server 2000中所含的DTS的后续版本,它不是DTS的简单升级,而是将整个功能完全重写,它是一个更加强大的ETL工具。
ETL是Extract(提取)、Transform(转换)和Load(载入)的首字母缩写,是指在数据库环境中从某个来源中提取数据,进行转换,再对数据库进行整合。SSIS提供了比DTS强大得多的功能。本节将介绍开发人员比较关心的,在多数据库之间进行数据导入/导出、转换功能的实现。
注意:在表一级的上下文菜单中,不会发现“导入/导出”菜单项,要使用导入/导出向导进行数据库操作,现在需要在数据库级的上下文菜单中进行操作。
要开发使用SSIS进行导入/导出的工作,必须先安装Integration Services项目,现在不能直接在SSMS中创建SSIS包,需要使用随SQL Server 2005一同安装的Business Intelligence Development Studio工具。该工具提供了与Visual Studio相同的操作体验,下面演示如何从Northwind数据库中导入Customers数据表。将数据记录导入到1.3.1节新建的DemoSite数据库的Customers表中,步骤如下。
打开Business Intelligence Development Studio,选择“文件”|“新建”命令,在弹出的“新建项目”窗口中选择“Integration Services项目”,命名为CopyCustomerToWebSite。假定是将客户数据复制给一个Web站点数据库,如图1.29所示。
单击“确定”按钮后,将进入SSIS包设计视图,BIDS自动创建了一个名为Package.dtsx的包。在解决方案资源管理器中用鼠标右键单击数据源节点,在弹出的快捷菜单中选择“新建数据源”命令,使用新建数据源向导分别添加对Northwind数据库和DemoSite数据库的连接。
用鼠标右键单击控制流视图下面的连接管理器,在弹出的快捷菜单中选择“新建OLE DB连接”命令。在弹出的窗口中选择创建的数据源连接,分别为Northwind和DemoSite各建一个连接,如图1.30所示。
图1.29 新建Integration Services项目
图1.30 新建OLE DB连接
在控制流页面(可以在页面顶部的Tab导航栏中看到控制流文字),从工具箱的控制流项拖一个“执行SQL任务”项到窗口,双击该执行SQL任务项,将弹出图1.31所示的窗口。
图1.31 编辑执行SQL任务
在属性面板的Connection属性栏,选择到DemoSite的连接,在SQLStatement栏输入Delete From Customers,先删除Customers表中的数据。在Name属性栏为该任务选取一个具有描述性的名称,单击“确定”按钮完成设置。
从工具箱的控制流项中,拖一个“数据流任务”到控制流视图中。双击该数据流任务,将切换到数据流任务面板,可以看到工具箱也发生了变换,列出了与数据流任务相关的工具。从工具箱的数据流源栏拖一个“OLE DB源”任务项到视图,双击该任务项,将弹出图1.32所示的窗口。
图1.32 OLE DB源编辑器
在“OLE DB连接管理器”下拉列表框中选择到Northwind数据库的连接,在“数据访问模式”下拉列表框中选择“SQL命令”,然后在“SQL命令文本”文本框中输入“Select * from Customers Where City='London'”,将查询Northwind数据库中城市为London的客户数据。单击“确定”按钮关闭设置窗口。
从工具箱的数据流目标栏拖曳一个OLE DB目标到数据流视图,首先要将OLE DB源的绿色箭头与OLE DB目标进行连接,然后双击OLE DB目标任务项,将弹出图1.33所示的窗口。
图1.33 OLE DB目标编辑器
在“OLE DB连接管理器”下拉列表框中选择到DemoSite的连接,指定“数据访问模式”为“表或视图—快速加载”,然后选中Customers数据表,表示要将OLE DB源中的数据复制到这个目标Customers表。接下来选择映射选项,将进入编辑映射窗口,如图1.34所示。在该窗口中,指定源列与目标列之间的映射,源列中的字段值将会复制到指定的目标列中,单击“确定”按钮结束目标列编辑。
图1.34 编辑列映射
现在已经完成了SSIS包的设置工作,按F5键运行这个包,运行成功时任务项显示为绿色,并且可以在进度页面看到详细的文字信息,如图1.35所示。
图1.35 执行包效果
现在打开DemoSite数据库中的Customers表,可以看到数据已经被导入进来。事实上,本示例演示的步骤使用SQL Server的导入/导出向导也可以实现,但是,深入地了解SSIS的数据转换功能有助于解决一些非常复杂的业务难题。