2.3 SQL Server 2000数据库的设置与管理
2.3.1 SQL Server身份验证模式
1. 登录账户管理
在SQL Server 2000中,每个用户(包括网络和本地用户)在访问SQL Server数据库之前,都必须经过两个阶段的安全性验证。第一个阶段是身份验证,验证用户是否具有连接权,即是否允许用户访问SQL Server服务器实例,对应到连接权的用户称为登录账户和登录名。也就是说,网络和本地用户要想访问服务器实例,必须获得该服务器实例上登录账户的身份。登录账户的有效范围是在一个服务器实例内,所以,同一台计算机上两个服务器实例的登录账户是互不相干的。第二个阶段是数据库的访问权,验证连接到服务器实例的用户(即已登录到服务器实例的用户)是否具有访问权。也就是说,用户是否可以在相应的数据库中进行操作。在SQL Server 2000中,用户必须具备一定的数据库访问权限才能进行相应的数据库操作,一个登录的用户想要能够对数据库进行访问,必须获得相应的数据库和用户的身份。
安装完SQL Server 2000服务器实例后,在企业管理器中依次展开服务器组、服务器和安全性,然后单击“登录”结点,就会在详细信息窗口中看到两个内置的登录账户,如图2-13所示。
图2-13 查看登录账户
(1)BUILTIN\Administrators:一个Windows系统用户的组。凡属于该组的系统账号都可以作为SQL Server的登录账户。
(2)sa:SQL Server系统管理员的登录账户。在混合验证模式下,该账户拥有最高的管理权限,可以执行服务器实例范围内的所有操作。
2. SQL Server安全模式
SQL Server有以下两种验证机制。
1)Windows验证机制
当使用Windows验证机制接入时,用户对SQL Server实例的访问控制通过Windows操作系统完成。当进行连接时,用户不需要提供SQL Server实例的登录账户,但是SQL Server系统管理员必须指定Windows账户和工作组作为有效的登录账户。
2)SQL Server验证机制
当使用SQL Server验证机制时,SQL Server系统管理员必须定义SQL Server登录账户和密码,当用户要连接到SQL Server实例时,必须提供SQL Server登录账户和密码。
安全模式也称为身份验证模式,SQL Server 2000有两种安全模式,即仅Windows身份验证模式和混合验证模式。仅Windows身份验证模式是指采用Windows验证机制,混合验证模式是指采用Windows验证机制或SQL Server验证机制,如图2-14所示。
图2-14 SQL Server的两种安全模式
在安装和管理安装好的SQL Server实例时,SQL Server系统管理员可以选择或指定SQL Server的以下两种身份验证模式之一。
(1)仅Windows身份验证模式,即只允许采用Windows验证机制,用户不指定SQL Server登录账户。
(2)混合验证模式,即用户可以使用Windows验证机制或SQL Server验证机制。
对于SQL Server来说,仅Windows身份验证模式是授权的安全模式,因为这种安全模式能够与操作系统的安全系统集成在一起,能够实现更多的安全验证功能。但是,应用程序开发人员和数据库用户一般更喜欢SQL Server验证机制,因为他们熟悉登录和密码功能,并且这种验证方式和其他的大型数据库验证方式一致,在操作和程序的处理上比较统一。
2.3.2 SQL Server数据库的管理
由于在程序设计中通常要使用到数据库,因此需要在学习程序设计的同时学习对数据库进行管理。在SQL Server 2000中管理数据库主要有两种方法,一种是使用企业管理器,另外一种是使用查询分析器。下面分别介绍这两种方法。
1. 企业管理器
打开“开始”→“所有程序”→“Microsoft SQL Server”菜单项,会发现里面已经有了客户端管理工具了,如图2-15 所示。我们可以使用其中的客户端工具(如企业管理器)对其他的SQL Server实例进行管理。
图2-15 SQL Server菜单选项
1)使用企业管理器创建数据库
使用企业管理器创建数据库对初学者来说是最为方便的了,它避免了繁杂的SQL语句的编写。在企业管理器中直接创建数据库的步骤如下。
(1)启动企业管理器,如图2-16所示。
图2-16 “企业管理器”窗口
(2)在控制台根目录中选择“数据库”结点。
(3)在“数据库”结点上单击鼠标右键,并在弹出的菜单中选择“新建数据库”命令,如图2-17所示。
图2-17 创建新数据库
(4)执行上述操作后,可以对数据库属性进行设置,如图2-18所示。
图2-18 设置新数据库的属性
在数据库属性设置的对话框中有3个选项卡,分别是“常规”、“数据文件”和“事务日志”,它们各对应不同的属性内容,其中最需要关心的事情只有“常规”选项卡里的“名称”。输入名称以后单击“确定”按钮可完成新建数据库的操作。需要说明的是,此时虽然新建了数据库但是数据库中并没有任何用户自定义的表和其他信息,这些都需要用户自己添加。在本章中我们将创建一个数据库名为“address”。
2)使用企业管理器创建数据库表
与建立数据库一样,可以使用企业管理器来建立数据库表,企业管理器提供了方便的图形化工具——表设计器,在这个窗口中可以轻松地创建和管理表。
使用企业管理器创建一个数据库表的操作步骤如下。
(1)打开企业管理器,在树状目录窗口中展开需要创建新表的数据库“address”,如图2-19所示。
图2-19 选中“address”数据库
(2)单击表结点,此时该数据库中的表对象就会显示在右边的内容窗口中,然后执行下列操作之一打开表设计窗口。
● 在该结点上单击鼠标右键,在弹出的快捷菜单中选择“新建”→“表”命令,如图2-20所示。
图2-20 创建新表
● 在菜单栏上单击“操作”→“新建表”命令。
● 单击工具栏上的“新建”按钮。
(3)在表设计窗口中定义数据表字段。
下面将新建一个名为课程信息的表,表设计窗口由上下两个窗口组成,如图2-21 所示。上面的窗口用来定义表字段的一般属性,下面的窗口用来定义各个表字段的特色属性。在表设计窗口上面直接输入信息即可完成表格的定义操作。
图2-21 为表添加字段
其中id列是作为主键存在的。设置的方法为,选中id列,单击企业管理器工具栏上的小钥匙图标即可。将id列设置为主键,表示一个id唯一确定一行数据,并且主键不可为空。本表将id列设置为标识种子,其增量为递增1,即表示该id列每1行递增1。做了如上设置后,id列的支持将由数据库自动填充,任何人为的修改和填充都不允许。
(4)保存表。
完成(1)~(3)步骤以后就可以将表保存起来。方法是,单击工具栏上的“保存”按钮,然后在“名称”对话框中输入表名“list”,最后返回确认对话框,如图2-22所示。
图2-22 确认是否保存对表的更改
至此,已经成功地在数据库address中添加了通信信息表list。若希望向表中添加记录,可以继续下一步操作。
(5)向表中添加数据。
刚刚建好的新表中不包含任何记录,如果需要向表中添加记录,需要在企业管理器的树状目录中选中刚刚建好的表list,然后选择菜单“操作”→“打开表”→“返回所有行”命令,打开数据输入窗口。可以在数据输入窗口输入新的表记录,同时还可以在这个窗口中对记录进行修改和删除。数据输入窗口如图2-23所示。
图2-23 “list”表记录窗口
3)修改表结构
在新建表以后可能需要修改表的结构,较为简单的方法是使用企业管理器来进行操作。
(1)修改数据表中字段的定义。
打开希望修改表结构的表设计窗口,选中某一字段,按用户的要求进行修改。
(2)插入新字段。
如果希望将新字段添加为最后一个字段,可以将光标移动到最后一个字段下面的行中,并开始编辑该字段,设置其属性。
如果要在现有的某一字段前面插入一个字段,可以在该字段所在行上单击鼠标右键,然后在弹出的菜单中选择“插入列”命令,该字段前就会插入一个空白行,在空白行中编辑新字段即可。
(3)调整字段顺序。
表设计窗口中的字段顺序是可以调整的。方法是先单击希望移动的字段左边的选择栏,然后在该栏上单击鼠标左键,将该字段向上或者向下拖动到期望的位置,松开鼠标左键即可。
(4)删除现有字段。
选中该字段并单击鼠标右键,在弹出菜单中选择“删除列”命令。
4)删除表
如果不再需要使用某个数据表,就可以将它从数据库中删除。删除数据表同样有通过SQL语句和直接使用企业管理器两种方法。
使用企业管理器能很方便地删除一个数据表,步骤如下。
(1)展开企业管理器,在树状目录中展开希望删除的数据表所在的数据库结点。
(2)选择该数据库结点下的表结点,此时在右边的内容窗口中会显示该数据库中所有的数据表。
(3)选中希望删除的表,单击鼠标右键,在弹出菜单中选择“删除”命令,此时将弹出“除去对象”对话框,单击“全部除去”按钮,即可完成数据表格的删除。
2. 查询分析器
1)使用查询分析器新建数据库
查询分析器是一个数据库编程接口,是SQL Server客户端的重要组成部分。查询分析器以自由的文本格式编辑SQL代码,对语法中的保留字提供彩色显示,方便开发人员使用。
具体操作步骤为,先启动查询分析器,依次单击“开始”→“程序”→“Microsoft SQL Server”→“查询分析器”命令。此时将弹出“连接到SQL Server”对话框,在文本框内输入“local”或默认其“.”选项,选中“如果SQL Server已停止,则启动它”复选框,选中对应的连接方式后单击“确定”按钮,如图2-24所示。
图2-24 “连接到SQL Server”对话框
启动查询分析器后,可以看到该查询分析器的窗口分为两个横向排列的窗口。其中上面的窗口用来编辑SQL语句,称为查询窗口;下面的窗口用来查看语句的执行结果,称为结果查看窗口,如图2-25所示。
图2-25 查询分析器窗口
在查询分析器窗口中输入以下语句,然后选择“查询”→“执行”命令,即可完成新建数据库的操作。
CREATE DATABASE [address] ON (NAME = N'address_Data', FILENAME = N'd:\Program Files\Microsoft SQL Server\MSSQL\data\address_Data.MDF' , SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'address_Log', FILENAME = N'd:\Program Files\Microsoft SQL Server\MSSQL\data\address_Log.LDF' , SIZE = 1, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_AS GO exec sp_dboption N'address', N'autoclose', N'true' GO exec sp_dboption N'address', N'bulkcopy', N'false' GO exec sp_dboption N'address', N'trunc. log', N'true' GO exec sp_dboption N'address', N'torn page detection', N'true' GO exec sp_dboption N'address', N'read only', N'false' GO exec sp_dboption N'address', N'dbo use', N'false' GO exec sp_dboption N'address', N'single', N'false' GO exec sp_dboption N'address', N'autoshrink', N'true' GO exec sp_dboption N'address', N'ANSI null default', N'false' GO exec sp_dboption N'address', N'recursive triggers', N'false' GO exec sp_dboption N'address', N'ANSI nulls', N'false' GO exec sp_dboption N'address', N'concat null yields null', N'false' GO exec sp_dboption N'address', N'cursor close on commit', N'false' GO exec sp_dboption N'address', N'default to local cursor', N'false' GO exec sp_dboption N'address', N'quoted identifier', N'false' GO exec sp_dboption N'address', N'ANSI warnings', N'false' GO exec sp_dboption N'address', N'auto create statistics', N'true' GO exec sp_dboption N'address', N'auto update statistics', N'true' GO if( (@@microsoftversion / power(2, 24) = 8) and (@@microsoftversion & 0xffff >= 724) ) exec sp_dboption N'address', N'db chaining', N'false' GO
2)使用查询分析器新建数据库表
首先启动查询分析器,然后在查询分析器中的SQL命令窗口中输入对应的SQL语句执行即可。新建表的SQL语句格式比较复杂,下面的代码实现了list表的生成脚本。
CREATE TABLE [list] ( [id] [int] IDENTITY (1, 1) NOT NULL , [name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL , [class] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL , [sex] [char] (4) COLLATE Chinese_PRC_CI_AS NULL , [phone] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL , [email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [address] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
至此,数据库表的管理已经全部介绍完毕,并建立起了数据库address及数据库表list。它们将在后面的章节中被使用。当然SQL Server 2000数据库工具的管理功能还远不止这些,我们只是介绍了本书中软件开发需要用到的部分功能。