当前位置:首页 » 编程语言 » sqlserver2008创建架构
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlserver2008创建架构

发布时间: 2023-02-24 22:54:12

‘壹’ sqlserver2008创建新用户时的架构和角色怎么选

sa是登录名 可以在sqlserver管理器的服务器级别下的安全性-> 登录名中查看
或者在目录视图中sys.server_principals 和 sys.sql_logins
(select *
from sys.sql_logins
go
select *
from sys.server_principals)中查看
默认情况下,sa登录名在各数据库中对应的用户是dbo用户,
dbo是数据库的默认用户。sql Server 安装之后,dbo用户就自动
存在了。dbo用户拥有在数据库中操作的所有权限。SQL_USER与 WINDOWS_USER
在你刚进入sqlserver管理器的时候有身份验证选项有Windows身份验证和sql server身份验证
本地机器上当然可以选择Windows身份验证,远程就只有sql server身份验证
以上仅是个人理解有误之处还请告知

‘贰’ sql server 2008的版本功能

SQL Server 2008出现在微软数据平台愿景上是因为它使得公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。
这个平台有以下特点:
· 可信任的——使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。
· 高效的——使得公司可以降低开发和管理他们的数据基础设施的时间和成本。
· 智能的——提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。 一、可信任的
在今天数据驱动的世界中,公司需要继续访问他们的数据。SQL Server 2008为关键任务应用程序提供了强大的安全特性、可靠性和可扩展性。
(一)保护你的信息
在过去的SQL Server 2005的基础之上,SQL Server 2008做了以下方面的增强来扩展它的安全性:
简单的数据加密
SQL Server 2008可以对整个数据库、数据文件和日志文件进行加密,而不需要改动应用程序。进行加密使公司可以满足遵守规范和及其关注数据隐私的要求。简单的数据加密的好处包括使用任何范围或模糊查询搜索加密的数据、加强数据安全性以防止未授权的用户访问、还有数据加密。这些可以在不改变已有的应用程序的情况下进行。
外键管理
SQL Server 2008为加密和密钥管理提供了一个全面的解决方案。为了满足不断发展的对数据中心的信息的更强安全性的需求,公司投资给供应商来管理公司内的安全密钥。SQL Server 2008通过支持第三方密钥管理和硬件安全模块(HSM)产品为这个需求提供了很好的支持。
增强了审查
SQL Server 2008使你可以审查你的数据的操作,从而提高了遵从性和安全性。审查不只包括对数据修改的所有信息,还包括关于什么时候对数据进行读取的信息。SQL Server 2008具有像服务器中加强的审查的配置和管理这样的功能,这使得公司可以满足各种规范需求。SQL Server 2008还可以定义每一个数据库的审查规范,所以审查配置可以为每一个数据库作单独的制定。为指定对象作审查配置使审查的执行性能更好,配置的灵活性也更高。
(二)确保业务可持续性
有了SQL Server 2008,微软继续使公司具有提供简化了管理并具高可靠性的应用的能力。
改进了数据库镜像
SQL Server 2008基于SQL Server 2005,并提供了更可靠的加强了数据库镜像的平台。新的特性包括:
· 页面自动修复。SQL Server 2008通过请求获得一个从镜像合作机器上得到的出错页面的重新拷贝,使主要的和镜像的计算机可以透明的修复数据页面上的823和824错误。
· 提高了性能。SQL Server 2008压缩了输出的日志流,以便使数据库镜像所要求的网络带宽达到最小。
· 加强了可支持性
(1) SQL Server 2008包括了新增加的执行计数器,它使得可以更细粒度的对数据库管理系统(Database Management Syste,DBMS)日志记录的不同阶段所耗费的时间进行计时。
(2) SQL Server 2008包括动态管理视图(Dynamic Management View)和对现有的视图的扩展,以此来显示镜像会话的更多信息。
热添加CPU
为了在线添加内存资源而扩展SQL Server中的已有的支持,热添加CPU使数据库可以按需扩展。事实上,CPU资源可以添加到SQL Server 2008所在的硬件平台上而不需要停止应用程序。
(三)最佳的和可预测的系统性能
公司在面对不断增长的压力,要提供可预计的响应和对随着用户数目的增长而不断增长的数据量进行管理。SQL Server 2008提供了一个广泛的功能集合,使你的数据平台上的所有工作负载的执行都是可扩展的和可预测的。
性能数据的采集
性能调整和排除故障对于管理员来说是耗费时间的工作。为了给管理员提供全面的执行洞察力,SQL Server 2008推出了范围更大的数据采集,一个用于存储性能数据的新的集中的数据库,以及新的报表和监控工具。
扩展事件
SQL Server扩展事件是一个用于服务器系统的一般的事件处理系统。扩展事件基础设施是一个轻量级的机制,它支持对服务器运行过程中产生的事件的捕获、过滤和响应。这个对事件进行响应的能力使用户可以通过增加前后文关联数据,例如Transact SQL对所有事件调用堆栈或查询计划句柄,以此来快速的诊断运行时问题。事件捕获可以按几种不同的类型输出,包括Windows事件跟踪(Event Tracing for Windows,ETW)。当扩展事件输出到ETW时,操作系统和应用程序就可以关联了,这使得可以作更全面的系统跟踪。
备份压缩
保持在线进行基于磁盘的备份是很昂贵而且很耗时的。有了SQL Server 2008备份压缩,需要的磁盘I/O 减少了,在线备份所需要的存储空间也减少了,而且备份的速度明显加快了。
数据压缩
改进的数据压缩使数据可以更有效的存储,并且降低了数据的存储要求。数据压缩还为大型的限制输入/输出的工作负载例如数据仓库提供了显着的性能改进。
资源监控器
SQL Server 2008随着资源监控器的推出使公司可以提供持续的和可预测的响应给终端用户。资源监控器使数据库管理员可以为不同的工作负载定义资源限制和优先权,这使得并发工作负载可以为终端用户提供稳定的性能。
稳定的计划
SQL Server 2008通过提供了一个新的制定查询计划的功能,从而提供了更好的查询执行稳定性和可预测性,使公司可以在硬件服务器更换、服务器升级和产品部署中提供稳定的查询计划。 二、高效的
SQL Server 2008降低了管理系统、.NET架构和Visual Studio® Team System的时间和成本,使得开发人员可以开发强大的下一代数据库应用程序。
(一)基于政策的管理
作为微软正在努力降低公司的总成本所作的工作的一部分,SQL Server 2008推出了陈述式管理架构(DMF),它是一个用于SQL Server数据库引擎的新的基于策略的管理框架。陈述式管理提供了以下优点:
· 遵从系统配置的政策
· 监控和防止通过创建不符合配置的政策来改变系统
· 通过简化管理工作来减少公司的总成本
· 使用SQL Server 管理套件查找遵从性问题
DMF是一个基于政策的用于管理一个或多个SQL Server 2008实例的系统。要使用DMF,SQL Server政策管理员使用SQL Server 管理套件创建政策,这些政策管理服务器上的实体,例如SQL Server的实例、数据库、和其它SQL Server对象。DMF由三个组件组成:政策管理、创建政策的政策管理员,和显式管理。管理员选择一个或多个要管理的对象,并显式检查这些对象是否遵守指定的政策,或显式地使这些对象遵守某个政策。
自动管理
政策管理员使用下面的执行模式之一,使政策自动执行:
· 强制——使用DDL触发器阻止违反政策的操作
· 对改动进行检查——当一个与某个政策相关的改动发生时,使用事件通知来评估这个政策
· 检查时间表——使用一个SQL Server Agent 工作定期的评估一个政策
(二)改进了安装
SQL Server 2008对SQL Server的服务生命周期提供了显着的改进,它重新设计了安装、建立和配置架构。这些改进将计算机上的各个安装与SQL Server软件的配置分离开来,这使得公司和软件合作伙伴可以提供推荐的安装配置。
(三)加速开发过程
SQL Server提供了集成的开发环境和更高级的数据提取,使开发人员可以创建下一代数据应用程序,同时简化了对数据的访问。
ADO .NET实体框架
在数据库开发人员中的一个趋势是定义高级的业务对象,或实体,然后他们可以将它们匹配到数据库中的表和字段,开发人员使用高级实体例如“客户”或“订单”来显示背后的数据。ADO .NET 实体框架使开发人员可以以这样的实体来设计关系数据。在这一提取级别的设计是非常高效的,并使开发人员可以充分利用实体关系建模。
语言级集成查询能力
微软的语言级集成查询能力(LINQ)使开发人员可以通过使用管理程序语言例如C#或Visual Basic .NET,而不是SQL语句来对数据进行查询。LINQ 使可以用.NET 框架语言编写的无缝和强大的面向集合的查询运行于ADO. NET(LINQ到SQL), ADO .NET 数据集(LINQ到数据集),ADO .NET 实体框架(LINQ到实体),和到实体数据服务匹配供应商。SQL Server 2008提供了一个新的LINQ到SQL供应商,使得开发人员可以直接将LINQ用于SQL Server 2008的表和字段。
CLR集成和ADO .NET对象服务
ADO .NET 的对象服务层使得可以进行具体化检索、改变跟踪、和实现作为公共语言运行时(CLR)的数据的可持续性。开发人员使用ADO .NET 实体框架可以通过使用由ADO .NET 管理的CLR对象对数据库进行编程。SQL Server 2008提供了提高性能和简化开发过程的更有效的和最佳的支持。
Service Broker可扩展性
SQL Server 2008继续加强了Service Broker 的能力。
· 会话优先权——使你可以配置优先权,使得最重要的数据会第一个被发送和进行处理。
· 诊断工具——诊断工具提高了你开发、配置和管理使用了Service Broker的解决方案的能力,例如在应用程序部署之前诊断分支丢失情况或配置不正确的安全问题。
Transact-SQL的改进
SQL Server 2008通过几个关键的改进增强了Transact-SQL编程人员的开发体验。
· Table Value Parameters – 在许多客户的场景中,要传递一个表结构的值(行)的集合到服务器上的一个存储过程或函数中。这些值可能直接用于插入表或更新表,或者是用于更复杂的数据操作。值为表的参数为定义一个表类型和使应用程序创建、赋值和传递表结构的参数到存储过程和函数中提供了更简单的方式。
· 对象相关性——对象相关性的改进通过新推出的种类查看和动态管理功能使能够可靠的找出对象间的相关性。相关性信息总是关于绑定架构和未绑定架构的对象的最新的信息。这个相关性会跟踪存储过程、表、视图、函数、触发器、用户定义的类型、XML schema集合和其他对象。
· 日期/时间数据类型——SQL Server 2008推出了新的日期和时间数据类型:
(1) DATE——一个只包含日期的类型,只使用3个字节来存储一个日期
(2) TIME——一个只包含时间的类型,只使用3到5个字节来存储精确到100纳秒时间
(3) DATETIMEOFFSET – 一个可辨别时区的日期/时间类型
(4) DATETIME2 ——一个具有比现有的DATETIME类型更精确的秒和年范围的日期/时间类型
新的数据类型使应用程序可以有单独的日期和时间类型,同时为用户定义的时间值的精度提供较大的数据范围。
(四)偶尔连接系统
有了移动设备和活动式工作人员,偶尔连接成为了一种工作方式。SQL Server 2008推出了一个统一的同步平台,使得在应用程序、数据存储和数据类型之间达到一致性同步。在与Visual Studio 的合作下,SQL Server 2008使得可以通过ADO .NET中提供的新的同步服务和Visual Studio中的脱机设计器快速的创建偶尔连接系统。SQL Server 2008提供了支持,使得可以改变跟踪和使客户可以以最小的执行消耗进行功能强大的执行,以此来开发基于缓存的、基于同步的和基于通知的应用程序。
(五)不只是关系数据
应用程序正在结合使用越来越多的数据类型,而不仅仅是过去数据库所支持的那些。SQL Server 2008基于过去对非关系数据的强大支持,提供了新的数据类型使得开发人员和管理员可以有效的存储和管理非结构化数据,例如文档和图片。还增加了对管理高级地理数据的支持。除了新的数据类型,SQL Server 2008还提供了一系列对不同数据类型的服务,同时为数据平台提供了可靠性、安全性和易管理性。这篇白皮书的下一章节将介绍非关系数据存储的一些优点。
HIERARCHY ID
SQL Server 2008使数据库应用程序以比以前更有效的方式建立树结构。HierarchyId是一个新的系统类型,它可以存储一个层次树中显示的结点的值。这个新的类型提供了一个灵活的编程模型。它作为一个CLR用户定义的类型(UDT)来执行,它提供了几种用于创建和操作层次结点的有效的及有用的内置方法。
FILESTREAM数据
新的SQL Server 2008 FILESTREAM 数据类型使大型的二进制数据,像文档和图片等可以直接存储到一个NTFS文件系统中;文档和图片仍然是数据库的主要组成部分,并维护事务的一致性。
FILESTREAM 使传统的由数据库管理的大型二进制数据可以作为单独的文件存储在数据库之外,它们可以通过使用一个NTFS流API进行访问。使用NTFS流API使普通文件操作可以有效的执行,同时提供所有丰富的数据库服务,包括安全和备份。
集成的全文检索
集成的全文检索使得在全文检索和关系数据之间可以无缝的转换,同时使全文索引可以对大型文本字段进行高速的文本检索。
稀疏列
这个功能使NULL数据不占物理空间,从而提供了一个非常有效的管理数据库中的空数据的方法。例如,稀疏列使得一般包含极多要存储在一个SQL Server 2008数据库中的空值的对象模型不会占用很大的空间。稀疏列还允许管理员创建1024列以上的表。
大型的用户定义的类型
SQL Server 2008删除了对用户定义的类型的8,000字节的限制,使用户可以显着的扩大他们的UDT的规模。
地理信息
SQL Server 2008为在基于空间的应用程序中消耗、扩展和使用位置信息提供了广泛的空间支持。
· 地理数据类型
这个功能使你可以存储符合行业空间标准例如开放地理空间联盟(Open Geospatial Consortium,OGC)的平面的空间数据。这使得开发人员可以通过存储与设计的平面表面和自然的平面数据例如内部空间等相关联的多边形、点和线来实现“平面地球”解决方案。
· 几何数据类型
这个功能使你可以存储地理空间数据并对其执行操作。使用纬度和经度的组合来定义地球表面的区域,并结合了地理数据和行业标准椭圆体(例如用于全球GPS解决方案的WGS84)。 三、智能的
商业智能(BI)继续作为大多数公司投资的关键领域和对于公司所有层面的用户来说的一个无价的信息源。SQL Server 2008提供了一个全面的平台,用于当用户需要时你可以为其提供智能化。
(一)集成任何数据
公司继续投资于商业智能和数据仓库解决方案,以便从他们的数据中获取商业价值。SQL Server 2008提供了一个全面的和可扩展的数据仓库平台,它可以用一个单独的分析存储进行强大的分析,以满足成千上万的用户在几兆字节的数据中的需求。下面是SQL Server 2008中在数据仓库方面的一些优点。
数据压缩
数据仓库中的数据容量随着操作系统数目的快速增加而在持续增长。内嵌在SQL Server 2008中的数据压缩使得公司可以更有效的存储数据,同时还提高了性能,因为降低了I/O 要求。
备份压缩
保持一直在线做基于磁盘的备份是花费很昂贵的,并且很耗时。有了SQL Server 2008的备份压缩,保持在线备份所需的存储降低了,并且备份速度明显变快了,因为所需要的磁盘I/O 减少了。
分区表并行
分割使公司能够更有效的管理大型的、不断增长的数据表,只要简单的将它们分割为易管理的数据块。SQL Server 2008是在SQL Server 2005中的分割的优势之上建立的,它改进了对大型的分区表的操作性能。
星型联接查询优化器
SQL Server 2008为普通的数据仓库场景提供了改进的查询性能。星型联接查询优化器通过辨别数据仓库连接模式降低了查询响应时间。
资源监控器
SQL Server 2008随着资源监控器的推出,使公司可以给终端用户提供一致的和可预测的响应。资源监控器使公司可以为不同的工作负载定义资源限制和优先权,这使得并发工作负载可以提供稳定的性能。
分组设置
分组设置(GROUPING SETS)是对 GROUP BY 条件语句的扩展,它使得用户可以在同一个查询中定义多个分组。分组设置生成一个单独的结果集,这个结果集相当于对不同分组的行进行了UNION ALL 的操作,这使得聚合查询和报表更加简单和快速。
捕获变更数据
有了捕获变更数据,变更会被捕获并被放在变更表中。它捕获变更的完整内容,维护交叉表的一致性,甚至是对交叉的schema变更也起作用。这使得公司可以将最新的信息集成到数据仓库中。
MERGESQL语句
有了MERGE SQL 语句,开发人员可以更有效地处理数据仓库的场景,例如检查一行数据是否存在然后执行插入或更新。
可扩展的集成服务
集成服务的可扩展性方面的两个关键优势是:
· SQL Server集成服务 (SQL Server Integration Services,SSIS)管道改进
数据集成包现在可以更有效地扩展、使用有效的资源和管理最大的企业级的工作负载。这个新的设计将运行时间的可扩展性提高到多个处理器中。
· SSIS持久查找
执行查找是最常见的抽取、转换和加载(ETL)操作。这在数据仓库中尤为普遍,当实际记录必须使用查找来转换业务键到它们相应的替代中去时。SSIS 增强了查找的性能以支持大型表。
(二)发送相应的报表
SQL Server 2008提供了一个可扩展的商业智能基础设施,使得IT人员可以在整个公司内使用商业智能来管理报表以及任何规模和复杂度的分析。SQL Server 2008使得公司可以有效的以用户想要的格式和他们的地址发送相应的、个人的报表给成千上万的用户。通过提供了交互发送用户需要的企业报表,获得报表服务的用户数目大大增加了。这使得用户可以获得对他们各自领域的洞察的相关信息的及时访问,使得他们可以作出更好、更快、更符合的决策。SQL Server 2008使得所有的用户可以通过下面的报表改进之处来制作、管理和使用报表:
企业报表引擎
有了简化的部署和配置,可以在企业内部更简单的发送报表。这使得用户能够轻松的创建和共享所有规模和复杂度的报表。
新的报表设计器
改进的报表设计器可以创建广泛的报表,使公司可以满足所有的报表需求。独特的显示能力使报表可以被设计为任何结构,同时增强的可视化进一步丰富了用户的体验。
此外,报表服务2008使商业用户可以在一个可以使用Microsoft Office的环境中编辑或更新现有的报表,不论这个报表最初是在哪里设计的,从而使公司能够从现有的报表中获得更多的价值。
强大的可视化
SQL Server 2008扩展了报表中可用的可视化组件。可视化工具例如地图、量表和图表等使得报表更加友好和易懂。
Microsoft Office渲染
SQL Server 2008提供了新的Microsoft Office渲染,使得用户可以从Word里直接访问报表。此外,现有的Excel® 渲染器被极大的增强了,它被用以支持像嵌套数据区域、子报表和合并单元格等功能。这使得用户可以维护显示保真度和改进Microsoft Office应用中所创建的报表的全面可用性。
Microsoft SharePoint® 集成
SQL Server 2008报表服务将Microsoft Office SharePoint Server 2007和Microsoft SharePoint Services 深度集成,提供了企业报表和其它商业洞察的集中发送和管理。这使得用户可以访问包含了与他们直接在商业门户中所做的决策相关的结构化和非结构化信息的报表。
(三)使用户获得全面的洞察力
及时访问准确信息,使用户快速对问题、甚至是非常复杂的问题作出反应,这是在线分析处理的前提(Online Analytical Processing,OLAP)。SQL Server 2008基于SQL Server 2005强大的OLAP能力,为所有用户提供了更快的查询速度。这个性能的提升使得公司可以执行具有许多维度和聚合的非常复杂的分析。这个执行速度与Microsoft Office的深度集成相结合,使SQL Server 2008可以让所有用户获得全面的洞察力。SQL Server分析服务具有下面的分析优势:
设计为可扩展的
SQL Server 2008加强了分析能力和提供了更复杂的计算和聚合,使得能进行的分析更宽广。新的立方体设计工具帮助用户将分析基础设施的开发工作流线化,使他们可以为优化性能建立解决方案。这个设计里内嵌了Best Practice Design Alerts,使得开发人员可以在设计时集成实时警告,这优化了设计。Dimension Designer使得可以简单的查看和编辑属性关系,还可以提供多个内置的对理想尺度设计的支持的验证,而在数据挖掘结构中增强的灵活性使得可以创建多个不同的模型,而不仅仅是过滤数据。
块计算
块计算提供了一个在处理性能方面的显着提高,使得用户可以增加他们的层级深度和计算的复杂度。
回写到MOLAP
SQL Server 2008分析服务中的新的基于MOLAP 的回写功能使得不再需要查询ROLAP 分区。这给用户提供了更强的用于分析应用程序中的回写设定,而不需要以OLAP 性能为代价。
资源监控器
在SQL Server 2008中一个新的资源监控器提供了对资源利用情况的详细观察。有了这个资源监控器,数据库管理员可以快速并轻松的监控和控制分析工作负载,包括识别哪个用户在运行什么查询和他们会运行多久,这使得管理员可以更好的优化服务器的使用。
预测分析
一个改进的时间序列算法扩大了预测能力。这个查询数据挖掘结构的能力使得报表可以很容易的包含从挖掘模型的外部得来的属性。新的交叉验证特性对数据进行多处对比,发送给你可靠的结果。这些数据挖掘的改进之处一起为更好的洞察和更丰富的信息提供了机会。

