㈠ sql语句应考虑哪些安全性
数据库安全性问题应包括两个部分:一、数据库数据的安全它应能确保当数据库系统DownTime时,当数据库数据存储媒体被破坏时以及当数据库用户误操作时,数据库数据信息不至于丢失。二、数据库系统不被非法用户侵入它应尽可能地堵住潜在的各种漏洞,防止非法用户利用它们侵入数据库系统。对于数据库数据的安全问题,数据库管理员可以参考有关系统双机热备份功能以及数据库的备份和恢复的资料。以下就数据库系统不被非法用户侵入这个问题作进一步的阐述。组和安全性:在操作系统下建立用户组也是保证数据库安全性的一种有效方法。Oracle程序为了安全性目的一般分为两类:一类所有的用户都可执行,另一类只DBA可执行。在Unix环境下组设置的配置文件是/etc/group,关于这个文件如何配置,请参阅Unix的有关手册,以下是保证安全性的几种方法:(1)在安装OracleServer前,创建数据库管理员组(DBA)而且分配root和Oracle软件拥有者的用户ID给这个组。
㈡ SQL 语句安全问题.
滤掉单引号,滤掉空格。一般没事,不过还是有注入的危险,另外最好过滤掉sql的常用关键字。
但是防御就是防御,没有100%的安全,高手还是有的,怎么都有可能注入。
㈢ 怎样防止sql注入攻击 / 蓝讯
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
防范SQL注入式攻击闯入并不是一件特别困难的事情,只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。
●替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。
●删除用户输入内容中的所有连字符,防止攻击者顺利获得访问权限。
●对于用来执行查询的数据库账户,限制其权限。用不同的用户账户执行查询、插入、更新、删除操作。由于隔离了不同账户可执行的操作,因而也就防止了原本用于执行SELECT命令的地方却被用于执行INSERT、UPDATE或DELETE命令。
●用存储过程来执行所有的查询。SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以被限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了。
●检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行。之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。
●将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理。用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。
●检查提取数据的查询所返回的记录数量。如果程序只要求返回一个记录,但实际返回的记录却超过一行,那就当做出错处理。
㈣ 登陆sql2012,新建数据库出现问题,总是说服务器主体无法在当前安全上下文访问数据库“model”
该用户没有访问model库的权限。
方法:
【安全性】【登录名】,选择该用户,双击编辑属性;
设置好【用户映射】
㈤ 与SQL SERVER 安全控制相关的几点说明
与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用户帐户访问数据库,可以像添加其它数据库用户那样添加它,如:
USE<Database Name>
GO
EXECsp_grantdbaccess 'guest'
GO
在SQL SERVER 2005中,允许guest用户帐户
USE<Database Name>
GO
GRANT CONNECT TO GUEST
GO
需要提醒的是,对于是否添加Guest用户要谨慎权衡利弊。
--SQLServer 2000删除guest用户账号
USE<Database Name>
GO
EXECsp_revokedbaccess 'guest'
GO
-- SQLServer 2005禁用guest用户账号
USE<Database 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'
㈥ 安装sql数据库服务器配置失败
一. SQLServer引擎:SQLServer有两个重要组件:关系引擎和存储引擎。关系引擎包括查询数据所需的组件:命令解析器从ODS接收请求并解析查询语法,如果语法有效,请求被仁慈给查询优化器(Query Optimizer),查询优化器通过多个细粒度的查询来查找检索数据的最快方式。存储引擎的功能为:从操作系统或服务器问题中恢复;与操作系统交互;控制IO和数据文件的缓冲区;处理事务、锁和日志记录。
二. 安装技巧:
i. 有些程序可能会影响安装:Oracle,DBWEB,PersonalWebServer,IIS,SMTP,NNTP,ExchangeServer,SNA Server,备份软件,DiskKeeper,SNMP服务。
ii. 安装SQL必须拥有管理员身份登录到服务器,可以访问注册表,还要检查注册表是否有足够空间(设置注册表空间:系统属性->高级->性能选项->虚拟内存更改->增加注册表最大尺寸)
iii. 安装过程出错,可以查看SystemRoot下的sqlstp.log文件,或者MSSQL\logs目录下的Errorlog文件
iv. 安装最可能失败的地方是在配置步骤中。SQL在这一步骤将数据库置于单用户模式,并运行脚本来配置系统目录。确保这一步骤时,没有其他连接
v. SQL的不同版本:
1. 企业版:在DataCenter下支持32个CPU,64G内存。ADServer2000下支持8个CPU,8G内存。2000Server下支持4CPU,4G内存。,支持XML、AWE、OLAP、VISAN,支持4个节点的故障转移,支持索引视图,支持数据挖掘,支持分布式分区视图
2. 标准版和个人版:不支持AWE、VISAN、故障转移、索引视图、分布式分区视图
vi. 如果想知道安装在何处中断,可以用调试模式:\x86\setup\setupsql.exe k=dbg
vii. 容错性的考虑:
1. RAID0:具有最好的IO性能,但没有容错能力。一个驱动器失效,所有数据都丢失。
2. RAID1:成本最高,每个驱动器都有镜像,一个驱动器失效,请求将被切换到镜像驱动器上。SQL以顺序方式在事务日志和TempDB中存储数据,如果承担得起,应该将事务日志和TempDB放到RAID1上。
3. RAID5:是实现容错的最廉价方式。数据分散到每个驱动器上,显着影响性能,只能容许单个驱动器失效。
4. RAID10:(0+1)提供最好的冗余和性能,但成本最高。
5. NTFS和FAT:FAT名义上快一点,NTFS最健壮
viii. 删除SQLServer:如果要完全删除SQL,必须删除:80\tools和MSSQL目录,以及注册表中的键:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer和Microsoft SQL Server
三. 启动SQL和代理:用来启动SQL代理的域用户帐户必须具有以下权限:
a) 能够读写注册表键
b) 能够改变目录Microsoft SQL Server\Mssql的权限
c) 能够使用服务特权登录
d) 能够改变数据和日志文件的权限
任何时侯SQL必须访问网络,它将默认使用系统帐户的安全上下文,而系统帐户仅拥有本地访问权限,这时,数据库复制功能将无法工作。为此,可以创建一个域帐户,并使用该帐户启动SQL代理,然后在企业管理器中打开“SQLServerAgent属性”来改变启动帐户。如果改变启动SQL实例的用户,应确保上“管理员”或“超级用户”组的成员,否则,该用户将不能在AD中添加SQL对象,如果不关心SQL与AD的交互,就不需要把用户指派到这些组中。
㈦ SQL2005, 在连接数据库引擎时,用windows身份验证时可以正常连接上,但是用Sql身份验证就连接不上。
SQL Server 2005 之 Windows身份认证 无法登陆“网络追踪” 收藏
今天有个网友安装完SQL Server2005后,登陆是遇到了一个我问题:
Windows身份认证方式无法登陆,SQl Server 身份认证方方式可以登陆
我用sql server 的时间并不长,对于这个我问题我也没遇到过。起初跟他说很多我知道的方法去尝试,比如 ,安装后要是把机器名修改了,就会导致登陆界面上的“服务器名”失效,从而无法登陆;还有什么混合登陆模式,是否开启 sql server agent,然后仔细看了一下他发过来的截图
发现 “服务器名称 ”只有一个机器名,我记得我安装的时候应该是: 机器名\SQLServer2005(后面这个好像安装的时候可以自己设置的) ,然后我就以为他缺少后面那个东西,然后他说安装完成后就是那样,什么都没改。死马当活马医吧,我让他在后面添上了
\SQL Server2005、\SQL Server、\MSSQLSERVER ,结果还是不行。接着,就让他去查看“安全性”,发现以windows身份验证创建登陆名的时候会报错 ,而sql serser身份验证创建登陆名不会报错。
遇到没见过的错误当然是上网去搜索一下再说啊,查来查去,根据网上说的,我怀疑是和 本地系统帐户,域用户帐户有关,网上的资料如下:(有点多,呵呵)
1、装SQL Server2000,服务设置里的,使用本地系统帐户和使用域用户帐户 有何区别?
SQLServer2000 使用本地系统帐户和使用域用户帐户两者区别
在安装SQLSERVER2000时,会有这样的一个选择画面,这是设置启动sqlserver服务的登录身份。SQLSERVER2000装好后,会产 生一个MSSQLSERVER服务,在这里设置的就是启动它这个服务的登录身份。
那么我们究竟要选择哪一个呢?两者各代表什么意思呢?下文我们就来研究一下。
我们先看熟悉一下两个相关概念。
什么是凭据?
Windows凭据(Credential)其实就是指用户帐户和口令,我们调用一些API,如 WTSOpenServer,QueryServiceStatus,NetUserEnum等等涉及到RPC的,只要当前用户存储有目标远程机的权限合 适的凭据,则这些API就不会因产生ERROR_ACCESS_DENIED而执行失败。
不好理解么?那么我们来看一下访问别的计算机的情形,加深理解。访问远程计算机必然用到rpc。
上图就是我们连接到IP为172.16.100.1计算时的情形,这个时候是需要我们输入用户帐户与密码的。这里的用户帐户与密码就是所谓的凭据。
当我们输入用户帐户与密码后,并把“记住我的密码”打上勾,点确定。那么我们的凭据(即这个用户帐户与密码)被存储了,以后再访问的时候就无须再输入。
安 全上下文
安全上下文(Security context)是指在一个系统中有效的安全属性或规则。
下面我们来看SQLSERVER2000服务的两种登录方式:本地系统帐户和域用户帐户
本 地系统帐户:
该帐户是对本地计算机具有管理员权限的预定义本地帐户。在本地系统帐户的安全上下文中运行的服务向远程服务器提供本地计算机的凭据。在本地系统帐户的安全 上下文中运行的服务不能建立身份验证会话,因为本地系统帐户不属于域中的 Everyone 组。因此,使用该帐户的服务只能通过空会话(没有凭据)来访问网络资源。(这个访问指的是为了完成某项任务服务的自动访问,和我们的连接SQL服务器不一 概念)
域 用户帐户:
使用专用域用户帐户作为登录帐户
域用户帐户是指在 Active Directory 目录服务中创建的用户帐户。该帐户是域中 Authenticated Users 组的成员。在域用户帐户的安全上下文中运行的服务向远程服务器提供域用户帐户的 Kerberos 票证。在域用户帐户的安全上下文中运行的服务可以访问经过身份验证的用户或特定用户帐户有权访问的远程服务器上的资源。
使用本地用户帐户作为登录帐户
本地用户帐户是指在本地计算机上创建的Windows用户帐户。在本地用户帐户的安全上下文中运行的服务向远程服务器提供本地用户帐户的访问标记。如果在 远程服务器上配置了匹配用户名和密码,则使用本地用户帐户的服务将能够访问同名帐户有权访问的远程服务器上的资源。虽然此方案行之有效,但是维护这些单独 的帐户并保持帐户密码同步将增加管理开销。
如果你没有加入域,但又需要连接到网络资源,那么可以使用本地用户帐户作为登录帐户。
由此可见使用域用户帐户可以使用凭据来访问远程计算机,并使用相应的资源。
例如SQLSERVER服务,当它进行以下操作时,是需要访问远程计算机的。
• 远程过程调用。
• 复制。
• 备份到网络驱动器。
• 涉及远程数据源的异类联接。
• SQL Server 代理邮件功能和 SQL 邮件。
在这几种情况下是无法不使用凭证去访问远程计算机,并使用其资源的。所以必须得把登录类型改为“域用户帐户”,并输入在远程计算机上配置好的,存在的“用 户名”和“密码”。
如果只是装在本机进行开发或学习,完全没必要使用域用户帐户登录模式,因为有时候因为切换不同用户而导致服务不能启动。
修 改SQLSERVER服务的登录类型
服务的登录类型是随时可以改变的。可以需要的时候通过以下两种方法修改SQLSERVER服务的登录类型。
1. 通过企业管理器修改
右击SQLSERVER服务器---“属性”---“安全性”下的“启动服务帐户”
2.通过服务修改
“控制面板”---“服务”----“MSSQLSERVER”,右击---“属性”---“登录”
装 SQLSERVER时遇到的一些问题
1.在安装时出现提示"command line option syntax error!type command /? for help"
这是因为你可能把SQLSERVER的安装文件放在了中文目录下,可以你它改为英文目录即可。每一级目录都不能含有中文。
2.出现提示"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重启计算机"
打开注册表编辑器(或在命令行输入:regedit),在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Control\Session Manager中找到PendingFileRenameOperations项目,并删除它。然后进行安装。
2、安装SQL时,使用域用户账户中的域填写什么(填写其他无法继续下一步)急急急!!!!
此时出现"服务账户"对话框,在该对话框中共有4个选项,我们建议用户选择"对每个服务使用同一账户。自动启动SQL Server 服务"和"使用本地系统账户"这两个选项,选好以后点击下一步,继续安装;
进入"身份验证模式"窗口,此时请选择第二项"混合模式"只有选择混合模式后SQL Server 数据库的超级用户才是"sa";在此窗口可输入超级用户的密码,也可选择空密码(建议:不要使用空密码)。选择下一步后继续安装;
这时安装程序将从光盘向您的机器安装SQL 2000的部件,这需要一段时间。当安装完成后,出现"安装完成"对话框。单击"完成"按钮,完成SQL 2000的安装。
3、SQL2000 1069错误(由于登录失 败而无法启动服务)解决办法?
原因很简单,安装SQL Server时是使用默认登录用户来作为启动SQL Server服务的账号(对于自己使用的单机,通常就是administrator了),当该用户更改了用户名(如有人喜欢把administrator 改成admin)或更改了其口令时,再次启动服务器,就出现"同于登录失败而无法启动服务"的错误了
知道了原因,解决方法也就很显然了
1、把用户口令改回原来的,再启动服务
2、使用控制面版服务管理器,找到 MSSQLSERVER服务,更改启动账号信息,改成变更后的,再启动服务
3、也是推荐使用的方法,创建一个新用户,专门用于启动SQL Server服务,安装SQL Server时就使用该用户来启动SQL Server,这样就可以避免用于频繁更改administrator口令而带来的1069错误了。如果已经安装好SQL Server,也可以在控制面版服务管理器下更改MSSQLSERVER服务的服务账号信息,换成SQL服务专用的用户。
首先介绍网络上常用的两种解决方法:
1.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户"
或:
2.我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"此帐户"--密码和确认密码中输入你修改后的administrator密码.
两者的区别:
选择第一种方式,以后修改了administrator密码,不用再调整(但要求登陆操作系统的是系统管理员)
选择第二种方式,以后修改了administrator密码,还要再重复做上面的操作.
下面是我遇到的一种情况:
今天上午同事又告诉我他的SQL不能登陆自己的"企业管理器"了,报出的错误就是"1069 错误,由于登录失败而无法启动服务",上网查到了以上两种方案,但是当我看到了服务的窗口又发现了一个可能引起此问题的地方,我们先找到 MSSQLSERVER服务,然后查看它的属性,发现是使用域帐户在启动服务时进行验证,于是便询问是否修改过登陆域的密码,得到答案是修改过,因为域中作了设置,一定时期后要求用户修改密码,而且不能与以前密码相同(空密码除外,这个我做过实验^_^)。于是将这里的密码重新进行设置,再重新启动服务成功,SQL也可登陆成功。
4、[SQL Server 2000]发生错误1069:由于登录失败而无法启动服务 (这个和上面的差不多)
如何修改 SQL Server 2000身份验证模式和系统 管理 员Sa的登录密码
1、如何修改SQL Server 2000身份验证模式?
分析:由于千方百剂软件,在 数据库 安全方面采用了最安全的方式“混合模式”,它主要应用于网络主要是Novell网络或者对等网,使用SPX/IP协议和SQL Server验证模式。
优点如下:
创建了Windows NT/2000之上的另外一个安全层次。
支持更大范围的用户,例如非Windows NT客户、Novell网络等。
一个应用程序可以使用单个的SQL Server登录和口令。
下面以操作系统Windows 2000上的SQL Server 2000为例,对误将身份验证模式选择为“windows身份验证模式”的数据库进行修改,操作步骤为:
1. 打开企业管理器,依次展开服务器组,用右键单击软件使用的服务器。
2. 在弹出的快捷菜单,执行“属性”命令,出现“SQL Server属性”对话框。如图3所示。单击“安全性”标签,在“安全性”选项框中,将“仅Windows”改为“SQL Server和Windows”身份验证。
3. 设置完成后,单击“确定”按钮,系统提示重新启动服务器。
4. 单击“是”按钮,完成对身份验证模式的修改。
说明:在 Windows XP操作系统与Windows 2000操作系统下修改SQL Server 2000身份验证模式相同,但在Windows 98操作系统下,却不能通过以上方法对身份验证模式进行修改。因为在Windows 98操作系统下,安装SQL Server 2000时,系统只支持“混合模式”身份验证模式。
2、如何修改SQL Server 2000系统管理员Sa的登录密码?
分析:SQL Server 2000系统管理员Sa的登录密码,一般在安装SQL Server 2000时就已经设置。在数据库管理系统中,用检查口令等手段来检查用户身份,合法的用户才能进入数据库系统。千方百剂系列需要通过验证Sa登录密码才能 创建、删除账套,这样Sa的登录密码在此就显得尤为重要。
操作步骤如下:
1. 打开企业管理器,依次展开服务器组,然后展开服务器。
2. 打开“安全性”文件夹,单击“登录”,然后用右键单击“Sa”,执行“属性”命令。
3. 弹出“SQL Server登录属性”对话框,如图4所示。在“SQL Server身份验证”密码栏,输入最新密码。
4. 单击“确定”按钮,弹出“确认密码”对话框,再输一遍登录密码。
5. 单击“确定”按钮,完成对Sa登录密码的修改。
3、发生错误1069:由于登录失败而无法启动服务
错误1069是一个Windows NT/2000的系统错误。错误1069表明服务不能被启动(当启动服务时返回“登录失败”错误)。例如,当启动MSSQLServer服务时,得到如下 错误提示:
发生错误1069:由于登录失败而无法启动服务
此时正在MSSQLServer服务上执行该服务操作
如果服务被一个没有“登录服务”权限的帐户所启动时会发生1069错误。解决该问题的方法是给予该帐户以“登录服 务”权限。
具体到MSSQLServer的问题,如果在安装在Windows XP上安装SQL Server 2000开发版,并选择了默认设置(仅Windows的身份验证方式,默认实例,用Windows的Administrator用户进行的安装等),一般 会发生上述问题。解决的方法会有很多种,但最简单的方法是:
依次打开Windows控制面版->管理工具->服务->MSSQLSERVER->属性->登录,将登录身份改为本地系 统帐户
通过以上资料,初步认为是因为设置了 “使用域用户帐户 ”,于是就去查看了 控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"本地系统帐户" ,哎!发现他的电脑本来就是选择的“ 本地系统帐户 ”
这下我是真的无语了。。。。无奈啊!
他说是不是因为win7系统的缘故,也许安装的时候和 xp 不一样,我也这么想过,但是我觉得应该没多大差别才对。没办法,继续上网查!
5、win7安装sql server 2005的方法详解:
本文将为大家介绍Windows 7下如何安装SQL Server 2005,相信通过本文,能让大家了解安装的过程。
一、配置IIS
到控制面板,打开IIS Features,点左边的加号,打开详细信息,我们勾上以下组件:
1: Web Managerment Tools\IIS 6 Management Compatibility\IIS6 WMI Compatibility
2: Web Managerment Tools\IIS 6 Management Compatibility\IIS6 Metabase and IIS 6 Configuration Compatibility
3: World Wide Web Services\Application Development Features\Asp.net
4: World Wide Web Services\Common Http Features\Http Redirection
5: World Wide Web Services\Security\Windows Authentication
二、安装标准版SQL Server 2005
按照提示安装即可。
三、安装SQL Server 2005 SP3
最后一步设置系统帐号权限,需要先到任务管理器中关闭 sqlserver 进程,然后到打开dos窗口之前的一步,又需要手动启动 sqlserver服务。
四、启用 SQL Server Browser 服务
单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 外围应用配置器”。
在“SQL Server 2005 外围应用配置器”页上,单击“服务和连接的外围应用配置器”。
在“服务和连接的外围应用配置器”页上,单击“SQL Server Browser”,在“启动类型”中单击“自动”选项,然后单击“应用”。
打开 Windows 防火墙,请单击“开始”,再单击“运行”,键入 firewall.cpl,然后单击“确定”。
五、在 Windows 防火墙中为 SQL Server 2005 创建例外
若要在 Windows 防火墙中为 SQL Server 2005 创建例外,请执行以下步骤:
六、在 Windows 防火墙中为 SQL Server Browser 服务创建例外
若要在 Windows 防火墙中为 SQL Server Browser 服务创建例外,请执行以下步骤:
1.在 Windows 防火墙中,单击“例外”选项卡,然后单击“添加程序”。
2.在“添加程序”窗口中,单击“浏览”。
3.单击 C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe 可执行程序,单击“打开”,然后单击“确定”。
七、配置SQLServer2005 远程连接
第一步 :SQL Server Configuration Manager -> SQL Server 2005 Services 将 SQL Server Browser 设置为 running,
如果没有Enable的话,右键Properties -> Service -> StartMode = Auotomatic
注意,同时必须打开SQL Server Browser 服务第二步: SQL Server 2005 Network Configuration -> Protocols for SQLXPRESS 下同时使用TCP/IP和named pipes第三步:SQL Native Client Configuration 下同时使用TCP/IP和named pipes
2、登陆改为混合模式:
打开manage管理器->以windows方式连接并进入数据库->右键点击你的数据服务器->属性 ->security>选中Sql server and windows Authentication3、新建SQL server方式的用户名和密码:
manage管理器 -> security -> 右键点击logins->new login...-> 选中sql server authentication ->设置login name 和password(confirm password)以及 默认的数据库
最好去掉“enforce password expiration”前的小钩,否则每次登陆都要修改密码。
注意 : 一定要在User Mapping 页面中选择该用户对应的数据库(即使前面已经选择了默认数据库),否则还是会登录不上
如果需要修改数据库,必须分配 db_Owner 角色
4、重新启动服务器
虽然网上好多文章都说只需要重新启动SQL服务就可以,但是经过验证,必须重新启动机器才行
In order to get things to work. You might need to completely reboot the server machine after making the changes. There have been reports (thanks P.C.) that starting and stopping the SQL Server and Browser software is not enough.
5、使用SQL Server Configuration Manager 测试
注意 : Server Name 一定要 Serever\SQLEXPRESS同时还要在 Options -> Network protocol 中选择TCP/IP才能顺利登录在 Windows 防火墙中,单击“例外”选项卡,然后单击“添加程序”。
在“添加程序”窗口中,单击“浏览”。
单击 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe 可执行程序,单击“打开”,然后单击“确定”。
注意:上述路径可能会根据 SQL Server 2005 的安装位置而不同。MSSQL.1 这个占位符代表的是您在前面过程的步骤 3 中获得的实例 ID。
对于每个需要为其创建例外的 SQL Server 2005 实例,重复步骤 1 到步骤 3。
6、Windows7安装SQL Server 2005 全攻略
费了整整两个晚上加一天时间,把SQL Server 2005 不知安装、卸载过多少次,今天终于完美安装上去了,记录一下安装过程,以备以后查看,首先说一下本机配置。
本人操作系统是Windows7简体中文旗舰版,安装的是SQL.Server.2005.开发人员版、企业版、标准版32、64位DVD合集,这个版的镜像文件网上很多。用虚拟光驱载入镜像,照例是检查组建支持,刚开始安装的时候,就检查iis和com+组件警告,我一开始只勾选了asp.net这个选项,结果还是警告,后来发现全选就没事了。在com+组件上浪费的时间最多,开始老是无法启动这个分布式事务支持组件,在网上了查了无数资料还是无法启动,最终发现是之前安装的操作系统的版本问题,估计是被修改过的版本,然后不想再发生麻烦,就重装了一下系统。
接下来sql顺利安装通过,中间会有多次警告"版本不受支持",不用管它,继续安装。有一点也很搞笑,估计是安装包的bug,在安装过程中虽然选择了"混合模式验证",安装完成过后用windows系统帐户却死活登不上去,sa账户可以正常登录。安装完成后需要下载SQL Server 2005 sp3的升级包,一路默认下去,有两点注意:第一个需要先把sql服务手动停掉,升级包才能安装;第二点,也是最关键的一点,当一切安装完成,出现一个 "完成后启动Windws Vista 配置工具的时候",不要动,要先启动sql服务后,再点下一步,然后一个dos窗口一闪而过,出现一个配置工具,把左侧的系统默认账户添加到右侧,下一步,现在就可以用系统帐户正常登录sql了。
之前因为安装升级包都是一路"下一步",但是因为停掉的sql服务没有启动,导致最后一步添加系统帐户失败,好像是什么"错误18456",我在这个上浪费的时间最多,后来仔细回忆一下安装步骤,猛然想到服务未启动怎么能添加进去账户呢,今天安装的时候特意把sql服务启动之后再添加果然成功了。
用系统帐户登录进去看了下,多了一个"计算机名/默认账户名"的用户,这也为我们提供了一个思路:如果安装过程中忘记启动sql服务,用sa帐户登录,然后安全性--右键登录名--新建登录帐户--搜索--高级--立即查找,在下面找到自己系统的默认登录帐户(必须是管理员组的),确定。然后选择 "Windows身份验证",服务器脚色选择public和sysadmin这两个,状态选"授权"和"启用"这两个,至此应该就可以了。之所以说应该就可以了,因为我没试过,我看到那个"计算机名/默认账户名"是这样配置的。
还有些人可能安装的过程中数据库服务安装成功了,但是企业管理器没有安装上去,没关系,到网上下载一个企业管理器,比如 SQLServer2005_SSMSEE.msi,放到人一个盘,最好是根目录,比如我的放到G:盘,直接运行这个安装程序是不行,会提示安装失败,这时新建一个文本文件,内容是msiexec /i G:\SQLServer2005_SSMSEE.msi ,注意路径和你的文件名要对应一致。然后把文本文件后缀名改为cmd,右键"以管理员身份运行"这个文件,这样就安装成功了,最好先安装这个管理器,再安装sp3升级包。
㈧ sql server里 服务器角色都是什么意思
各个角色是对应不同权限的,sql server中有很多权限,可以把这些权限组合或单独赋给各个角色,从而使不同角色的用户的权限不同,你列出的都是内置角色。你看看下面这些对你有没有帮助,希望你解决你的问题。
为便于管理数据库中的权限,SQL Server 提供了若干“角色”,这些角色是用于分组其他主体的安全主体。它们类似于 Microsoft Windows 操作系统中的组。数据库级角色的权限作用域为数据库范围。
SQL Server 中有两种类型的数据库级角色:数据库中预定义的“固定数据库角色”和您可以创建的“灵活数据库角色”。
固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份。但是,只有 db_owner 数据库角色的成员能够向 db_owner 固定数据库角色中添加成员。msdb 数据库中还有一些特殊用途的固定数据库角色。
您可以向数据库级角色中添加任何数据库帐户和其他 SQL Server 角色。固定数据库角色的每个成员都可向同一个角色添加其他登录名。
重要提示:
请不要将灵活数据库角色添加为固定角色的成员。这会导致意外的权限升级。
下表显示了固定数据库级角色及其能够执行的操作。所有数据库中都有这些角色。
数据库级别的角色名称 说明
db_owner
db_owner 固定数据库角色的成员可以执行数据库的所有配置和维护活动,还可以删除数据库。
db_securityadmin
db_securityadmin 固定数据库角色的成员可以修改角色成员身份和管理权限。向此角色中添加主体可能会导致意外的权限升级。
db_accessadmin
db_accessadmin 固定数据库角色的成员可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限。
db_backupoperator
db_backupoperator 固定数据库角色的成员可以备份数据库。
db_ddladmin
db_ddladmin 固定数据库角色的成员可以在数据库中运行任何数据定义语言 (DDL) 命令。
db_datawriter
db_datawriter 固定数据库角色的成员可以在所有用户表中添加、删除或更改数据。
db_datareader
db_datareader 固定数据库角色的成员可以从所有用户表中读取所有数据。
db_denydatawriter
db_denydatawriter 固定数据库角色的成员不能添加、修改或删除数据库内用户表中的任何数据。
db_denydatareader
db_denydatareader 固定数据库角色的成员不能读取数据库内用户表中的任何数据。
有关数据库级固定角色权限的特定信息,请参阅固定数据库角色的权限(数据库引擎)。
msdb 角色
msdb 数据库中包含下表显示的特殊用途的角色。
msdb 角色名称 说明
db_ssisadmin
db_ssisoperator
db_ssisltser
这些数据库角色的成员可以管理和使用 SSIS。从早期版本升级的 SQL Server 实例可能包含使用 Data Transformation Services (DTS)(而不是 SSIS)命名的旧版本角色。有关详细信息,请参阅 使用 Integration Services 角色。
dc_admin
dc_operator
dc_proxy
这些数据库角色的成员可以管理和使用数据收集器。有关详细信息,请参阅数据收集器的安全性。
PolicyAdministratorRole
db_ PolicyAdministratorRole 数据库角色的成员可以对基于策略的管理策略和条件执行所有配置和维护活动。有关详细信息,请参阅使用基于策略的管理来管理服务器。
ServerGroupAdministratorRole
ServerGroupReaderRole
这些数据库角色的成员可以管理和使用注册的服务器组。有关详细信息,请参阅创建服务器组。
重要提示:
db_ssisadmin 角色和 dc_admin 角色的成员也许可以将其权限提升到 sysadmin。之所以会发生此权限提升,是因为这些角色可以修改 Integration Services 包,而 SQL Server 可以使用 SQL Server 代理的 sysadmin 安全上下文来执行 Integration Services 包。若要防止在运行维护计划、数据收集组和其他 Integration Services 包时出现此权限提升,请将运行包的 SQL Server 代理作业配置为使用拥有有限权限的代理帐户,或只将 sysadmin 成员添加到 db_ssisadmin 和 dc_admin 角色。
使用服务器级角色
下表说明了用于服务器级角色的命令、视图和函数。
功能 类型 说明
sp_helpdbfixedrole (Transact-SQL)
元数据
返回固定数据库角色的列表。
sp_dbfixedrolepermission (Transact-SQL)
元数据
显示固定数据库角色的权限。
sp_helprole (Transact-SQL)
元数据
返回当前数据库中有关角色的信息。
sp_helprolemember (Transact-SQL)
元数据
返回有关当前数据库中某个角色的成员的信息。
sys.database_role_members (Transact-SQL)
元数据
为每个数据库角色的每个成员返回一行。
IS_MEMBER (Transact-SQL)
元数据
指示当前用户是否为指定 Microsoft Windows 组或 Microsoft SQL Server 数据库角色的成员。
CREATE ROLE (Transact-SQL)
命令
在当前数据库中创建新的数据库角色。
ALTER ROLE (Transact-SQL)
命令
更改数据库角色的名称。
DROP ROLE (Transact-SQL)
命令
从数据库中删除角色。
sp_addrole (Transact-SQL)
命令
在当前数据库中创建新的数据库角色。
sp_droprole (Transact-SQL)
命令
从当前数据库中删除数据库角色。
sp_addrolemember (Transact-SQL)
命令
为当前数据库中的数据库角色添加数据库用户、数据库角色、Windows 登录名或 Windows 组。
sp_droprolemember (Transact-SQL)
命令
从当前数据库的 SQL Server 角色中删除安全帐户。
public 数据库角色
每个数据库用户都属于 public 数据库角色。如果未向某个用户授予或拒绝对安全对象的特定权限时,该用户将继承授予该对象的 public 角色的权限。
㈨ SQL2005中新建数据库更改存储位置时提示:服务器主体“XX”无法再当前安全上下文下访问数据库“model”
以管理员的身份运行……