SQL Server

SQL Server数据库高级进阶之锁实战演练

為{幸葍}努か 提交于 2020-08-10 14:43:36
一、SQL Server锁的本质 锁的定义:锁主要用于多用户环境下,保证数据库完整性和一致性的技术。 锁的解释:当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的完整性和一致性。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制。 二、SQL Server锁的分类 锁的分类,在教材上,网络上好多都是按两个维度来描述的。一种维度是按锁的功能来划分,一种维度是按概念来划分。 1)、按概念划分(从程序员的角度看) • 悲观锁(Pessimistic Lock) • 乐观锁(Optimistic Lock) 2)、按锁的功能来划分(从数据库系统的角度来看) • 共享锁 (S) (Shared (S) Locks) 用于不更改或不更新数据的操作(只读操作),如SELECT语句。 • 更新锁 (U) (Update (U) Locks)用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。 • 排它锁 (X) (Exclusive (X) Locks) 用于数据修改操作,例如INSERT、UPDATE或DELETE。确保不会同时对同一资源进行多重更新。 • 意向锁 (I)(Intent Locks)

C#+SQL Server的数据库管理系统常用的代码

此生再无相见时 提交于 2020-08-10 13:22:32
数据库管理系统 数据库 管理 系统 (Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护 数据库 ,简称 DBMS 。它对 数据库 进行统一的管理和 控制 ,以保证 数据库 的安全性和完整性。用户通过 DBMS 访问 数据库 中的数据, 数据库管理员 也通过 DBMS 进行数据库的维护工作。它可以支持多个 应用程序 和用户用不同的方法在同时或不同时刻去建立,修改和询问 数据库 。大部分 DBMS 提供 数据定义语言 DDL (Data Definition Language)和 数据操作语言 DML (Data Manipulation Language),供用户定义 数据库 的模式结构与权限约束,实现对数据的追加、删除等操作。 接下来博主分享下开发一个数据库管理系统所需的基本知识。 C# Part: 1、try、catch语句 try { } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } 2、需要引用的空间命名 using System.Data.Sql; using System.Data.SqlClient; 3、常用的变量 SqlConnection pConn; SqlDataAdapter pAdpt; SqlCommand

检查SQL Server中是否存在表

不羁的心 提交于 2020-08-10 12:14:16
问题: I would like this to be the ultimate discussion on how to check if a table exists in SQL Server 2000/2005 using SQL Statements. 我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论。 When you Google for the answer, you get so many different answers. 当您用Google搜索答案时,会得到很多不同的答案。 Is there an official/backward and forward compatible way of doing it? 有官方/向后和向前兼容的方式吗? Here are two possible ways of doing it. 这是两种可能的方法。 Which one among the two is the standard/best way of doing it? 两种方法中的哪一种是标准/最佳方法? First way: 第一种方式: IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND

查看SQL SERVER数据库当前连接数

陌路散爱 提交于 2020-08-10 08:23:11
1.通过管理工具 开始->管理工具->性能(或者是运行里面输入 mmc)然后通过添加计数器添加 SQL 的常用统计 然后在下面列出的项目里面选择用户连接就可以时时查询到数据库的连接数了。不过此方法的话需要有访问那台计算机的权限,就是要通过Windows账户登陆进去才可以添加此计数器。 2.通过系统表查询 复制代码 SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN ( SELECT [DBID] FROM [Master].[dbo].[SYSDATABASES] WHERE NAME='DBName' ) DBName是需要查看的数据库,然后查询出来的行数,就是当前的连接数。不过里面还有一些别的状态可以做参考用。 例如:连到master这个数据库写如下语句: select * from sysprocesses where dbid in (select dbid from sysdatabases where name='MyDatabase') 将所有连接MyDatabase这个数据库的连接记录都求出来。 sysprocesses这个表记录所以连接到SQL SERVER数据库的连接。 3.通过系统的存储过程来查找 SP_WHO 'UserName' UserName 是当前登陆Sql的用户名

【原创】MySQL(Innodb)索引的原理

故事扮演 提交于 2020-08-10 07:20:42
引言 回想四年前,我在学习mysql的索引这块的时候,老师在讲索引的时候,是像下面这么说的 索引就像一本书的目录。而当用户通过索引查找数据时,就好比用户通过目录查询某章节的某个知识点。这样就帮助用户有效地提高了查找速度。所以,使用索引可以有效地提高数据库系统的整体性能。 嗯,这么说其实也对。但是呢,大家看完这种说法,其实可能还是觉得太抽象了!因此呢,我还想再深入的细说一下,所以就有了此文! 需要说明的是,我说的内容只在Mysql的Innodb引擎中是成立的。在Sql Server、oracle、Mysql的Mysiam引擎中的正确性,不一定成立! OK,废话不多说,开始啰嗦! 正文 索引的科普 先引进聚簇索引和非聚簇索引的概念! 我们平时在使用的Mysql中,使用下述语句 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC] 创建的索引,如复合索引、前缀索引、唯一索引,都是属于非聚簇索引,在有的书籍中,又将其称为辅助索引(secondary index)。在后文中,我们称其为非聚簇索引,其数据结构为B+树。 那么,这个聚簇索引

SQL SERVER2017 安装程序无法与下载服务器联系。无法安装机器学习服务的问题解决方式