‘叁’ sql server 中创建架构,架构是干什么用的,为什么要创建架构,有什么好处

SQL Server 中的 架构 ( schema )
与 软件构架 与 架构师 的不是同一个概念

schema 是用于 在一个 大项目中的 各个 小项目
每个 小项目的表, 放在 各自的 schema 下面.
这样, 遇到 小项目里面. 有 相同名字的 表的话, 不会发生冲突.

例如一个 公司的 系统.
里面分2个 子系统, 分别为 财务系统 和 人力资源系统.
这2个 子系统, 共用一个数据库
.
那么 财务系统的表, 可以放在 财务的 schema.
人力资源系统的表,放在 人力资源系统的模式里面。

这2个 子系统, 能够 互相访问 对方的表
但是又不因为 表重名 的问题,影响对方。

体系结构是下面这个样子的

[服务器名称].[数据库名称].[构架名称].[表名]

create database --> 创建一个数据库
create schema --> 创建一个构架

当你在 SQL Server 里面, 使用 create database 创建一个数据库以后。
你可以不必额外的去创建 schema
因为 SQL Server 会 自动的创建一个 名字叫 dbo 的 schema

‘肆’ sql server 2005 添加架构 需要什么权限

架构的作用与示例

用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVER 2000及以前版本中“用户离开公司"问题,也就是在拥有该对象的用户离开公司,或离开该职务时,不必要大费周章地更改该用户所有的对象属于新的用户所有。另外,也可让 DBA 在安装某个套装软件时,设置该套装软件所用的数据库对象都属于某个特定的架构,容易区别。也就是说,在单一数据库内,不同部门或目的的对象,可以通过架构区分不同的对象命名原则与权限。
在 SQL Server 2005 /2008中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。例如,除了 cus.app.entry.customEntry 外,您还可以创建名为 cus.app.manifest.customEntry 的架构。因为“manifest”不是用户,所以从数据库中删除用户后,无需更改此名称。这就简化了数据库管理员和开发人员的工作。
SQL Server 2005/2008 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 /2008中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构。
下面的显示SQL Server权限层次结构的图可能会给我们一个直观的认识:

