热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第1章SQLServer基本操作

1.1.本书的实验环境本书的示例与Windows和SQLServer环境有关,具体的环境如下:Windows环境:Windows7旗舰版32位主机名:GUO-P

1.1. 本书的实验环境
本书的示例与Windows和SQL Server环境有关,具体的环境如下:
Windows环境:
Windows 7 旗舰版 32位
主机名:GUO-PC
用户:guo,属于Administrators组
SQL Server环境:
SQL Server 2012 Express(SQL Server 11.0.2100)
1.2. SQL Server组成
SQL Server提供包括数据库引擎、Analysis Services、Reporting Services、Integration Services和Master Data Serivce服务等,这些服务由表 1 1中的服务器组件提供。其中,数据库引擎是SQL Server的数据库服务器,Analysis Services是OLAP分析服务器,Reporting Services是报表服务器,Integration Services是数据集成服务器。本书的内容只涉及数据库引擎服务器,它可以完成数据库的管理、安全管理(用户与权限)、数据库基本对象(表、索引、视图)和T-SQL对象的管理等。
表 1 1 SQL Server主要服务器组件
服务器组件 说明
SQL Server 数据库引擎 SQL Server 数据库引擎包括数据库引擎(用于存储、处理和保护数据的核心服务)、复制、全文搜索、用于管理关系数据和 XML 数据的工具以及 Data Quality Services (DQS) 服务器。
Analysis Services Analysis Services 包括用于创建和管理联机分析处理 (OLAP) 以及数据挖掘应用程序的工具。
Reporting Services Reporting Services 包括用于创建、管理和部署表格报表、矩阵报表、图形报表以及自由格式报表的服务器和客户端组件。
Reporting Services 还是一个可用于开发报表应用程序的可扩展平台。
Integration Services Integration Services 是一组图形工具和可编程对象,用于移动、复制和转换数据。
它还包括 Integration Services 的 Data Quality Services (DQS) 组件。
Master Data Services Master Data Services (MDS) 是针对主数据管理的 SQL Server 解决方案。
可以配置 MDS 来管理任何领域(产品、客户、帐户);MDS 中可包括层次结构、各种级别的安全性、事务、数据版本控制和业务规则,以及可用于管理数据的 用于 Excel 的外接程序。

表 1 2 SQL Server 主要管理工具
管理工具 说明
SQL Server Management Studio SQL Server Management Studio 是用于访问、配置、管理和开发 SQL Server 组件的集成环境。
Management Studio 使各种技术水平的开发人员和管理员都能使用 SQL Server。
Management Studio 的安装需要 Internet Explorer 6 SP1 或更高版本。
SQL Server 配置管理器 SQL Server 配置管理器为 SQL Server 服务、服务器协议、客户端协议和客户端别名提供基本配置管理。
SQL Server 事件探查器 SQL Server 事件探查器 提供了一个图形用户界面,用于监视数据库引擎实例或 Analysis Services 实例。
数据库引擎优化顾问 数据库引擎优化顾问可以协助创建索引、索引视图和分区的最佳组合。
数据质量客户端 提供了一个非常简单和直观的图形用户界面,用于连接到 DQS 数据库并执行数据清理操作。
它还允许您集中监视在数据清理操作过程中执行的各项活动。
数据质量客户端的安装需要 Internet Explorer 6 SP1 或更高版本。
SQL Server 数据工具 SQL Server 数据工具 (SSDT) 提供 IDE 以便为以下商业智能组件生成解决方案:Analysis Services、Reporting Services 和 Integration Services。
(以前称作 Business Intelligence Development Studio)。
SSDT 还包含“数据库项目”,为数据库开发人员提供集成环境,以便在 Visual Studio 内为任何 SQL Server 平台(无论是内部还是外部)执行其所有数据库设计工作。
数据库开发人员可以使用 Visual Studio 中功能增强的服务器资源管理器,轻松创建或编辑数据库对象和数据或执行查询。
SQL Server 数据工具安装需要 Internet Explorer 6 SP1 或更高版本。
连接组件 安装用于客户端和服务器之间通信的组件,以及用于 DB-Library、ODBC 和 OLE DB 的网络库。

