Microsoft SQL Server 中的 安全 系统在最低级别,即 数据库 本身上实现。无论使用什么 应用 程序 与 SQL Server 通讯,这都是控制用户活动的最佳方法。但是,有时必须自定义安全控制以适应个别 应用 程序 的特殊需要,尤其是当处理复杂数据库和含有大表的数
Microsoft® SQL Server™ 中的安全系统在最低级别,即数据库本身上实现。无论使用什么应用程序与 SQL Server 通讯,这都是控制用户活动的最佳方法。但是,有时必须自定义安全控制以适应个别应用程序的特殊需要,尤其是当处理复杂数据库和含有大表的数据库时。
此外,可能希望限制用户只能通过特定应用程序(例如使用 SQL 查询分析器或 Microsoft Excel)来访问数据或防止用户直接访问数据。限制用户的这种访问方式将禁止用户使用应用程序(如 SQL 查询分析器)连接到 SQL Server 实例并执行编写质量差的查询,以免对整个服务器的性能造成负面影响。
SQL Server 通过使用应用程序角色适应这些要求。应用程序角色与标准角色有以下区别:
◆应用程序角色不包含成员。
不能将 Microsoft Windows NT® 4.0 或 Windows® 2000 组、用户和角色添加到应用程序角色;当通过特定的应用程序为用户连接激活应用程序角色时,将获得该应用程序角色的权限。用户之所以与应用程序角色关联,是由于用户能够运行激活该角色的应用程序,而不是因为其是角色成员。
◆默认情况下,应用程序角色是非活动的,需要用密码激活。
◆应用程序角色不使用标准权限。
当一个应用程序角色被该应用程序激活以用于连接时,连接会在连接期间永久地失去数据库中所有用来登录的权限、用户帐户、其它组或数据库角色。连接获得与数据库的应用程序角色相关联的权限,应用程序角色存在于该数据库中。因为应用程序角色只能应用于它们所存在的数据库中,所以连接只能通过授予其它数据库中 guest 用户帐户的权限,获得对另一个数据库的访问。因此,如果数据库中没有 guest 用户帐户,则连接无法获得对该数据库的访问。如果 guest 用户帐户确实存在于数据库中,但是访问对象的权限没有显式地授予 guest,则无论是谁创建了对象,连接都不能访问该对象。用户从应用程序角色中获得的权限一直有效,直到连接从 SQL Server 退出为止。
若要确保可以执行应用程序的所有函数,连接必须在连接期间失去应用于登录和用户帐户或所有数据库中的其它组或数据库角色的默认权限,并获得与应用程序角色相关联的权限。例如,如果应用程序必须访问通常拒绝用户访问的表,则应废除对该用户拒绝的访问权限,以使用户能够成功使用该应用程序。应用程序角色通过临时挂起用户的默认权限并只对他们指派应用程序角色的权限而克服任何与用户的默认权限发生的冲突。
应用程序角色允许应用程序(而不是 SQL Server)接管验证用户身份的责任。但是,SQL Server 在应用程序访问数据库时仍需对其进行验证,因此应用程序必须提供密码,因为没有其它方法可以验证应用程序。
如果不需要对数据库进行特殊访问,则不需要授予用户和 Windows NT 4.0 或 Windows 2000 组任何权限,因为所有权限都可以由它们用来访问数据库的应用程序指派。在这种环境下,假设对应用程序的访问是安全的,则在系统范围内统一使用指派给应用程序角色的密码是可能的。
有几个选项可用于管理应用程序角色密码而无须将其硬编码到应用程序中。例如,可以使用存储在注册表(或 SQL Server 数据库)中的加密键,只有应用程序有加密键的解密代码。应用程序读取键,对其进行解密,并使用其值设置应用程序角色。如果使用多协议 Net-Library,则含有密码的网络数据包也可以被加密。另外,当角色被激活时,可以在发送到 SQL Server 实例前将密码加密。
如果应用程序用户使用 Windows 身份验证模式连接到 SQL Server 实例,则在使用应用程序时,可以使用应用程序角色设置 Windows NT 4.0 或 Windows 2000 用户在数据库中拥有的权限。这种方法使得当用户使用应用程序时,对用户帐户的 Windows NT 4.0 或 Windows 2000 审核及对用户权限的控制容易维护。
如果使用 SQL Server 身份验证,并且不要求审核用户在数据库中的访问,则应用程序可以更容易地使用预定义的 SQL Server 登录连接到 SQL Server 实例。例如,订单输入应用程序验证运行该应用程序的用户,然后用相同的 OrderEntry 登录连接到 SQL Server 实例。所有连接都使用同一登录,相关权限授予该登录。
说明 应用程序角色可以和两种身份验证模式一起使用。
示例
作为应用程序角色使用的示例,假设用户 Sue 运行销售应用程序,该应用程序要求在数据库 Sales 中的表 Products 和 Orders 上有 SELECT、UPDATE 和 INSERT 权限,但她在使用 SQL 查询分析器或任何其它工具访问 Products 或 Orders 表时不应有 SELECT、INSERT 或 UPDATE 权限。若要确保如此,可以创建一个拒绝 Products 和 Orders 表上的 SELECT、INSERT 或 UPDATE 权限的用户-数据库角色,然后将 Sue 添加为该数据库角色的成员。接着在 Sales 数据库中创建带有 Products 和 Orders 表上的 SELECT、INSERT 和 UPDATE 权限的应用程序角色。当应用程序运行时,它通过使用 sp_setapprole 提供密码激活应用程序,并获得访问 Products 和 Orders 表的权限。如果 Sue 尝试使用除该应用程序外的任何其它工具登录到 SQL Server 实例,则将无法访问 Products 或 Orders 表。

在数据库优化中,应根据查询需求选择索引策略:1.当查询涉及多个列且条件顺序固定时,使用复合索引;2.当查询涉及多个列但条件顺序不固定时,使用多个单列索引。复合索引适用于优化多列查询,单列索引则适合单列查询。

要优化MySQL慢查询,需使用slowquerylog和performance_schema:1.启用slowquerylog并设置阈值,记录慢查询;2.利用performance_schema分析查询执行细节,找出性能瓶颈并优化。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

MySQL异步主从复制通过binlog实现数据同步,提升读性能和高可用性。1)主服务器记录变更到binlog;2)从服务器通过I/O线程读取binlog;3)从服务器的SQL线程应用binlog同步数据。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

MySQL的安装和基本操作包括:1.下载并安装MySQL,设置根用户密码;2.使用SQL命令创建数据库和表,如CREATEDATABASE和CREATETABLE;3.执行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.创建索引和存储过程以优化性能和实现复杂逻辑。通过这些步骤,你可以从零开始构建和管理MySQL数据库。

InnoDBBufferPool通过将数据和索引页加载到内存中来提升MySQL数据库的性能。1)数据页加载到BufferPool中,减少磁盘I/O。2)脏页被标记并定期刷新到磁盘。3)LRU算法管理数据页淘汰。4)预读机制提前加载可能需要的数据页。

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用