血红的双手。 提交于 2020-08-10 06:22:15
SQL SERVER2017 安装程序无法与下载服务器联系。无法安装机器学习服务的问题解决方式 参考文章: (1)SQL SERVER2017 安装程序无法与下载服务器联系。无法安装机器学习服务的问题解决方式 (2)https://www.cnblogs.com/sunsea2017/p/7744391.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4413367/blog/4423590

安徽省检察院存储和灾备系统

前提是你 提交于 2020-08-10 05:51:14
1、 项目概述 随着安徽省检察院信息化建设的不断深入,众多部门已经实现了办公和业务处理的信 息化,信息系统大大提高人们工作效率的,系统内的服务器担负着生产及办公的关键应用, 存储着重要的信息和数据,为领导及决策部门提供综合信息查询的服务。办公的信息化同 时也导致了部门运作对计算机系统的依赖越来越强,计算机系统的数据价值越来越高,信 息本身的安全性、完整性问题变得越来越重要。为保证信息化系统的不间断运行,建设一 套高性能、高安全性、可靠性、可扩展性的数据存储及业务的保护系统成为了目前的当务 之急。 1.1 现状分析 安徽省人民检察院省信息中心核心业务系统分布在多个物理隔离的网络中,包括:检察业务网,检察工作网,互联网(外网),每个网络中运行着多套不同的业务系统,办公系 统,书生系统数据库平台、大统一业务系统已经做了本地应用级容灾,数据分布在不同存 储和容灾网关上,前端服务器采用了群集,实现主机 HA 高可用,保证了业务的正常运作。 目前还有部分服务器未做数据及应用系统保护,如未保护的业务平台出现故障时,会造成 业务长时间中断甚至数据丢失;且整个中心没有建立远程灾备站点,当主中心出现站点性 故障时,无法做到有效的快速接管。因此建立完善的灾备体系,保证所有核心业务本地及 异地的灾备,确保业务连续性已势在必行。 1.2 建设目标 本次项目根据安徽省检察院数据中心的现有情况来建设 “

SQL Server事务

孤街浪徒 提交于 2020-08-10 05:29:24
什么是事务 事务的分类 事务的使用 使用存储过程执行事务 EF6执行带事务的存储过程 使用事务的优缺点 EF自带的事务 什么是事务 –事务就是被绑定在一起作为一个逻辑工作单元的SQL语句组, –如果任何一个语句操作失败那么整个操作就被失败,进而回滚到操作前状态,或者是上个节点。 –为了确保要么执行,要么不执行,就可以使用事务。 –要将一组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。 事务的分类 显式事务: 每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。 隐式事务: 在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。 批处理级事务: 只能应用于多个活动结果集 (MARS),在 MARS 会话中启动的 Transact-SQL 显式或隐式事务变为批处理级事务。当批处理完成时没有提交或回滚的批处理级事务自动由 SQL Server 进行回滚。 事务的使用 开始事务 begin transaction "事务名" 回滚事务 rollback transaction "事务名" 提交事务 commit transaction "事务名" 使用存储过程执行事务 ## 示例 模拟银行转账功能 go create proc cp

xp打开sql server 2008数据表时显示“目录名无效”怎么解决--win10专业版

房东的猫 提交于 2020-08-10 05:21:54
xp电脑在使用SQL Server 2008 软件时,经常会遇到各种各样的问题。这不一位小伙伴打开sql server 2008数据表时显示“目录名无效”的错误提示框(如下图所示),数据表也因此无法打开,如何解决?小编来和大家详解具体修复方法。 推荐:win10纯净版系统 xp打开sql server 2008数据表时显示“目录名无效”怎么办 具体的修改步骤如下: 1、点击“数据库引擎查询”如图所示。 2、在编辑框内输入您要进行查询的数据表,点击“显示估计的执行计划”如下图所示。 3、在“消息框”显示如下图的错误提示。 意思就是在“C:/Users/hdy_zyq_fwq_123_zhou/AppData/Local/Temp”中的Temp文件夹中没有名称为“2”的文件夹,那么在Temp文件夹中创建名称为“2”的文件夹即可解决。 关于xp打开sql server 2008数据表时显示“目录名无效”的处理方法分享到这里了,修复方法很简单,即使电脑小白也能轻松掌握! 本文来源于win10专业版,转载请注明来源与出处。 来源: oschina 链接: https://my.oschina.net/u/4414849/blog/4282730

SQL Server聚集索引和非聚焦索引

雨燕双飞 提交于 2020-08-10 03:54:21
1、什么是索引? 索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引查数据无需进行全表扫描,可以快速查询所需的数据。 2、聚集索引和非聚集索引的区别? 一个表只能有一个聚集索引但可以有多个非聚集索引。 聚集索引的叶节点就是最终的数据节点,而非聚集索引的叶节仍然是索引节点,但它有一个指向最终数据的指针。 3、聚集索引和非聚焦索引的原理是什么? 如果给表上了主键(索引),那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就是B树结构,换句话说,就是整个表就变成了一个索引。 4、为什么只能有一个聚集索引? 数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同。所以一张表只能存在一个聚集索引。 5、主键一定是聚集索引吗? 答:不是,可以是非聚集索引,只不过默认是聚集索引,主键必须依赖于索引。 go CREATE TABLE T ( t_id int, t_name nvarchar(10), t_count int, t_version int, constraint pk_t_t_id primary key nonclustered(t_id) -- 添加非聚集索引主键 ) CREATE CLUSTERED INDEX idx_t_t_id ON t(t_id); -- 添加聚集索引 6、索引只能包含一列吗? 答:可以包含多列 CREATE