1.3. SQL Server安装
下载SQL Server Express 2012
SQL Server 2012 包括Enterprise、Business Intelligence、Standard三个主要版本,另外,微软还提供Web(Professional)、Developer和Express版本。SQL Server Express 2012是微软提供的一个免费版本。其下载的页面上提供了多种下载选项,其中,下载文件SQEXPRWT_x86_CHS.exe包括数据库引擎和工具SQL Server Management Studio Express。
注解:如果安装的不是Express版本,则需要选择安装的组件。本书的内容中需要安装数据库引擎服务器组件和客户端工具组件。因为有些组件需要额外的安装条件,这会明显降低安装的速度,也可能导致安装失败。
SQL Server Express 2012下载页面:
http://www.microsoft.com/zh-cn/download/details.aspx?id=29062
SQL Server Express 2012 SQLEXPRWT_x86_CHS.exe下载地址:
http://download.microsoft.com/download/3/6/E/36E9CA26-CC2C-4600-8D25-A152F9498FA1/CHS/x86/SQLEXPRWT_x86_CHS.exe)
安装示例数据库AdventureWorks
后面内容中所提供的示例均使用SQL Server示例数据库AdventureWorks。SQL Server 2012的示例数据库AdventureWorks需要单独安装,其安装文件AdventureWorks2012_Data.mdf是AdventureWorks2012数据库的数据文件,其下载地址:
http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=msftdbprodsamples&DownloadId=165399&FileTime=129762331847030000&Build=20717
可以使用下面两种方法之一安装示例数据库AdventureWorks。(若win10提示没有权限,需要以管理员权限运行SQL Server Management Studio)
方法一:
(1) 在SQL Server Management Studio中从数据库的弹出菜单中选择“附加”数据库。
(2) 在附加数据库对话框中添加数据库,选择文件AdventureWorks2012_Data.mdf,注意要删除自动添加的日志文件,即完成AdventureWorks2012的安装。
(3) 重命名AdventureWorks2012为AdventureWorks

方法二:
(1) 在SQL Server Management Studio的查询分析器中执行下面的命令:
exec sp_attach_db @dbname=N’AdventureWorks2012’,
@filename1=N’D:\SQL Server 2000 Sample Databases\AdventureWorks2012_Data.mdf’
GO
USE master
GO
ALTER DATABASE AdventureWorks2012 MODIFY name=AdventureWorks
GO

1.4. SQL Server 数据库引擎实例
数据库引擎的实例(简称“实例”或“数据库实例”,你也可以把它称做“SQL Server实例”)是作为操作系统服务运行的 sqlservr.exe 进程。每个实例管理多个系统数据库(master、model、msdv和tempdb)以及零个或多个用户数据库(例如SQL Server示例数据库AdventureWorks)。
每台计算机可以运行数据库引擎的多个实例。如果是第一次安装SQL Server,可以安装一个默认实例,一台计算机上只能安装一个默认实例。默认实例没有名称,连接默认认实例只需要提供计算机名,而连接有名实例则需要提供计算机名和实例名,如GUO-PC\SQLEXPRESS,其中,GUO-PC是运行实例的计算机名,SQLEXPRESS是实例名。
应用程序必须连接到某一个实例,只有通过实例才能访问SQL Server数据库。
数据库实例与其它的计算机进程没有本质上的区别,都是可执行程序的运行副本,所不同的是访问的数据不同。例如,运行Word的可执行程序文件WINWORD.EXE便会产生一个该程序的WINWORD.EXE进程,它可以称为Word实例,重复运行就会产生多个Word实例,每个Word文档都必须通过一个Word实例才能够访问。Word文档就相当于Word数据库。
注解:严格意义上讲,不通过Word实例也可以访问Word文档。但从安全性的角度考虑,数据库软件厂商不会公开其数据库的内部结构(除了像Aceess个人数据库外),也不会提供访问数据库的其它方式,只能通过实例访问数据库。
实例处理所有应用程序请求的数据库服务操作。在完成某一连接后,应用程序通过该连接将 Transact-SQL 语句发送给该实例。该实例将这些 Transact-SQL 语句解析为针对数据库中的数据和对象的操作并将操作的结果或错误消息返回给应用程序。
注解:与SQL Server不同,Oracle的实例定义为由后台进程和系统全局区SGA(用于访问数据库的内存)两部分组成,Oracle实例并不负责解析SQL语句,也不负责管理连接和传送数据,这些任务由Oracle服务器进程完成。
1.5. SQL Server服务
SQL Server服务是SQL Server引擎的Windows 进程。在操作数据库前,必须要保证该服务是处于运行状态。可能通过SQL Server配置管理器(在SQL Server配置管理菜单项中)来启动、关闭及配置这个服务。(如图 1 1所示)
图 1 1 SQL Server配置管理器
也可以通过Windows的服务管理器来启动和关闭该服务(图 1 2)。

图 1 2 Windows服务管理器中的SQL Server服务

