《最新SQL-Server-面试题.doc》由会员分享,可在线阅读,更多相关《最新SQL-Server-面试题.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateSQL-Server-面试题SQL-Server-面试题SQL Server 面试题 维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么?答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方
2、式效率最低、编程最复杂,当为下下之策。什么是事务?什么是锁?答:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。锁是在多用户环境中对数据的访问的限制。SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。什么是索引,有什么优点?答:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位
3、置,合理划分索引能够大大提高数据库性能。视图是什么?游标是什么?答:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作,视图通常是一个或多个表的行或列的子集,视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改。什么是存储过程?有什么优点?答:存储过程是一组予编译的SQL语句,它的优点有1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中
4、就可以调用该过程任意次。2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。什么是触发器?答:出发器是一种特殊类型的存储过程,出发器主要通过事件触发而被执行的,触发器的优点:1.强化约束,触发器能够提供比CHECK约束。2.跟踪变化,触发器可以跟踪数据库内的操作,从而不允许未经允许许可的更新和变化。3.联级运算,比如某个表上的触发器中包含对另一个表的数据操作,而该操作又导致
5、该表上的触发器被触发。介绍一下sql server的安全性?1、 两种登陆方式:a) 标准登陆方式(sqlserver和windows),采用sqlserver提供的用户名和密码登陆连接,可用 sp_denylogin builtinadministrators拒绝操作系统管理员登陆连接(sp_grantlogin builtinadministrators反转),也称非信任登陆机制;这种认证方式是两种方式中最安全的。b) 集成登陆方式(仅windows),将windows的用户和工作组映射为sqlserver的登陆方式,也称信任机制。2、 一个特殊帐户:sa,为系统默认帐户,不能删除,拥有最
6、高的管理权限,可以执行sqlserver服务器范围内的所有操作,所以一定要给sa加上密码,密码推荐不少于6位,最后是字母、数字和特殊符号的组合。3、 两个特殊数据库用户:a) dbo,数据库的拥有者,在安装sqlserver时,被设置到model数据库中,不能被删除,所以dbo在每个数据库中都存在。dbo是数据库的最高权力者,对应于创建该数据库的登陆用户,即所有的数据库的dbo都对应于sa帐户;b) guest,这个用户可以使任何已经登陆到sqlserver服务器的用户都可以访问数据库,即使它还没有成为本数据库的用户。所有的系统数据库除model以外都有 guest用户。所有新建的数据库都没有
7、这个用户,如果油必要添加guest用户,请用sp_grantdbaccess来明确建立这个用户。4、 还原数据库的时候之所以要删除本数据库的用户如user,然后在安全性登陆里重新建这个用户和指定相应的访问权限,是因为这个用户在master里不存在。当然你也可以用sp_addlogin user,resu来新建user用户,sp_change_users_login update_one,user,user来指定在master中的对应。5、 具有system administrators服务器角色的成员拥有与sa一样的权限,具有db_owner数据库角色的用户具有对本数据库的完全操作权限。如果在
8、创建 login的时候,选择了system administrators角色,那么该用户创建的对象都属于dbo用户。介绍一下SQL Server的全文索引?全文索引可以对存储在SQL Server数据库中的文本数据执行快速检索功能。同LIKE谓词不同,全文索引只对字符模式进行操作,对字和语句执行搜索功能。全文索引对于查询非结构化数据非常有效。一般情况下,可以对char、varchar和nvarchar数据类型的列创建全文索引,同时,还可以对二进制格式的列创建索引,如image和varbinary数据类型列。对于这些二进制数据,无法使用LIKE谓词。为了对表创建全文索引,表必须包含单个、唯一、非
9、空列。当执行全文检索的时候,SQL Server搜索引擎返回匹配搜索条件的行的键值。一般情况,使用sql server中的全文索引,经过大体4个步骤:1、安装全文索引服务;2、 为数据表建立全文索引目录;3、 使全文索引与数据表内容同步;4、 使用全文索引进行查询。SQL Server里面什么样的视图才能创建索引?在为视图创建索引前,视图本身必须满足以下条件:1、 视图以及视图中引用的所有表都必须在同一数据库中,并具有同一个所有者。2、 索引视图无需包含要供优化器使用的查询中引用的所有表。3、 必须先为视图创建唯一群集索引,然后才可以创建其它索引。4、 创建基表、视图和索引以及修改基表和视图中
10、的数据时,必须正确设置某些 SET 选项(在本文档的后文中讨论)。另外,如果这些 SET 选项正确,查询优化器将不考虑索引视图。5、 视图必须使用架构绑定创建,视图中引用的任何用户定义的函数必须使用 SCHEMABINDING 选项创建。另外,还要求有一定的磁盘空间来存放由索引视图定义的数据。介绍一下SQL Server里面的索引视图?复杂报表的场景经常会在数据仓储应用程序中遇到,它在查询过程中会对数据库服务器产生大量请求。当这些查询访问视图时,因为数据库将建立视图结果集所需的逻辑合并到从基本表数据建立完整查询结果集所需的逻辑中,所以性能将会下降。这一操作的开销可能会比较大,尤其当视图涉及到复
11、杂的大量行处理如大量数据聚合或多表联结时。因为结果集并不永久存放在数据库(标准视图)中,以后对该视图的访问可能导致在每次执行查询时建立结果集的代价。SQL Server允许为视图创建独特的聚集索引,从而让访问此类视图的查询的性能得到极大地改善。在创建了这样一个索引后,视图将被执行,结果集将被存放在数据库中,存放的方式与带有聚集索引的表的存放方式相同。这就在数据库中有效地实现了查询结果。对于那些在FROM子句中不直接指定视图名的查询,SQL Server查询优化器将使用视图索引。现有查询将受益于从索引视图检索数据而无需重新编写程序原码的高效率。对于某些特定类型的视图,甚至可以获得指数级的性能改善
12、。如果在视图上创建索引,那么视图中的数据会被立即存储在数据库中,对索引视图进行修改,那么这些修改会立即反映到基础表中。同理,对基础表所进行的数据修改也会反映到索引视图那里。索引的惟一性大大提高了SQL Server 查找那些被修改的数据行。维护索引视图比维护基础表的索引更为复杂。所以,如果认为值得以因数据修改而增加系统负担为代价来提高数据检索的速度,那么应该在视图上创建索引。SQL Server提供的3种恢复模型都是什么? 有什么区别?SQL Server提供了3种恢复模型,分别是:1、 简单恢复,允许将数据库恢复到最新的备份。2、 完全恢复,允许将数据库恢复到故障点状态。3、 大容量日志记录
13、恢复,允许大容量日志记录操作。这些模型中的每个都是针对不同的性能、磁盘和磁带空间以及保护数据丢失的需要。例如,当选择恢复模型时,必须考虑下列业务要求之间的权衡:1、 大规模操作的性能(如创建索引或大容量装载)。2、 数据丢失表现(如已提交的事务丢失)。3、 事务日志空间损耗4、 备份和恢复过程的简化。根据正在执行的操作,可以有多个适合的模型。选择了恢复模型后,设计所需的备份和恢复过程。下表提供了三种恢复模型的优点和含义的概述。备份模型之间的比较恢复模型优点工作损失表现能否恢复到即时点?简单允许高性能大容量复制操作。 收回日志空间以使空间要求最小。必须重做自最新的数据库或差异备份后所发生的更改。可以恢复到任何备份的结尾处。随后必须重做更改。完全数据文件丢失或损坏不会导致工作损失。 可以恢复到任意即时点(例如,应用程序或用户错误之前)。正常情况下没有。 如果日志损坏,则必须重做自最新的日志备份后所发生的更改。可以恢复到任何即时点。大容量日志记录的允许高性能大容量复制操作。大容量操作使用最少的日志空间。如果日志损坏,或者自最新的日志备份后发生了大容量操作,则必须重做自上次备份后所做的更改。否则不丢失任何工作。可以恢复到任何备份的结尾处。随后必须重做更改。-