SQL Server 2005/2008 Database Engine 管理着可以通过权限进行保护的实体的分层集合。这些实体称为“安全对象”。在安全对象中,最突出的是服务器和数据库,但可以在更细的级别上设置离散权限。SQL Server 通过验证主体是否已获得适当的权限来控制主体对安全对象执行的操作。

安全对象关系如下图:

下面举个具体的示例来说明以一下架构的作用。

--命令对架构进行操作

use master

go

setuser

go

--创建测试数据库

create database schTest

go

create login df with password='sj1234',default_database=schTest

create login xhl with password='sj1245',default_database=schTest

go

use schTest

go

-- 创建两个用户时没有指定属于哪个架构

create user df for login df

create user xhl for login xhl

-- 这个表没指定属于哪个架构属于默认DBO 架构

go

create table tb1 (姓名 varchar(8),性别 char(2))

go

--这个表就属于sch架构

create schema sch

go

create table sch.tb2(姓名 varchar(8),性别 char(2),年龄 int)

go

-- 赋予schTest这个用户查询sche架构中的对象的权限.

grant select on schema::sch to df

go

setuser 'df' --切换用户df

select * from tb2

-- 此时报告"对象名无效" 是因为没有指定tb2的架构,系统默认为dbo,而我们的tb2属于sch架构.

