sqlserver
羽之大公公
这个作者很懒,什么都没留下…
展开
-
仅当您使用 master 数据库时,才允许可用性组 DDL 操作。请运行 USE MASTER 命令,然后重试您的可用性组 DDL 命令。
sqlserver 故障转移集群切换报错转载 2022-12-01 16:27:36 · 414 阅读 · 0 评论 -
sqlserver服务器名称和计算机名称不一致时修改方法
修复SQL server 名称和计算机名不一致转载 2022-12-01 16:24:28 · 2092 阅读 · 0 评论 -
SQL Server中存储过程比直接运行SQL语句慢的原因
在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点:1.存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处...转载 2022-01-05 13:56:22 · 1572 阅读 · 0 评论 -
varchar(10)与nvarchar(10)区别
前者是非unicode型,存储字符按1个算(内部空间存储占1字节),存储汉字的话按2个算, 就是可以存10个字符或者5个汉字后者是unicode型,存储什么都是按1个算(内部空间存储占2字节), 就是可以存10个字符或10个汉字 varchar(10)与nvarchar(10)就是分别占10个字节和20个字节...转载 2021-09-27 15:40:17 · 783 阅读 · 0 评论 -
Sqlserver连接oracle进行读写数据库
项目中用到sqlserver去连接oracle,通过sqlserver可以直接操作oracle.1、安装oracle客户端软件,并配置:1)打开Net Manager,新增服务名:2)选择网络协议:3)填写主机名和端口号:4)填写服务名:5)下一步,进行测试:6)测试结果:2、设置sqlserver:1)打开企业管理器,选择服务器对象--链接服务器2)右键选择"新建链接服务器"3)常规选项,填写内容。链接服务器:定义链接名称转载 2021-06-28 13:27:26 · 2749 阅读 · 0 评论 -
sql执行过程
一个sql语句是如何执行的?从mysql服务架构说起。mysql内部大致分为服务层和存储引擎层两部分服务层:包含连接器、查询缓存、分析器、优化器、执行器等。涵盖mysql的大多数核心服务功能及所有内置函数(如日期、时间、数据和加密等)所有跨存储引擎的功能都将在这一层实现,比如存储过程、触发器、视图、函数等,也包括通用的binlog日志模块。存储引擎层:包含数据的存储和提取。采用可以替换的插件式架构,支持innodb、myisam、memory等多个存储引擎。连接器所有的sql操作都将使用连接器,转载 2021-03-23 15:08:55 · 164 阅读 · 0 评论 -
sql 三大物理连接
排序合并连接排序合并连接(Sort Merge Join)是一种两个表在做表连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的表连接方法。如果两个表(这里将它们分别命名为表T1和表T2)在做表连接时使用的是排序合并连接,则会依次顺序执行如下步骤。(1)首先以目标SQL中指定的谓词条件(如果有的话)去访问表T1,然后对访问结果按照表T1中的连接列来排序,排好序后的结果集我们记为结果集1。(2)接着以目标SQL中指定的谓词条件(如果有的话)去访问表T2,然后对访问结果按照表T原创 2020-12-17 15:52:14 · 401 阅读 · 0 评论 -
聚集索引和非聚集索引
聚集(clustered)索引,也叫聚簇索引定义:数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。注:第一列的地址表示该行数据在磁盘中的物理地址,后面三列才是我们SQL里面用的表里的列,其中id是主键,建立了聚集索引。 结合上面的表格就可以理解这句话了吧:数据行的物理顺序与列值的顺序相同,如果我们查询id比较靠后的数据,那么这行数据的地址在磁盘中的物理地址也会比较靠后。而且由于物理排列方式与聚集索引的顺序相同,所以也就只能建立一个聚集索引了。...转载 2020-12-17 14:49:15 · 556 阅读 · 0 评论 -
优化器内幕
我记得我还在上一家公司的时候,有一次和主管一起做1:1,主管问我,将来你的技术方向是什么,我说我想往HA方向发展,因为是我的强项。主管问我还有别的吗?我犹豫地说,我也想做优化器方向,但是智商不够。主管大笑,说如果有兴趣可以钻研看看。现在想想,优化器确实比HA好玩多了。HA只是数据库的一个理念,实现这个理念的一些手段方式而已。而优化器则是算法实现,是关系型数据库的整体实现方式。借此来了解图灵奖得主James Gray的遗作,就算学不会,也可以吹吹这位传奇人物的神秘去世故事上篇什么是执行计划? 怎么转载 2020-11-17 14:16:30 · 229 阅读 · 0 评论 -
堆表和索引组织表区别
堆表(heap table)数据插入时时存储位置是随机的,主要是数据库内部块的空闲情况决定,获取数据是按照命中率计算,全表扫表时不见得先插入的数据先查到。索引表(iot)数据存储是把表按照索引的方式存储的,数据是有序的,数据的位置是预先定好的,与插入的顺序没有关系。索引表的查询效率比堆表高(相当于查询索引的效率),插入数据的速度比堆表慢。索引表适用场景:适用于信息检索、空间和OLAP程序。1、 代码查找表。2、 经常通过主码访问的表。3、 构建自己的索引结构。4、 加强数据的共同定位转载 2020-08-24 15:41:08 · 1031 阅读 · 0 评论 -
sqlserver 中 select和update死锁
最近在使用过程中使用SqlServer的时候发现在高并发情况下,频繁更新和频繁查询引发死锁。通常我们知道如果两个事务同时对一个表进行插入或修改数据,会发生在请求对表的X锁时,已经被对方持有了。由于得不到锁,后面的Commit无法执行,这样双方开始死锁。但是select语句和update语句同时执行,怎么会发生死锁呢?看完下面的分析,你会明白的…首先看到代码中使用的查询的方法Select[csharp] view plain copy/// <summary> /// 根据学生转载 2020-07-15 16:30:05 · 1305 阅读 · 0 评论 -
SQL Server 中登录账号与用户权限迁移
1.先创建一个SqlServer身份验证的登录名,并映射到数据库中。如:创建用户 [kk] 映射到数据库 [mytest],此时数据库 [mytest]会增加一个用户 [kk]2.此时再删除登录名 [kk],删除后,数据库[mytest]将存在一个孤立用户 [kk]3.查看当前数据库中是否存在孤立用户use mytest;exec sp_change_users_login @Action='Report';4.对...转载 2020-07-09 14:12:51 · 3605 阅读 · 0 评论 -
sqlserver 清理 日志文件ldf
操作步骤1. 将恢复模式改成“简单”右键数据库 - 属性,切换到选项,将恢复模式修改为简单。2. 收缩日志右键数据库 - 任务 - 收缩 - 文件文件类型选择日志,图错了,确定后会发现,日志文件被迅速清理。3. 命令操作USE [master]GOALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模...原创 2020-07-08 15:07:31 · 1439 阅读 · 0 评论 -
完全卸载sqlserver
很多人在面对SQL Server出现的一些无法解决的问题时,会选择卸载重装,但是SQL Server卸载不干净的话,后续安装过程会出现很多问题,因此安全干净的卸载软件是很重要的步骤。1、在运行中输入services.msc,然后找到所有跟Sql Server有关的服务,并且停止这些服务。(一定要先停止服务再卸载,否则后续卸载文件过程中会失败)2、进入控制面板,点击“程序卸载”3、在程序列表中找到”Microsoft SQL Server 2014(64位)”,右击选“卸载”(或双击)。..转载 2020-06-19 14:50:33 · 3478 阅读 · 3 评论 -
B树索引
索引,相信大多数人已经相当熟悉了,很多人都知道 MySQL 的索引主要以 B+ 树为主,但是要问到为什么用 B+ 树,恐怕很少有人能把前因后果讲述完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4] 中找到 4 这个数...转载 2019-11-20 15:21:18 · 458 阅读 · 0 评论 -
索引外部碎片和内部碎片
毫无疑问,给表添加索引是有好处的,你要做的大部分工作就是维护索引,在数据更改期间索引可能产生碎片,所以一些维护是必要的。碎片可能是你查询产生性能问题的来源。那么到底什么是索引碎片呢?索引碎片实际上有2种形式:外部碎片和内部碎片。不管哪种碎片基本上都会影响索引内页的使用。这也许是因为页的逻辑顺序错误(即外部碎片)或每页存储的数据量少于数据页的容量(内部错误)。无论索引产生了哪种类型的碎片,你都会...转载 2020-03-11 15:48:57 · 580 阅读 · 0 评论 -
sqlserver 删除造成锁表的sleeping进程脚本
alter PROCEDURE dbo.Kill__Sleeping_ProcessesASBEGINSET NOCOUNT ONdeclare @v_sid intdeclare @sql varchar(50)declare cur_kill_sleep cursor forWITH sess AS( SELECT blocking_session_i...原创 2020-03-06 10:21:36 · 1046 阅读 · 0 评论 -
sqlserver 事务和锁详解
事务的概念事务( transacton)是构成单一逻辑工作单元的操作集合,它是一个SQL语句序列,通常,每个 INSERTUPDATE、 DELETE命令被作为一个事务处理,事务开始之后,所有的操作都陆续写到事务日志中,因此事务处理确保了数据的一致性和可恢复性当进行事务操作时,系统自动生成一个检查点机制,检査点周期地楹査事务日志,如果在事务日志中事务全部完成,那么检査点将事务日志中的该...原创 2020-03-03 15:22:59 · 2819 阅读 · 0 评论 -
SQL Server中的死锁
简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的。理解死锁首先需要对死锁所涉及的相关观念有一个理解。一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理解死锁。比如说一个经典的例子就是汽车(主体)对于道路(资源)的征用,如图1所示。 在图1的例子中,每队汽车都占有一条道路,但都需要另外一队汽车所...转载 2019-12-30 11:11:47 · 234 阅读 · 0 评论 -
sqlserver 导出数据库账号密码
SQL Server通过任务脚本导出只有创建用户的语句,无密码这个在迁移过程很痛苦.所以官方网站提供一个存储过程sp_help_revlogin请送导出账号和密码. 找到想要的账号在B(恢复机)恢复即可USE masterGOIF OBJECT_ID ('sp_hexadecimal') IS NOT NULLDROP PROCEDURE sp_hexadecimalGO...转载 2019-12-16 14:33:59 · 1679 阅读 · 0 评论 -
自定义长度随机字符函数
use master;gocreate view v_random as select newid() as MacoId; goCREATE TABLE privs_test(Ownername varchar (300) COLLATE Chinese_PRC_CI_AS NULL,tablename varchar (300) COLLATE Chinese_PRC_CI...转载 2019-12-13 14:49:33 · 102 阅读 · 0 评论 -
sqlserver 登录名和账户复制一套代码
先要执行准备签的临时表和自定义随机值函数的创建直接建在master下,数据库就都能使用了,但一定要有高权限才行use master;gocreate view v_random as select newid() as MacoId; goCREATE TABLE privs_test(Ownername varchar (300) COLLATE Chinese_PRC...原创 2019-12-13 14:47:45 · 423 阅读 · 0 评论 -
SQL SERVER 自定义随机字符串函数-F_RANDOM()
/*SQL SERVER 随机字符串;f_random(@length): 返回指定长度且由0~9和A~Z组成的随机字符串.zaorv;2018-11-25由于SQLSERVER在自定义函数中不能使用RAND()函数,故借随机视图使用随机函数RAND();*/if object_id('v_random','v') is not nulldrop view v_random;...转载 2019-12-09 11:10:52 · 713 阅读 · 0 评论 -
sql server中index的REBUILD和REORGANIZE的区别
两者的区别重新生成索引将会删除并重新创建索引。这将根据指定的或现有的填充因子设置压缩页来删除碎片、回收磁盘空间,然后对连续页中的索引行重新排序。如果指定 ALL,将删除表中的所有索引,然后在单个事务中重新生成。重新组织索引使用最少系统资源重新组织索引。通过对叶级页以物理方式重新排序,使之与叶节点的从左到右的逻辑顺序相匹配,进而对表和视图中的聚集索引和非聚集索引的叶级进行碎...转载 2019-11-20 10:46:57 · 763 阅读 · 0 评论 -
sqlserver 使用 OPENROWSET 将excel 导入至 数据库
开启功能在数据库中已经运行(没有运行则用 RECONFIGURE )EXEC sp_configure 'show advanced options',1RECONFIGURE WITH OVERRIDEEXEC sp_configure 'Ad Hoc Distributed Queries',1RECONFIGURE WITH OVERRIDEUSE [master] ...原创 2019-10-17 11:49:27 · 547 阅读 · 0 评论 -
SqlServer中wait type类型及说明
类型说明 ASYNC_DISKPOOL_LOCK当尝试同步并行的线程(执行创建或初始化文件等任务)时出现。ASYNC_IO_COMPLETION当某任务正在等待 I/O 完成时出现。ASYNC_NETWORK_IO当任务被阻止在网络之后时出现在网络写入中。BACKUP当任务作为备份处理的一部分被阻止时出现。BACKUP_OPERATOR当任务正在等待磁带装入时出现。若要查看磁...转载 2019-10-14 08:55:11 · 1756 阅读 · 0 评论 -
SQL Server 2016 Alwayson新增功能
概述SQLServer2016发布版本到现在已有一年多的时间了,目前最新的稳定版本是SP1版本。接下来就开看看2016在Alwyson上做了哪些改进,记得之前我在写2014Alwayson的时候提到过几个需要改进的问题在2016上已经做了改进。一、自动故障转移副本数量在2016之前的版本自动故障转移副本最多只能配置2个副本,在2016上变成了3个。说明:自动故障转移增加到三个副本影...转载 2019-07-08 13:48:07 · 350 阅读 · 0 评论 -
windows server 2012安装 sqlserver always on
always on 必须安装在windows 集群上,集群安装步骤在我之前的博客里1、 四台已安装windows server 2008 r2 系统的虚拟机,配置如下:CPU : 1核MEMORY : 2GBDISK : 40GB(未分区)NetAdapter : 2块2、 网卡设置:本地连接:外网IP(由于虚拟机本身处于内网网段,192.168.1.2-19...原创 2019-07-03 13:59:48 · 2459 阅读 · 0 评论 -
sqlserver 2012 配置邮件发送
在对象资源管理器中找到管理,在管理下方找到数据库邮件 右键单击数据库邮件,选择 “配置数据库邮件” 选择 新建邮件配置 或者 修改邮件配置 新建邮件配置 配置发件人信息 选择配置文件,完成配置 测试邮件是否能成功发送1.右键单击数据库邮件,选择 “发送测试电子邮件”2.输入收件...原创 2019-07-09 10:01:46 · 674 阅读 · 0 评论 -
sqlserver 通过作业警报监控堵塞
1.创建阻塞日志表,用于记录阻塞情况2.新建作业,用于将阻塞情况记录到阻塞日志表中,并发送邮件(如果没有配置邮件,或者不需要发送邮件,可以忽略此步骤)3.创建警报,当阻塞大于阈值时,触发上面作业查询堵塞sql:WITH sess AS( SELECT DATEDIFF(S,er.start_time,GETDATE()) as duration,...转载 2019-07-10 15:49:49 · 754 阅读 · 0 评论 -
sqlserver 通过自己编写sql作业来获得通知
根据进程堵塞时间长度自己编写sql,通过调度作业发送邮件给DBA,不通过sqlserver警报,灵活性高SET NOCOUNT ON;DECLARE @dt DATETIME= GETDATE(); -- 阻塞时间DECLARE @HtmlContent NVARCHAR(MAX);DECLARE @waittime [bigint]; --邮件发送的阻塞日志(表格形式)...原创 2019-07-10 16:20:57 · 298 阅读 · 0 评论 -
SQL server和Oracle null和'' 是否相等
SQL server NULL:表示“没有对(列)变量输入数据”,即在数据库中的NULL可以区分“没有对(列)变量输入数据”和“有对(列)变量输入数据”这两类情况。 空字符串:则是这里的“有对(列)变量输入数据”这一类情况,即有输入数据,只是输入的数据为空字符串(含有终止符的还是)。 MSSQL对与NULL和空字符串的判断 1 2 3 ...原创 2019-07-19 14:56:14 · 616 阅读 · 0 评论 -
SQL server 覆盖索引和复合索引的区别
覆盖索引所谓的包含列就是包含在非聚集索引中,并且不是索引列中的列。或者说的更通俗一点就是:把一些底层数据表的数据列包含在非聚集索引的索引页中,而这些数据列又不是索引列,那么这些列就是包含列。同时,这些包含列并不会对索引中的条目有影响。好吧,为了使得问题稍微清楚一点,我用个简单的图示说明一下:我们可以用下面的语句在创建索引的时候加入包含列,代码如下:双击代码全选 1 ...转载 2019-07-22 10:55:03 · 3655 阅读 · 0 评论 -
SQLserver执行计划
序言本篇主要目的有二:1、看懂t-sql的执行计划,明白执行计划中的一些常识。2、能够分析执行计划,找到优化sql性能的思路或方案。如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博文给你:SqlServer性能检测和优化工具使用详细,sql语句的优化分析,T-sql语句查询执行顺序。执行计划简介1、什么是执行计划?大哥提交的sql语句,数据库查询优化器,经...转载 2019-08-01 10:45:58 · 273 阅读 · 0 评论 -
SQLserver 查看索引碎片
本文引自DBCC DBREINDEX重建索引提高SQL Server性能查看碎片情况使用 dbcc showcontig 函数来进行代码:--改成当前库use DB_Name--创建变量 指定要查看的表declare @table_id intset @table_id=object_id('TableName')--执行dbcc showcontig(@table_...转载 2019-08-07 10:12:42 · 1657 阅读 · 0 评论 -
SQLSERVER|CDC日志变更捕获机制
一、什么是CDC?变更数据捕获(Change Data Capture ,简称 CDC)记录 SQL Server 表的插入、更新和删除活动。SQLServer的操作会写日志,这也是CDC捕获数据的来源。开启cdc的源表在插入、更新和删除活动时会插入数据到日志表中。cdc通过捕获进程将变更数据捕获到变更表中,通过cdc提供的查询函数,我们可以捕获这部分数据。二、开启CDC2.1...转载 2019-08-14 09:59:42 · 1111 阅读 · 0 评论 -
SQL Server2012 数据库开启远程连接
1.开始程序=》Microsoft SQL Server 2012=》配置工具=》SQL Server 配置管理器=》SQLEXPRESS的协议=》TCP/IP 如下图:2.点击TCP/IP 更改协议选项的为已启用为是,然后继续点击选项IP地址,把里边的所有的“TCP端口”都改成1433,IP2的地址改成你自己本地的IP,TCP动态端口改成空。如果还是不知道怎么改,可以点击“MSSQL...原创 2019-08-16 09:31:07 · 1679 阅读 · 0 评论 -
通过SSMS连接Azure SqlServer
Azure提供了pass的sql server服务,创建如下图,设置好参数即可,在"服务器"设置这一项,注意服务器管理员登录及密码,这个涉及到后面我们用ssms登录的用户名和密码,要记好了。定价层那块可以选择你的数据库对应的性能。创建完以后打开我们的ssms准备,ssms里的服务器名称就是下图黄色框里的一串字符,身份验证是Sa,登录名和密码就是前一幅图中的服务器管理员和密码。...转载 2019-09-17 13:38:45 · 748 阅读 · 0 评论 -
sqlserver实现bat自动备份和恢复
备份数据库.bat@echo offset path=%path%;C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binnecho 数据库备份开始osql.exe -S 127.0.0.1 -U sa -P 123456 -i sqlserverbackup.sql -o c:\backup\sqlserverbacku...转载 2019-06-25 15:33:19 · 1198 阅读 · 1 评论