摘要: SQL Server事务与锁详解之(上篇)- 事务 简介 在关系型数据库中,我们用事务来保证数据的一致性,事务是一个不可分割的工作单元,通过事务,我们可以让一组SQL语句要么全部执行成功(全部提交),要么全部不执行(全部回滚)。事务是数据库系统并发控制的基本单位,它是一个逻辑上的SQL操作序列。 但 阅读全文
posted @ 2023-01-30 21:45 平元兄 阅读(878) 评论(0) 推荐(1)
摘要: SQL Server死锁 简介 死锁是一个并发问题,其中两个会话会阻止彼此的进程。第一个会话锁定了另一个会话想要访问的资源,反之亦然。 下图说明了SQL Server中的死锁: 此图中,invoices和invoices_items是两张表。 首先,会话一访问invoices表并将其锁定。 第二,会 阅读全文
posted @ 2023-01-30 21:40 平元兄 阅读(270) 评论(0) 推荐(0)
摘要: #SQL Server阻塞 简介 当两个会话试图同时更新同一数据时,会发生阻塞。 第一个会话锁定数据,第二个会话需要等待第一个会话完成并释放锁定。 结果,第二会话被阻止更新数据。一旦第一会话完成,第二会话恢复操作。 通常,当一个会话持有资源上的锁,而第二个会话试图获取同一资源上的冲突锁类型时,就会发 阅读全文
posted @ 2023-01-30 21:39 平元兄 阅读(265) 评论(0) 推荐(0)
摘要: SQL Server数据库邮件 简介 数据库电子邮件可以从SQL Server数据库引擎向用户发送电子邮件。电子邮件可以是纯文本或HTML,并可能包含附件。 数据库邮件可靠、可扩展、安全且可支持性好。 可靠性 数据库邮件使用SMTP发送电子邮件。 SQL Server使用单独的过程来传递电子邮件,以 阅读全文
posted @ 2023-01-30 21:38 平元兄 阅读(398) 评论(0) 推荐(0)
摘要: SQL Server删除角色 简介 语法: DROP ROLE [IF EXISTS] role_name; DROP ROLE无法删除拥有安全资源的角色。要删除拥有安全资源的角色,需要首先转移这些安全资源的所有权,然后从数据库中删除该角色。 DROP ROLE语句无法删除具有成员的角色。若要删除具 阅读全文
posted @ 2023-01-30 21:37 平元兄 阅读(574) 评论(0) 推荐(0)
摘要: SQL Server修改角色 简介 ALTER ROLE可以: 重命名角色 向角色中添加成员 从角色中移除成员 重命名角色语法: ALTER ROLE role_name WITH NAME = new_name; 向角色中添加成员语法: ALTER ROLE role_name ADD MEMBE 阅读全文
posted @ 2023-01-30 21:36 平元兄 阅读(215) 评论(0) 推荐(0)
摘要: SQL Server创建角色 简介 角色是数据库级安全资源,是一组权限。要创建新角色,请使用create role语句: CREATE ROLE role_name [AUTHORIZATION owner_name]; 首先,在CREATE ROLE关键字之后指定角色的名称。 其次,在AUTHOR 阅读全文
posted @ 2023-01-30 21:36 平元兄 阅读(926) 评论(0) 推荐(0)
摘要: SQL Server角色 简介 角色是一组权限。角色帮助简化权限管理。例如,可以将权限分组到一个角色中,并将用户添加到该角色中,而不是单独为用户分配权限: 首先创建一个角色 其次,为角色分配权限。 第三步,向角色添加一个或多个用户。 SQL Server为提供了三种主要角色类型: 服务器级角色–管理 阅读全文
posted @ 2023-01-30 21:35 平元兄 阅读(804) 评论(0) 推荐(0)
摘要: SQL Server删除用户 简介 语法: DROP USER [IF EXISTS] user_name; 此语法中,可以在DROP USER之后指定要删除的用户的名称。如果用户在当前数据库中不存在,则DROP USER语句将失败报错。 为了避免报错,可以使用IF EXISTS选项。如果用户已经存 阅读全文
posted @ 2023-01-30 14:20 平元兄 阅读(2676) 评论(0) 推荐(0)
摘要: SQL Server删除登录账户 简介 语法: DROP LOGIN login_name 在此语法中,在DROP LOGIN关键字之后指定要删除的登录名。 请注意,在登录时不能删除登录。如果登录名拥有安全的服务器级对象或SQL server代理作业,则也不能删除该登录名。 如果登录帐户映射到数据库 阅读全文
posted @ 2023-01-30 14:19 平元兄 阅读(1179) 评论(0) 推荐(0)
摘要: SQL Server修改USER(用户) 简介 ALTER USER语句允许修改现有用户的属性。ALTER USER语句可以: 改为用户名。 将用户的默认架构更改为另一个。 将用户映射到另一个登录帐户(LOGIN) 重命名用户 语法: ALTER USER user_name WITH NAME n 阅读全文
posted @ 2023-01-30 14:17 平元兄 阅读(960) 评论(0) 推荐(0)
摘要: #SQL Server ALTER LOGIN 简介 可能有人分不清LOGIN和USER,这儿有一段网上的解释: LOGIN是登录到服务器用的,用户是执行数据库运用的主体,是两个不同的概念,LOGIN是是针对服务器的,不能使用数据库的功能,USER是在某个数据库内起作用,一个LOGIN可以在多个数据 阅读全文
posted @ 2023-01-30 14:17 平元兄 阅读(442) 评论(0) 推荐(0)
摘要: SQL Server用户撤消权限 简介 REVOKE语句从主体中撤销以前授予的对安全资源的权限。语法: REVOKE permissions ON securable FROM principal; 首先,在REVOKE子句中指定一个或多个权限。 其次,在ON子句中指定一个安全资源。 第三,在FRO 阅读全文
posted @ 2023-01-30 14:16 平元兄 阅读(743) 评论(0) 推荐(0)
摘要: SQL Server用户授权(GRANT) 简介 使用CREATE USER语句创建用户后,该用户对数据库对象(如表、视图和索引)没有任何权限。 要允许用户与数据库对象交互,需要向用户授予权限。例如,可以授予权限,以便用户可以从表中查询数据。 GRANT语句可以向主体授予对安全资源的权限。 安全资源 阅读全文
posted @ 2023-01-30 14:16 平元兄 阅读(1380) 评论(0) 推荐(0)
摘要: #SQL Server创建用户 简介 SQL Server CREATE USER语句允许将用户添加到当前数据库。下面是CREATE USER语句的基本语法: CREATE USER username FOR LOGIN login_name; 首先,在CREATE USER关键字之后指定用户名。 阅读全文
posted @ 2023-01-30 14:15 平元兄 阅读(3308) 评论(0) 推荐(1)
摘要: #SQL Server创建LOGIN(登录) 简介 可能有人分不清LOGIN和USER,这儿有一段网上的解释: LOGIN是登录到服务器用的,用户是执行数据库运用的主体,是两个不同的概念,LOGIN是是针对服务器的,不能使用数据库的功能,USER是在某个数据库内起作用,一个LOGIN可以在多个数据库 阅读全文
posted @ 2023-01-30 14:13 平元兄 阅读(1724) 评论(0) 推荐(0)
摘要: #SQL Server事务日志备份 简介 当数据库的恢复模式为FULL(完整)或BULK_LOGGED(大容量日志)时,可以备份数据库的事务日志 在创建事务日志备份之前,需要创建至少一个完整备份。之后,可以创建任意数量的事务日志备份。 最好更频繁地将事务日志备份以: 最小化数据丢失 截断日志文件 通 阅读全文
posted @ 2023-01-30 11:02 平元兄 阅读(1610) 评论(0) 推荐(1)
摘要: SQL Server差异备份 简介 差异备份基于最近的完整备份。换句话说,只有在至少有一个完整备份后,才能创建差异备份。 差异备份捕获自上次完全备份以来的所有更改。完全备份是差异备份的基础。 下图说明了差异备份与完整备份之间的关系: 在这张图片中,有两个完整备份和三个差异备份。 第一个完整备份包含 阅读全文
posted @ 2023-01-30 11:01 平元兄 阅读(650) 评论(0) 推荐(0)
摘要: #SQL Server完整备份 简介 完整数据库备份备份整个数据库。包括: 数据库的元数据,如名称、创建日期、数据库选项、文件路径等。 每个数据文件的已用数据页。 此外,完整备份还包括事务日志的一部分。它表示备份完成时的数据库。 执行完全备份时,SQL Server会使用大量磁盘I/O。因此,应该在 阅读全文
posted @ 2023-01-30 10:59 平元兄 阅读(400) 评论(0) 推荐(0)
摘要: #SQL Server备份 什么是备份 备份是完整备份时该数据库的镜像。 备份数据库时,将其复制到磁盘等备份设备。稍后,可以使用备份文件将数据库恢复到其原始状态。 重要的是,有一个良好的备份策略来满足业务需求。备份策略的规划从恢复策略开始。 这些是指导恢复策略的重要问题: 可以容忍的最大数据丢失量是 阅读全文
posted @ 2023-01-30 10:58 平元兄 阅读(222) 评论(0) 推荐(0)
摘要: #SQLServer 恢复模式(Recovery Model) 简介 恢复模式控制以下内容: SQL Server如何记录数据库的事务。 数据库的事务日志是否需要备份。 什么类型的恢复操作可用于恢复数据库。 SQL Server提供了三种恢复模式 简单 完整 大容量日志 创建新数据库时,SQL Se 阅读全文
posted @ 2023-01-30 10:57 平元兄 阅读(845) 评论(0) 推荐(0)
摘要: #SQL Server系统数据库 简介 默认情况下,SQL Server提供四个主要系统数据库: master msdb model tempdb master master数据库存储SQL Server实例的所有系统级信息,包括: 服务器配置设置 登录帐户 链接的服务器信息 启动存储过程 用户数据 阅读全文
posted @ 2023-01-30 10:56 平元兄 阅读(638) 评论(0) 推荐(0)
摘要: #SQL Server 触发器(Triggers) 简介 SQLServer触发器是响应数据库对象、数据库和服务器事件自动执行的特殊存储过程。SQL Server提供了三种类型的触发器: 数据操作语言(DML)触发器,用于对表的INSERT、UPDATE和DELETE事件时而自动调用。 数据定义语言 阅读全文
posted @ 2023-01-30 10:55 平元兄 阅读(4840) 评论(0) 推荐(3)
摘要: #SQL Server视图(Views) 简介 当使用SELECT语句查询一个或多个表中的数据时,会得到一个结果集。 比如,返回products和brands表中所有产品的产品名称、品牌和标价: SELECT product_name, brand_name, list_price FROM pro 阅读全文
posted @ 2023-01-30 10:52 平元兄 阅读(356) 评论(0) 推荐(0)
摘要: #SQL Server表值函数 简介 表值函数是返回表类型数据的用户自定义函数。表值函数的返回类型是表,因此,可以像使用表一样使用表值函数。 创建表值函数 下面的创建了一个表值函数,函数返回产品列表,包括产品名称、年款和特定年款的标价: CREATE FUNCTION udfProductInYea 阅读全文
posted @ 2023-01-30 10:48 平元兄 阅读(1539) 评论(0) 推荐(0)
摘要: #SQL Server (标量函数) 简介 SQL Server标量函数接受一个或多个参数并返回单个值。 标量函数可以简化代码。比如,可能有一个复杂的计算出现在许多查询中。您可以创建一个标量函数来封装公式并在每个查询中使用它,而不是在每个查询都包含公式。 创建标量函数 使用CREATE FUNCTI 阅读全文
posted @ 2023-01-30 10:45 平元兄 阅读(1130) 评论(0) 推荐(0)
摘要: #SQL Server存储过程参数 简介 在上一篇中中,知道如何创建一个简单的存储过程来包装Select语句。当调用此存储过程时,它只需运行查询并返回结果集即可。 本篇将介绍如何向存储过程中传递一些参数,并在存储过程中使用这些参数,然后根据参数返回想要的结果。 创建带一个参数的存储过程 下面查询返回 阅读全文
posted @ 2023-01-30 10:43 平元兄 阅读(3504) 评论(0) 推荐(1)
摘要: SQL Server存储过程的基本指南 简介 SQL Server存储过程将一个或多个T-SQL语句分为逻辑单元。存储过程存储在SQL Server数据库服务器中。 当第一次调用存储过程时,SQL Server会创建一个执行计划并将其存储在缓存中。在存储过程的后续执行中,SQL Server重用该计 阅读全文
posted @ 2023-01-30 10:42 平元兄 阅读(647) 评论(0) 推荐(0)
摘要: #SQL Server动态SQL 简介 动态SQL是一种可以在运行时动态构造SQL语句的编程技术。因此可以创建更通用、更灵活的SQL语句,因为SQL语句的全文可能在编译时未知。例如,您可以使用动态SQL创建一个存储过程,该存储过程查询一个直到运行时才知道其名称的表的数据。或者是分页存储过程等。 创建 阅读全文
posted @ 2023-01-30 10:40 平元兄 阅读(898) 评论(0) 推荐(0)
摘要: #SQL Server异常处理 TRY CATCH 简介 TRY CATCH可以很好的处理SQL Server中的异常。要使用TRY CATCH,首先要在BEGIN TRY…END TRY块中放置一组可能导致异常的T-SQL语句,如下所示: BEGIN TRY -- 可能导致异常的语句 END TR 阅读全文
posted @ 2023-01-30 10:40 平元兄 阅读(1026) 评论(0) 推荐(0)
摘要: SQL Server 游标(CURSOR) 简介 SQL基于集合进行操作,例如,SELECT语句返回一组称为结果集的行。但是,有时可能需要逐行处理数据集。这时就需要游标了。 什么是数据库游标 数据库游标是一个可以遍历结果集的行的对象。它允许您处理查询返回的单个行。 SQL Server游标生命周期 阅读全文
posted @ 2023-01-30 10:38 平元兄 阅读(375) 评论(0) 推荐(0)
摘要: #SQL Server循环 简介 WHILE语句是一个控制流语句,它允许重复执行语句块,只要指定的条件为TRUE。 WHILE 语法: WHILE Boolean_expression BEGIN 语句或语句块--如果是单个语句则可以省略BEGIN...END, END 如果在进入循环时Boolea 阅读全文
posted @ 2023-01-30 10:34 平元兄 阅读(1083) 评论(0) 推荐(0)
摘要: #SQL Server IF ELSE 简介 IF... ELSE 语句是一种控制流语句,允许根据指定的条件执行或跳过语句块。 IF语句 语法: IF boolean_expression BEGIN 语句块 END 在此语法中,如果boolean_expression为true,则执行BEGIN. 阅读全文
posted @ 2023-01-30 10:33 平元兄 阅读(3219) 评论(0) 推荐(0)
摘要: #BEGIN END 简介 BEGIN…END语句用于定义语句块。语句块由一组一起执行的SQL语句组成。语句块也称为批处理。 打个比方说,如果语句是句子,那么BEGIN…END语句包裹的就是段落。 语法: BEGIN 一组SQL代码 END 在此语法中,在BEGIN和END关键字之间放置一组SQL语 阅读全文
posted @ 2023-01-30 10:32 平元兄 阅读(836) 评论(0) 推荐(0)
摘要: #变量 ##什么是变量 变量是保存特定类型的单个值的对象,例如整数(integer)、日期(date)或可变字符串(varchar)。 通常在以下情况下使用变量: 作为循环计数器,计算执行循环的次数。 保存一个要由控制流语句(如WHILE)测试的值 存储存储过程或函数返回的值 ##声明一个变量 声明 阅读全文
posted @ 2023-01-30 10:32 平元兄 阅读(414) 评论(0) 推荐(0)
摘要: SQL Server计算列上的索引 简介 有如下客户表: 查找居住在garry.espinoza的客户: SELECT first_name, last_name, email FROM sales.customers WHERE SUBSTRING(email, 0, CHARINDEX('@', 阅读全文
posted @ 2023-01-30 10:29 平元兄 阅读(240) 评论(0) 推荐(0)
摘要: SQL Server 筛选索引 简介 如果使用得当,非聚集索引可以大大提高查询性能。然而,非聚集索引的好处是有代价的:存储和维护。 首先,它需要额外的存储空间来存储索引键列的数据副本。 其次,当从表中插入、更新或删除行时,SQL Server需要更新关联的非聚集索引。 如果应用程序只查询表的一部分行 阅读全文
posted @ 2023-01-30 10:28 平元兄 阅读(238) 评论(0) 推荐(0)
摘要: SQL Server覆盖索引 简介 本文使用sales.customers表作为示例 下面语句在email列创建唯一约束: CREATE UNIQUE INDEX ix_cust_email ON sales.customers(email); 查找电子邮件为“aide.franco@msn.com 阅读全文
posted @ 2023-01-30 10:27 平元兄 阅读(275) 评论(0) 推荐(0)
摘要: SQL Server唯一索引(Unique Index) 简介 唯一索引确保索引键列不包含重复值。 唯一索引可以由一列或多列组成。如果唯一索引有一列,则此列中的值将是唯一的。如果唯一索引有多个列,则这些列中的值组合是唯一的。 任何试图向唯一索引键列中插入或更新数据而导致重复的行为都会报错。 唯一索引 阅读全文
posted @ 2023-01-30 10:26 平元兄 阅读(1682) 评论(0) 推荐(0)
摘要: SQL Server Non-Clustered Indexes(非聚集索引) 简介 非聚集索引是一种数据结构,可以提高查询速度。与聚集索引不同,非聚集索引将索引数据与表中的数据行分开进行排序和存储。它是表中选定数据列的副本,其中包含指向关联表的链接。 与聚集索引类似,非聚集索引使用B+树结构来组织 阅读全文
posted @ 2023-01-30 10:25 平元兄 阅读(1295) 评论(0) 推荐(0)
摘要: SQL Server Clustered Indexes(聚集索引) 简介 下面创建一个名为production.parts(产品部件)的新表: --产品部件 CREATE TABLE production.parts( part_id INT NOT NULL, --部件Id part_name 阅读全文
posted @ 2023-01-30 10:23 平元兄 阅读(1370) 评论(0) 推荐(0)
摘要: SQL Server Indexes(索引) 简介 作用 提高查询速度。 定义 将结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,我们将这部分信息称之为索引。 索引很类似一本字典里边的目录。 索引分类 聚集索引 聚集索引是一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。聚 阅读全文
posted @ 2023-01-30 10:21 平元兄 阅读(405) 评论(0) 推荐(0)