--带上架构名称,就可以查询了

go

select * from sch.tb2

go

setuser -- 切换到sa

---切换到xhl

setuser 'xhl'

--不能查询,是因为没有权限

select * from sch.tb2

go

setuser --切换sa

--给df用户赋默认架构

alter user df with default_schema=sch

go

setuser 'df' --切换df

-- 此时不需要指定sch 也可以了,如果架构中还有其他对象,也可以查询

select * from tb2

go

setuser --切换sa

--创建第三张测试表,同样的是sch架构下

create table sch.tb3 (id int,uname varchar(8))

go

--切换用户df

setuser 'df'

---可以进行查询

select * from tb3

go

---但是无法进行数据插入,因为没有插入权限

insert into tb3 values (1,'abcde') --拒绝了insert权限

go

setuser

--赋插入权限

grant insert on schema::sch to df

--切换用户df

setuser 'df'

go

---可以进行数据插入

insert into tb3 values (1,'abcde') --OK!

---查询结果

select * from tb3

GO

Grant alter on schema::sch to df -- 使schTest 这个用户对所有的架构都有可更改的能力。

--错误

--无法对sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。

GO

Use master

go

Grant control server to df -- 使schTest这个用户能够控制服务器。

--错误

--无法对sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。

setuser

go

use schtest