1.6. SQL Server Management Studio工具
1.6.1. 连接SQL Server数据库引擎
运行SQL Server Management Studio(简称SSMS)。第一个出现的界面是连接SQL Server服务器的对话框,如图 1 3。
在图 1 3中,在服务器类型中选择“数据库引擎”(注:如果只安装了数据库引擎组件,则服务器类型列表框不能选择,它自动选择“数据库引擎”)。
服务器名称“GUO-PC\SQLEXPRESS”中的GUO-PC是所连接的服务器的主机名,而SQLEXPRESS则是数据库实例名。如果连接默认实例,则只有主机名。
身份验证列表框列出了“Windows身份验证”和“SQL Server身份验证”两种方式。身份验证在后面有专门的实验进行练习,因此在这里选择“Windows 身份验证”。
当成功连接到SQL 数据库服务器后,则进入SSMS的基本操作界面,如图 1 2所示。
检查SQL Server服务器的基本信息
对象资源管理器(图 1 4)的根节点是一个连接的数据库引擎节点,显示了SQL Server数据库引擎的基本信息GUO-PC\SQLEXPRESS(SQL Server 11.0.2100-guo-PC/guo),包括运行数据库引擎服务器的主机名GUO-PC、数据库实例名SQLEXPRESS(如果是默认实例则没有实例名)、SQL Server数据库引擎的版本11.0.2100、连接数据库引擎的登录名GUO-PC\guo。
上面的示例是数据库引擎在本地主机运行,所以,服务器名称和登录名中的主机都是GUO-PC。如果使用GUO-PC上的用户连接的服务器运行的主机名是Server1、实例名为EEXPRESS,则显示的信息应为:Server1\SQLEXPRESS(SQL Server 11.0.2100-guo-PC/guo)。
浏览对象资源管理器工具栏
其中,SSMS左边的窗口是对象资源管理器,右边的窗口是摘要窗口。在对象资源管理器窗口的工具栏中有五个按钮,分别是连接、断开连接、停止、刷新和筛选。如果需要使用新的用户建立与数据库服务器的连接,则可以使用工具栏的“连接”按钮并选择“数据库引擎”,这样就会出现与图 1 3完全相同的界面。
使用查询编辑器
可以使用SSMS的“新建查询”或者“数据库引擎查询”打开一个查询编辑器(如图 1 4所示)。查询编辑器中可以执行T-SQL语句,它还可以将其中的T-SQL语句保存到相应的文件中。需要注意的是,查询编辑器标题栏中的连接信息,它决定了执行T-SQL语句的环境与权限,图 1 4中的guo-PC\guo表示使用登录guo-PC\guo连接了数据库引擎。

图 1 6 SSMS查询编辑器
检查数据库
展开SQL Server服务器下面的节点“数据库”后会显示该数据库服务器上所有的数据库。其中,有系统数据库和示例数据库“AdventureWorks”。进一步展开“系统数据库”节点后会显示所有的系统数据库,这些数据库的具体信息会在后续的内容中进一步学习。
可以选择其中的一个数据库节点如master,展开后显示该数据库的更详细的信息,如图 1 5。
检查数据库服务器的安全性
展开对象资源管理器的“安全性”节点,可以查看数据库服务器的安全性,包括登录名、服务器角色和凭据。
注意登录名中的“guo-PC\guo”,它的存在使得以Windows的用户guo登录到Windows后可以通过Windows身份验证模式直接连接到数据库服务器。具体的机制在后面的内容中会作进一步的解释。
1.7. 设置SQL Server身份验证模式
SQL Server提供了两种身份验证模式,一是Windows身份验证模式,二是SQL Server和Windows身份验证模式(简称混合验证模式)。混合验证模式可以使用Windows身份验证模式,也可以使用SQL Server身份验证模式。Windows身份验证模式是假设登录到Windows的用户是安全的,在连接到SQL Server时不需要提供用户密码。SQL Server身份验证模式在连接数据库服务器时必须提供SQL Server的登录名和相应的密码。两种身份验证模式都使用登录连接数据库服务器。
两种验证模式中,Windows身份验证模式更为常用。特别是通过应用程序访问数据库时,由于不需要在应用程序中硬编码登录密码,所以提高了数据库服务器的安全性。而有些应用,比如用户通过Internet直接访问数据库时,由于用户本身无法登录到数据库服务器或其所在的域,因而就必需使用SQL Server身份验证模式。另外,有一些应用程序本身只支持SQL Server身份验证,例如ERwin Data Modeler 4.0。所以本实验的目的是通过操作掌握数据库服务器的身份验证模式的设置,以根据不同的应用设置不同的验证模式。
图 1 8 修改SQL Server的验证模式
修改SQL Server身份验证的操作很简单,选择SSMS中对象资源管理器的SQL Server服务器节点,通过弹出菜单的“属性”项进入到修改属性对话框。选择对话框左侧列表中的“安全性”,右侧的窗口中出现服务器安全属性窗口。在图 1 8中选择SQL Server和Windows身份验证模式。当前是Windows身份验证模式,它是安装时设定的,安装时也可以设定为混合验证模式。

