十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
据库管理10个最重要的特点
创新互联是一家集网站建设,湖南企业网站建设,湖南品牌网站建设,网站定制,湖南网站建设报价,网络营销,网络优化,湖南网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
特点 描述
数据库镜像
通过新数据库镜像方法,将记录档案传送性能进行延伸。您将可以使用数据库镜像,通过将自动失效转移建立到一个待用服务器上,增强您SQL服务器系统的可用性。
在线恢复
使用SQL2005版服务器,数据库管理人员将可以在SQL服务器运行的情况下,执行恢复操作。在线恢复改进了SQL服务器的可用性,因为只有正在被恢复的数据是无法使用的,而数据库的其他部分依然在线、可供使用。
在线检索操作
在线检索选项可以在指数数据定义语言(DDL)执行期间,允许对基底表格、或集簇索引数据和任何有关的检索,进行同步修正。例如,当一个集簇索引正在重建的时候,您可以对基底数据继续进行更新、并且对数据进行查询。
快速恢复
新的、速度更快的恢复选项可以改进SQL服务器数据库的可用性。管理人员将能够在事务日志向前滚动之后,重新连接到正在恢复的数据库。
安全性能的提高
SQL Server 2005包括了一些在安全性能上的改进,例如数据库加密、设置安全默认值、增强密码政策、缜密的许可控制、以及一个增强型的安全模式。
新的SQL Server Management Studio
SQL Server 2005引入了SQL Server Management Studio,这是一个新型的统一的管理工具组。这个工具组将包括一些新的功能,以开发、配置SQL Server数据库,发现并修理其中的故障,同时这个工具组还对从前的功能进行了一些改进。
专门的管理员连接
SQL Server 2005将引进一个专门的管理员连接,即使在一个服务器被锁住,或者因为其他原因不能使用的时候,管理员可以通过这个连接,接通这个正在运行的服务器。这一功能将能让管理员,通过操作诊断功能、或Transact—SQL指令,找到并解决发现的问题。
快照隔离
我们将在数据库层面上提供一个新的快照隔离(SI)标准。通过快照隔离,使用者将能够使用与传统一致的视野观看数据库,存取最后执行的一行数据。这一功能将为服务器提供更大的可升级性。
数据分割
数据分割 将加强本地表检索分割,这使得大型表和索引可以得到高效的管理。
增强复制功能
对于分布式数据库而言,SQL Server 2005提供了全面的方案修改(DDL)复制、下一代监控性能、从甲骨文(Oracle)到SQL Server的内置复制功能、对多个超文本传输协议(http)进行合并复制,以及就合并复制的可升级性和运行,进行了重大的改良。另外,新的对等交易式复制性能,通过使用复制,改进了其对数据向外扩展的支持。
有关开发的10个最重要的特点
特点 描述
.NET 框架主机
使用SQL Server 2005,开发人员通过使用相似的语言,例如微软的Visual C# .NET和微软的Visual Basic,将能够创立数据库对象。开发人员还将能够建立两个新的对象——用户定义的类和集合。
XML 技术
在使用本地网络和互联网的情况下,在不同应用软件之间散步数据的时候,可扩展标记语言(XML)是一个重要的标准。SQL Server 2005将会自身支持存储和查询可扩展标记语言文件。
ADO.NET 2.0 版本
从对SQL类的新的支持,到多活动结果集(MARS),SQL Server 2005中的ADO.NET将推动数据集的存取和操纵,实现更大的可升级性和灵活性。
增强的安全性
SQL Server 2005中的新安全模式将用户和对象分开,提供fine-grain access存取、并允许对数据存取进行更大的控制。另外,所有系统表格将作为视图得到实施,对数据库系统对象进行了更大程度的控制。
Transact-SQL 的增强性能
SQL Server 2005为开发可升级的数据库应用软件,提供了新的语言功能。这些增强的性能包括处理错误、递归查询功能、关系运算符PIVOT, APPLY, ROW_NUMBER和其他数据列排行功能,等等。
SQL 服务中介
SQL服务中介将为大型、营业范围内的应用软件,提供一个分布式的、异步应用框架。
通告服务
通告服务使得业务可以建立丰富的通知应用软件,向任何设备,提供个人化的和及时的信息,例如股市警报、新闻订阅、包裹递送警报、航空公司票价等。在SQL Server 2005中,通告服务和其他技术更加紧密地融合在了一起,这些技术包括分析服务、SQL Server Management Studio。
Web服务
使用SQL Server 2005,开发人员将能够在数据库层开发Web服务,将SQL Server当作一个超文本传输协议(HTTP)侦听器,并且为网络服务中心应用软件提供一个新型的数据存取功能。
报表服务
利用SQL Server 2005, 报表服务可以提供报表控制,可以通过Visual Studio 2005发行。
全文搜索功能的增强
SQL SERVER 2005将支持丰富的全文应用软件。服务器的编目功能将得到增强,对编目的对象提供更大的灵活性。查询性能和可升级性将大幅得到改进,同时新的管理工具将为有关全文功能的运行,提供更深入的了解。
有关商业智能特征的10个最重要的特点
特点 描述
分析服务
SQL SERVER 2005的分析服务迈入了实时分析的领域。从对可升级性性能的增强、到与微软Office软件的深度融合,SQL SERVER 2005将帮助您,将商业智能扩展到您业务的每一个层次。
数据传输服务(DTS)
DTS数据传输服务是一套绘图工具和可编程的对象,您可以用这些工具和对象,对从截然不同来源而来的数据进行摘录、传输和加载(ETL),同时将其转送到单独或多个目的地。SQL SERVER 2005将引进一个完整的、数据传输服务的、重新设计方案,这一方案为用户提供了一个全面的摘录、传输和加载平台。
数据挖掘
我们将引进四个新的数据挖掘运算法,改进的工具和精灵,它们会使数据挖掘,对于任何规模的企业来说,都变得简单起来。
报表服务
在SQL SERVER 2005中,报表服务将为在线分析处理(OLAP)环境提供自我服务、创建最终用户特别报告、增强查询方面的开发水平,并为丰富和便于维护企业汇报环境,就允许升级方面,提供增进的性能。
集群支持
通过支持容错技术移转丛集、增强对多重执行个体的支持、以及支持备份和恢复分析服务对象和数据,分析服务改进了其可用性。
主要运行指标
主要运行指标(KPIs)为企业提供了新的功能,使其可以定义图表化的、和可定制化的商业衡量标准,以帮助公司制定和跟踪主要的业务基准。
可伸缩性和性能
并行分割处理,创建远程关系在线分析处理(ROLAP)或混合在线分析处理(HOLAP)分割,分布式分割单元,持续计算,和预制缓存等特性,极大地提升了SQL Server 2005中分析服务的可伸缩性和性能。
单击单元
当在一个数据仓库中创建一个单元时,单元向导将包括一个可以单击单元检测和建议的操作。
预制缓存
预制缓存将MOLAP等级查询运行与实时数据分析合并到一起,排除了维护在线分析处理存储的需要。显而易见,预制缓存将数据的一个更新备份进行同步操作,并对其进行维护,而这些数据是专门为高速查询而组织的、它们将最终用户从超载的相关数据库分离了出来。
与Microsoft Office System集成
在报表服务中,由报表服务器提供的报表能够在Microsoft SharePoint门户服务器和Microsoft Office System应用软件的环境中运行,Office System应用软件其中包括Microsoft Word和Microsoft Excel。您可以使用SharePoint功能,订阅报表、建立新版本的报表,以及分发报表。您还能够在Word或Excel软件中打开报表,观看超文本连接标示语言(HTML)版本的报表。
SQL 的 DDL DML这是数据库操作的基础 必须要学
不过也很简单,用不了不长时间,只要能入门就行,至于深入的那就是以后的事情了.
如果你想做程序员 那么 存储过程,触发器,你都要学否则就不用了.
总的来说,SQL SERVER上手特别快,易懂,相对比较难的地方就是存储过程和触发器了.但从使用层次和使用面来讲 还是DDL DML使用的比较广泛,尤其是DML
DDL 数据控制语言 建数据库,表等
DML 数据操纵语言 查询,删除,修改,等
其实,sqlserver和oracle的功能以及数据处理能力都差不多,只是在近几年来微软一直想打一个翻身仗,可是却没有成功,在美国的纳斯达克股市就采用的是sqlserver,sqlserver在近几年的经过更新改进,它的性能已经很好了。只是oracle已经在数据库行业做霸主很多年了。
oracle和sqlserver的结构不同。oracle里面只有一个数据库,分为不同的分区表,可以给各个用户使用,而sqlserver则是创建不同的数据库提供客户使用,所以oracle分区表和sqlserver的数据库的层次结构或者说是在数据库中所处的地位是一样的,在程序开发方面sqlserver是TL/SQL而oracle 是PL/SQL.其实就是开发语言不同,都能实现相应的功能。在两个数据库的游标使用时,sqlserver不建议使用因为开销很大,而oracle 则可以使用游标进行查询等操作。不知道我这么说你听明白了没有。
多表连接其实很简单,就是select *from 表1 join 表2 on 连接的条件(例如: 表1.字段=表2.字段)剩下的语句就是正常的查询语句了。
与SQL SERVER安全控制相关的几点说明
(一)几个基本术语
身份验证(Authentication)是指通过提交服务器评估的凭据以登录到主体请求访问的 SQL Server 的过程。身份验证可以确定接受身份验证的用户或进程的标识。
用户、账户、账号、登录名、[数据库]用户名
用户是指能够在SQL Server安全机制下,访问数据库对象中的数据的操作员或客户。用户若要访问数据库对象,必须获得数据库管理员(DBA)分配的账号和密码。从SQL Server管理系统的角度来看,用户就是一组匹配的账户和密码。
账户和账号是一个概念的不同说法,在服务器中的账户又叫登录名(Login Name),因此访问服务器也称为登录服务器。服务器的登录名可以映射到数据库中成为[数据库]用户名(User Name)。一个登录名可以映射多个数据库用户,而一个用户只能映射一个登录名。
连接或登录SQL Server服务器时是用的登录名而非用户名登录的,程序里面的连接字符串中的用户名也是指登录名。
通常用户名与登录名相同(不是强制相同,但为了一目了然通常都在创建用户名时使用与登录名相同的名字)。
提示:登录名(Login Name)和用户名(User Name)是两个不同的概念:
登录名:服务器方的一个实体,登录名只能进入SQL Server服务器,但是不能让用户访问服务器中的数据库资源。
用户名:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。
登录名作用于它所在的服务器。每个登录名的定义存放在master系统数据库的syslogins表中。
用户名作用于它所在的数据库。用户定义信息存放在每个数据库的sysusers表中。用登录名登录到SQL Server后,在访问操作各个数据库时,SQL Server会自动查询此数据库中是否存在与此登录名关联的用户名,若存在就使用此用户的权限访问此数据库,若不存在就是用guest用户访问此数据库(guest是一个特殊的用户名,后面会讲到)。
SQL身份验证:适合于非windows平台的用户或Internet用户,需要提供账户和密码。
Windows身份验证:适合于windows平台用户,利用Windows账户和windows集成验证,不需要提供密码。
用户想要操作数据库的某个对象(如某张表)需要过三关:
第一关:我们需要登录到SQL Server系统,即需要登录账户;
第二关:我们需要访问某个数据库,即需要该数据库的用户账户;
第三关:我们需要访问数据库中的某个对象(如某张表),需要有该对象的权限。
主体(principal)是可被授予对安全资源的访问权限的实体(例如登录名、用户、进程、组或角色)。主体可以是主体的集合(比如数据库角色或Windows组)或不可分割的主体(比如本地登录或域登录)。每个主体都具有一个 ID (identification)和一个安全 ID (SID)。
⊙ Windows级别的主体:Windows组、Windows域登录名、Windows本地登录名。
⊙ SQL Server级的主体:服务器角色、SQLServer登录名。
⊙数据库级的主体:数据库角色、数据库用户、应用程序角色。
上下文切换 (context switch),更改检查执行语句或执行操作的权限时所依据的标识。
服务器(server)
1)指安装了SQL SERVER的计算机。2)指SQL Server实例——计算机上运行的 SQLServer的副本。3)指为用户提供服务的计算机软件或组件。
需要根据上下文理解。
注册服务器
注册服务器使您可以存储服务器连接信息(服务器的类型、服务器的名称、登录到服务器时使用的身份验证的类型等),以供将来连接时使用——下次连接该服务器时,不需要重新输入登录信息。
SQLServer 2000在SQL Server企业管理器中注册服务器,才能使用 SQL Server企业管理器来管理这些服务器。从SQLServer 2005始,在 SQL ServerManagement Studio 中注册服务器,才能使用 SQL Server Management Studio 来管理这些服务器。
在 Microsoft SQL Server中,可以注册以下类型的服务器:SQLServer数据库引擎、Analysis Services、Reporting Services、IntegrationServices和 SQL Server Compact 3.5SP1。
(二)SQL Server实例(SQL Server instance)
SQLServer实例(SQL Server instance),简称实例 (instance),是计算机上运行的SQLServer 的副本。同一台计算机上可以安装运行的多个 SQLServer副本。每个SQL Server实例都包含数据库引擎、Analysis Services和 ReportingServices的 SQL Server,每个SQL Server数据库实例各有一套不为其他实例共享的系统及用户数据库。
数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务。
实例又分为“默认实例”(default instance)和“命名实例”(namedinstance),如果在一台计算机上安装第一个SQLSERVER,命名设置保持默认的话,那这个实例就是默认实例。默认实例与安装计算机具有相同名称。命名实例指安装SQL Server时给定了名称,可以安装多个命名实例,给定名称是为了与同一台计算机上的其他命名实例和默认实例区分开。
SQLServer应用程序可以通过仅指定服务器名称而连接到 SQLServer的默认实例。SQL Server应用程序在连接到服务器上的某个命名实例时必须既指定服务器名称又指定实例名称,计算机名称\实例名称。
一台计算机上最多只有一个默认实例,也可以没有默认实例,默认实例名与计算机名相同。如果要访问本机上的默认SQL服务器实例,使用计算机名、(local)、localhost、127.0.0.1、.、本机IP地址,都可以达到相同的目的。但如果要访问非本机的SQL服务器,那就必须使用计算机名称\实例名称。
默认实例和命名实例的区别:
1、服务中服务名称的区别:
(1)默认实例:MSSQLSERVER。
(2)有名命名实例:实列名为benet,在服务中的名称是MSSQL$BENET。
注:如果你有多个实例的时候会在服务中出现多个服务名称。
2、连接到查询分析器或探查器的时候区别:
(1)默认实例可以使用:“.”(点)、“(local)”、“计算机名称”。
(2)实例名称:计算机名pcname,实例名benet,连接时使用的名称是pcname\benet。
(三)安全对象和权限
安全对象(Securable),可以通过权限得到保护的实体。是SQLServer数据库引擎授权系统控制对其进行访问的资源。如表、视图、触发器等。
SQLServer中将安全对象分为三个层次,分别为:
⊙服务器层级,包含的安全对象:端点、登录、服务器角色、数据库。
⊙数据库层级,包含的安全对象:用户、数据库角色、应用程序角色、程序集、消息类型、路由、服务、远程服务绑定、全文目录、证书、非对称密钥、对称密钥、约定、架构。
⊙构架(SCHEMA)层级,包含的安全对象:类型、XML架构集合、对象(函数、过程、同义词、表、视图)
这三个层级是从上到下包含的,级别从高到低。
说明:端点(endpoint)为服务器级安全对象。Microsoft SQL Server 2005 中的连接管理基于“端点”。一个端点就是一个SQL Server对象,它能够使 SQL Server在网络中通信。对于数据库镜像,服务器实例需要有自己专用的“数据库镜像端点”。此端点用途特殊,专门用于接收来自其他服务器实例的数据库镜像连接。
权限 (permission),与对象关联的规则,用来规定哪些用户可以获得该对象的访问权限以及方式如何。对安全对象的访问通过授予或拒绝权限进行控制。
权限可以明确用户能够使用哪些数据库对象,并对它们进行何种操作。用户在数据库内的权限取决于用户账号的权限和该用户所属的角色的权限。
提示:在设置权限时,尤其要注意权限在安全对象上的继承关系。对于高级别安全对象上设置的权限,会被自动继承到低级别安全对象上。
理解权限的继承和权限的覆盖会在设置权限时减少很多问题,最佳方法是统筹规划,上机验证。
(四)架构(schema)
架构是指包含表、视图、过程等的容器。它位于数据库内部,而数据库位于服务器内部。这些实体就像嵌套框放置在一起。服务器是最外面的框,而架构是最里面的框。架构包含表、视图、过程、函数、同义词、类型、队列、XML架构集合等安全对象。
注意:
在 SQL Server 2000和早期版本中,数据库可以包含一个名为“架构”的实体, SQL Server 2000包含 CREATE SCHEMA语句,但此实体实际上是所有者(创建对象时的用户)。在 SQL Server 2005 开始,架构既是一个容器,又是一个命名空间。任何用户都可以拥有架构,并且架构所有权可以转移。从 SQL Server 2005开始,每个用户都拥有一个默认架构。可以使用 CREATE USER或 ALTER USER的 DEFAULT_SCHEMA选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将使用 dbo作为默认架构。
在SQL Server 2000中,DataBaseName.dbo.TableName解释为:数据库名.所有者.表名。
从 SQL Server 2005开始,DataBaseName.dbo.TableName解释为:数据库名.架构名.表名。
在SQL Server 2000中,数据库对象全称是server_name.[database_name].[owner_name].object_name
从SQL Server 2005始,数据库对象全称是server_name.[database_name].[schema_name].object_name
在SQL SERVER2000或以前版本中创建一个对象,对象必须要有一个所有者(owner)。对象是如何属于某个所有者的呢?这依赖于创建对象时的用户。您不能取消对象所有者(object owner)的特权(privileges)。对象所有者可以执行任何与对象有关的操作(例如 INSERT、UPDATE、DELETE、SELECT或 EXECUTE),也可以管理对象的权限。
从2005/2008后,一个我们必须重新认识的情况是对象不再有所有者(owner)。架构包含对象,架构有所有者。
在2005前(如SQL Server 2000中),没有架构的概念,只有用户的概念,那时候DBO是默认用户。到了2005,有了架构概念,但是为了向后兼容,保留了DBO,并且把DBO作为默认架构,在不指定架构的情况下,默认为dbo,“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2005 中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO作为其默认架构。
(五)dbo
dbo既是默认架构,也是默认用户。在SQL Server 2000中,dbo作为默认用户。在SQL Server2005中,dbo既作为默认用户,也作为默认架构(如图)。
dbo作为默认用户,dbo (DataBase Owner,数据库的所有者,拥有数据库中的所有对象),每个数据库都有dbo, sysadmin服务器角色的成员自动映射成dbo,无法删除 dbo用户,且此用户始终出现在每个数据库中。通常,登录名sa映射为库中的用户dbo。另外,固定服务器角色 sysadmin的任何成员都映射到每个数据库内称为 dbo的一个特殊用户上。由固定服务器角色sysadmin的任何成员创建的任何对象都自动属于 dbo。由固定服务器角色 sysadmin的任何成员或 dbo用户创建的任何对象都自动属于dbo,由任何其他用户(包括 db_owner固定数据库角色成员)创建的对象,属于创建该对象的用户,而不是 dbo,用创建该对象的用户名限定。例如:
如果用户 Andrew是固定服务器角色sysadmin的成员,并创建表 T1,则表 T1属于 dbo,并以 dbo.T1而不是 Andrew.T1进行限定。相反,如果 Andrew不是固定服务器角色sysadmin的成员,而只是固定数据库角色 db_owner的成员,并创建表 T1,则 T1属于 Andrew,并限定为Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为dbo.T1。
dbo作为默认架构,在不指定架构的情况下,默认为dbo,“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2005 中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER和 ALTER USER的 DEFAULT_SCHEMA选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO作为其默认架构。
(六)Guest用户
guest用户不需要映射到登录名。这种用户账号是供数据库中没有明确授予权限给已映射至认证用户使用的。guest供那些已经成功登录到SQL SERVER实例,但是却没有通过用户访问数据库的权限的登录者使用的。
SQLSERVER 2000中guest用户可以删除;而2005/2008中是不能删除的,却可以取消CONNECT权限,而且为安全起见,所有用户定义的数据库中缺省情况下guest用户的权限都是被取消了的,可在除master和tempdb之外的任何数据库中禁用Guest用户。
在SQL SERVER 2000中,新建的数据库中没有Guest用户,但可以添加它,也可删除它,添加与删除方法与普通数据库相同。
在SQL Server 2005或以上版本中GUEST已经默认存在于每个数据库中,但默认情况下,会在新数据库中禁用GUEST用户(在“对象资源管理器→安全性→登录”节点中图标上有禁用标识),我们可以通过以下语句启用GUEST用户:GRANT CONNECT TO GUEST 。当你决定不再想让该数据库被非数据库授权的用户以GUEST身份进行访问时,可以再次将GUEST帐号禁用。值得一提的是,GUEST用户在数据库中不能被删除,我们只能通过以下语句禁用GUEST用户:REVOKE CONNECT FROMGUEST 。
在SQL SERVER 2000中,要允许guest用户帐户访问数据库,可以像添加其它数据库用户那样添加它,如:
USEDatabase Name
GO
EXECsp_grantdbaccess 'guest'
GO
在SQL SERVER 2005中,允许guest用户帐户
USEDatabase Name
GO
GRANT CONNECT TO GUEST
GO
需要提醒的是,对于是否添加Guest用户要谨慎权衡利弊。
--SQLServer 2000删除guest用户账号
USEDatabase Name
GO
EXECsp_revokedbaccess 'guest'
GO
-- SQLServer 2005禁用guest用户账号
USEDatabase Name
GO
REVOKECONNECT FROM GUEST
GO
(七)sa登录名
SQLServer的 sa登录名是服务器级的主体。默认情况下,该登录名是在安装实例时创建的。在 SQL Server 2005和 SQL Server2008中,sa的默认数据库为 master。这是对早期版本的 SQLServer的行为的更改。
sa(system administrator系统管理员)是为向后兼容而提供的特殊登录。sysadmin是一种角色。该角色能够执行SQLServer上的任何操作。本质上,任何具有这种角色成员身份的人都是那个服务器上的sa。这种服务器角色的创建为微软提供了某一天去除sa登录的能力——实际上,联机丛书把sa称作本质上为遗留物的东西。
与以前版本不同,SQL Server 2008,即使是用混合模式安装,sa也默认禁用。
注意,sa是一个默认的SQL Server登录名,拥有操作SQL Server系统的所有权限,该登录名不能被删除。当采用混合模式安装Microsoft SQL Server系统之后,应该为sa指定一个密码,应为 sa登录分配一个强密码(strongpassword)。
sa登录名会映射到 sysadmin固定服务器角色,它对整个服务器有不能撤销的管理凭据。如果攻击者以系统管理员的身份获取了访问权限,则可能造成的危害是无法预计的。
(八)其它几个默认配置的的登录(Logins)和用户(Users)
默认配置的的登录和用户除了dbo用户、Guest用户、sa登录,还有如下几个:
Administrators组是一个特殊的登录。administrator用户默认administrators组的成员。
Administrators组实际名称为BUILTIN\Administrators。早期版本,这个组的所有成员均为 sysadmin 角色的成员(这意味着Administrators组中的成员具有最高权限),但可以从该角色中移除这些成员。与以前版本不同,SQL Server 2008默认情况下,本地 Windows组 BUILTIN\Administrators不再包含在新的 SQL Server 2008安装上的 SQL Server的 sysadmin固定服务器角色中。
提示:每个版本的 SQL Server都具有不同的安全功能,默认配置也不尽相同,后出的版本更有利于安全,但安全性和使用方便这两种需求可能有矛盾的一面,最佳方法是上机了解验证。
NETWORKSERVICE和SYSTEM登录账户
NETWORKSERVICE和SYSTEM登录账户,实际名称为NT AUTHORITY\NETWORK SERVICE和NT AUTHORITY\SYSTEM,是否存在这些,依赖于服务器的配置。如果配置了报表服务器,将出现NETWORK SERVICE登录账户。
INFORMATION_SCHEMA和sys用户
INFORMATION_SCHEMA和sys又是SQL Server 预定义的架构(内置架构)名称,它们与INFORMATION_SCHEMA和sys用户具有相同的名称。不能删除,主要用于向后兼容性。可以使用INFORMATION_SCHEMA用户和sys用户访问INFORMATION_SCHEMA和sys架构的系统视图,获取有关数据库元数据信息。
(九)SQL Server中的角色
角色 (role),是SQL Server用来管理服务器和数据库权限的,是安全帐户的集合,在管理权限时可以视为一个单元——作为分配权限的单位。
SQLServer中的角色分为服务器级别和数据库级别角色。
◇服务器级别角色
服务器级别角色用于帮助管理服务器上的权限。服务器角色的权限作用域为服务器范围。可以将登录名(Login Name)添加到服务器角色。
符合权限要求的用户,可以将服务器级主体(SQL Server登录名、Windows帐户和 Windows组)添加到服务器级角色。固定服务器角色的每个成员都可以将其他登录名添加到该同一角色。
固定服务器角色简介:
1)sysadmin:系统管理员,角色成员可对SQLServer服务器进行所有的管理工作,为最高管理角色。这个角色一般适合于数据库管理员(DBA)。
2)securityadmin:安全管理员,角色成员可以管理登录名及其属性。可以授予、拒绝、撤销服务器级和数据库级的权限。另外还可以重置SQL Server登录名的密码。
3)serveradmin:服务器管理员,角色成员具有对服务器进行设置及关闭服务器的权限。
4)setupadmin:设置管理员,角色成员可以添加和删除链接服务器,并执行某些系统存储过程。
5)processadmin:进程管理员,角色成员可以终止SQLServer实例中运行的进程。
6)diskadmin:用于管理磁盘文件。
7)dbcreator:数据库创建者,角色成员可以创建、更改、删除或还原任何数据库。
8)bulkadmin:可执行BULK INSERT语句,但是这些成员对要插入数据的表必须有INSERT权限。BULK INSERT语句的功能是以用户指定的格式复制一个数据文件至数据库表或视图。
9)在sql server 2005 sp2(补丁)及以后版本,服务器角色中还可以看到一个public角色。每个 SQL Server登录名均属于 public服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public角色的权限。public服务器角色默认拥有 VIEW ANY DATABASE(查看任何数据库)权限。[VIEW ANY DATABASE权限控制是否显示sys.databases和 sys.sysdatabases视图以及 sp_helpdb系统存储过程中的元数据(metadata)。]
从 SQL Server 2012开始,您可以创建用户定义的服务器角色,并将服务器级权限添加到用户定义的服务器角色。
每个版本的 SQL Server都具有不同的安全功能,版本越高,功能越强。
可以利用系统函数IS_SRVROLEMEMBER指示当前用户的 SQLServer登录名是否是固定服务器角色的成员。
可以利用系统存储过程sp_helpsrvrolemember返回有关 SQL Server 固定服务器角色成员的信息。
--查询 sysadmin固定服务器角色的成员。
execsp_helpsrvrolemember 'sysadmin'
◇数据库级别的角色
数据库级别角色用于帮助管理数据库中的权限。数据库级角色的权限作用域为数据库范围。可以将[数据库]用户名(User Name)添加到数据库角色。
SQLServer中有两种类型的数据库级角色:数据库中预定义的“固定数据库角色”和您可以创建的“灵活数据库角色”(自定义数据库角色)。
固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。 db_owner和db_securityadmin数据库角色的成员可以管理固定数据库角色成员身份。但是,只有db_owner数据库角色的成员能够向db_owner固定数据库角色中添加成员。 msdb数据库中还有一些特殊用途的固定数据库角色。
符合权限要求的用户,可以向数据库级角色中添加数据库帐户和其他 SQL Server角色。固定数据库角色的每个成员都可向同一个角色添加其他登录名。
固定数据库角色简介:
1)db_owner:数据库所有者,这个数据库角色的成员可执行数据库的所有管理操作。
2)db_accessadmin:数据库访问权限管理者,角色成员具有添加、删除数据库使用者、数据库角色和组的权限。
3)db_securityadmin:数据库安全管理员,角色成员可管理数据库中的权限,如设置数据库表的增加、删除、修改和查询等存取权限。
4)db_ddladmin:数据库DDL管理员,角色成员可增加、修改或删除数据库中的对象。
5)db_backupoperator:数据库备份操作员,角色成员具有执行数据库备份的权限。
6)db_datareader:数据库数据读取者,角色成员可以从所有用户表中读取数据。
7)db_datawriter:数据库数据写入者,角色成员具有对所有用户表进行增加、删除、修改的权限。
8)db_denydatareader:数据库拒绝数据读取者,角色成员不能读取数据库中任何表的内容。
9)db_denydatawriter:数据库拒绝数据写入者,角色成员不能对任何表进行增加、删修、修改操作。
10)public:是一个特殊的数据库角色,每个数据库用户都是public角色的成员,因此不能将用户、组或角色指派为public角色的成员,也不能删除public角色的成员。public数据库角色默认的权限很少[使用某些系统过程查看并显示master数据库中的信息;执行一些不需要一些权限的语句(例如PRINT)]。
可以利用系统函数IS_MEMBER检查当前用户是否是数据库角色或Windows域组的成员。
可以利用系统存储过程sp_helprolemember显示数据库角色的成员。
可以利用系统存储过程sp_helpuser报告有关当前数据库中数据库级主体的信息。
可以利用系统存储过程sp_helprotect报告当前数据库中某对象的用户权限或语句权限的信息。
--查询用户拥有的数据库角色
useyourdb
execsp_helpuser 'UserName'
go
--查询用户被赋予的权限
useyourdb
execsp_helprotect @username = 'user name'