go

--创建架构sch1

create schema sch1

go
-- 修改对象的架构tb2表的架构由sch 转移到sch1

alter schema sch1 transfer sch.tb2

go

--创建一个新用户,同时指定默认schema,默认属于DBO

create login yhy with password='sj1234',default_database=master

GO

use schTest

GO

create user yhy for login yhy with default_schema=sch --属于sch

--切换用户yhy

setuser 'yhy'

--查询表,对象名'tb2' 无效。

select * from tb2

go

setuser

--赋架构权限

grant select on schema::sch1 to yhy

--切换用户yhy

setuser 'yhy'

go

select * from tb2 ---还是无效,因为不在同一个schema

go

setuser

go

alter user yhy with default_schema=sch1 --更改yhy的默认架构

GO

--由于yhy不是当前用户,所以无法进行查询

select * from tb2

--显示当前用户

GO

select user

GO

--切换用户yhy

setuser 'yhy'

-- 此时就可以进行查询了,如果架构中还有其他对象,也可以查询

go

select * from tb2

--显示当前用户

select user

go

--切换用户

Setuser

--切换用户为df

setuser 'df'

-- 此时由于tb2的架构由sch变为了sch1,所以df就不可以查询tb2了

go

--查询报错
select * from tb2

--显示当前用户
select user

go

setuser

go

use master

go

---删除用户

drop user df

drop user xhl

drop user yhy

---删除登录名

drop login df

drop login yhy

drop login xhl

--删除数据库

drop database schTest