1.8. 登录管理
为了测试SQL Server登录的管理,首先需要新创建一个Windows用户。下面的实验中新创建的Windows用户的名称为david。
为了测试如何操作才能使一个Windows的用户以Windows的身份验证模式登录到SQL Server,我们在实验的过程中分成多个步骤,这样的步骤被分成创建Windows用户、在SQL Server中创建相应的登录和给SQL Server的登录分配相应的权限三个步骤。每个步骤完成后进行测试以检查不正确的配置会发生什么样的问题,这样以加深对整个配置过程的理解。
具体的操作步骤如下:
(1) 使用管理员用户guo创建Windows用户david。
(2) 使用新的用户david登录Windows并连接SQL Server。如果成功则进行第5步,否则,进行第3步。
(3) 使用用户guo为david用户创建SQL Server登录GUO-PC\david。
(4) 第二次使用新的用户david登录Windows并连接SQL Server。
(5) 使用管理员用户guo连接数据库并设置SQL Server登录GUO-PC\david的默认数据库和权限。
1.8.1. 第一次连接SQL Server
使用新创建的Windows用户重新登录Windows,注意检查SSMS连接对话框中的连接信息是否是如图 1 9所示内容,特别是用户名是否是本地主机的新用户david。然后使用SSMS连接SQL Server,连接成功。

注解:在有些环境下,可能连接失败。Windows用户使用Windows身份验证连接数据库服务器必须在数据库服务器中有对应的登录。对应的登录有两种:一是为Windows用户创建的登录,例如,Windows主机GUO-PC上的用户david创建的数据库登录名为GUO-PC\david,david用户使用该登录连接数据库服务器;二是为Windows用户组创建的登录,例如,在数据库服务器中有一个名为BUILTIN\Users的登录,它是一个内置的登录,与所有属于Users组的Windows用户对应,每个属于Windows用户组Users的用户都使用该登录连接数据库(在没有对应用户登录的情况下)。如果在数据库服务器中没有对应的登录,则连接失败。
1.8.2. 创建SQL Server登录
新建登录需要使用具有相应权限的Windows用户重新登录Windows并连接SQL Server。在SQL Server对象资源管理器中选择“安全性”,点击右键并选择“新建登录名…”进入到SQL Server新建登录对话框(如图 1 10所示)。在“登录名”文本框中输入所要创建的登录名GUO-PC\david,其中,GUO-PC表示主机名,david表示主机GUO-PC上的Windows用户名。
注解:可以使用图 1 7中右边窗口中的“脚本”将要执行的操作转换为T-SQL语句并显示在一个查询编辑器窗口中,或者保存到一个文件中。
完成新建登录后,可以通过SSMS查看新建的登录是否确实存在。展开SSMS的“对象资源管理器”的“安全性”节点,检查前面操作所创建的SQL Server登录GUO-PC\david是否存在。
1.9. 修改sa登录的口令及状态
sa登录是SQL Server的一个特殊登录,使用它连接数据库服务器后可以完成对服务器所有的管理操作,因此,需要对sa登录进行重点保护。
sa登录的口令在安装过程中可以设定,但如果在安装时选择的是Windows身份验证模式则无法设定它的密码,且该登录的状态也被设定为“禁用”。
修改sa登录的密码与状态与修改其它SQL Server登录的密码与状态具有相同的操作过程。从SSMS的“安全性”节点选择相应的登录(这里为sa),进入到登录属性修改对话框。
图 1 11 sa登录属性
输入新的密码,然后选择左边列表中的“状态”,进入到状态属性修改页面,如图 1 10所示。注意,sa初始的状态为“禁用”,把登录状态修改为“启用”并点击确定。
图 1 12 sa登录的状态
1.10. 使用SQL Server验证模式连接数据库服务器
在完成对数据库服务器的登录验证模式的修改后,可以使用Windows身份验证也可以使用SQL Server身份验证模式登录数据库服务器。在SQL Server登录sa属性的修改后,现在可以使用SQL Server登录连接数据库服务器了。
使用SSMS断开与服务器的连接,重新连接时使用SQL Server登录模式并使用sa用户登录连接数据库服务器,如图 1 14所示。连接后注意SSMS中显示的信息的变化。
1.11. 小结
通过本实验完成了对SSMS的初步认识,SSMS其它的功能操作分别在以后的各实验进行完成。如果需要系统的了解SSMS的功能,可以参考SQL Server的联机文档。


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • VSCode快速查看函数定义和代码追踪方法详解
    本文详细介绍了在VSCode中快速查看函数定义和代码追踪的方法,包括跳转到定义位置的三种方式和返回跳转前的位置的快捷键。同时,还介绍了代码追踪插件的使用以及对符号跳转的不足之处。文章指出,直接跳转到定义和实现的位置对于程序员来说非常重要,但需要语言本身的支持。以TypeScript为例,按下F12即可跳转到函数的定义处。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
author-avatar
盎然茗嘉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有