
SQL Server
ghlfllz
这个作者很懒,什么都没留下…
展开
-
SQL Server优化手记
很久没有写过博客,之前也零零碎碎写过一些SQL Server的优化笔记,分享一下最近遇到的几例SQL Server的优化问题现像:系统每天不规律的卡顿,一般持续1~2小时,大部分在下午3点左右排查:数据库没有死锁 只有一条语句超过毫秒级 系统卡顿期间,直接使用SQL Server Management有正常操作数据库 通过监控日志可以发现有磁盘的爆发性增长,一段时间后又会回归正常原因:综合分析,考虑Data与Log文件增长给系统带来的影响,调整为每次扩大10%,定期观察余量,在闲时手原创 2021-09-07 15:18:58 · 285 阅读 · 0 评论 -
SQL Server索引碎片整理实战
SQLServer 2008R2&2012R2实测通过--查询表的索引清单SELECT 索引名称=a.name ,表名=c.name ,索引字段名=d.name ,索引字段位置=d.colid ,c.status,a.indid FROM sysindexes a JOIN sysindexkeys b ON a.id=b.id AND a.indid=b.indid JOIN sysobjects c ON b.id...原创 2021-08-11 11:00:48 · 486 阅读 · 0 评论 -
MS SQL Server脚本集
GitHub地址:https://github.com/xiaohuazi123/mssql-script汇总这么多年来使用的mssql脚本,迭代了很多次,比较稳定,一直在生产环境使用,每个脚本已经去除敏感信息。 脚本支持的数据库版本:SQL2008R2 ~SQL2016 大于SQL2016版本不保证脚本一定能用后面脚本会不定期更新脚本数量:54个脚本分类备份还原 表分区 常用函数 错误日志 定时自动抓取耗时SQL并归档发邮件 脚本模块 镜像 批量脚本 数据库收缩 数据库转载 2021-01-28 16:43:44 · 279 阅读 · 0 评论 -
SQL Server 2008 parseJSON函数将JSON解析成Table
CREATE FUNCTION [dbo].[parseJSON]( @JSON NVARCHAR(MAX))RETURNS @hierarchy TABLE ( element_id INT IDENTITY(1, 1) NOT NULL, /* internal surrogate primary key gives the order of parsing and the转载 2016-06-12 23:49:06 · 12968 阅读 · 2 评论 -
SQL Server获取存储过程、表、自定义函数的最后修改时间
SQL Server获取存储过程、表、自定义函数的最后修改时间select [name], create_date, modify_date, type_desc FROM sys.all_objects where (type_desc = N'SQL_STORED_PROCEDURE' OR type_desc = N'SQL_TABLE_VALUED_FUNCTION原创 2016-06-12 22:28:13 · 2827 阅读 · 0 评论 -
SQL Server2008中CROSS APPLY的应用范例(二) - 将一个或多个字段内用逗号分隔的内容分成多条记录
SQL Server2008中CROSS APPLY的应用范例 ——将一个或多个字段内用逗号分隔的内容分成多条记录DECLARE @DutyLst VARCHAR(MAX);DECLARE @DutyNames NVARCHAR(MAX);SET @DutyLst = '793f2b96-0818-491f-839a-3bf431原创 2015-07-23 17:15:58 · 2012 阅读 · 0 评论 -
SQL Server2008中CROSS APPLY的应用范例(一)-将多个不同值更新到不同条件匹配的记录中
SQL Server2008中CROSS APPLY的应用范例 ——将多个不同值更新到不同条件匹配的记录中有一个库存表,需要写一个SQL语句,一次将所有变更的库存全部写进去输入数据格式:goods_id1=goods_amount1,goods_id2=goods_amount2[,goods_id原创 2015-05-29 14:40:12 · 1417 阅读 · 0 评论 -
SQL Server2008中CROSS APPLY的应用范例(三) - 将一个或多个字段内用逗号分隔的内容分成多条记录
SQL Server2008中CROSS APPLY的应用范例(三) - 将一个或多个字段内用逗号分隔的内容分成多条记录有一个用逗号分隔各元素的字符串,希望能把这个字符串格式化成一个记录一、每个元素一行SELECT B.* FROM (SELECT [value] = CONVERT(XML , '' + REPLACE('1,2,3,长沙,2,3,4,广州,2015-原创 2015-12-04 15:07:40 · 2124 阅读 · 0 评论 -
SQL Server中Union, Union All与TOP关键字同时使用的问题
SQL Server 2008中因项目需要,用一条SQL语顺筛选出两个同构表中的前4条符合条件的记录首先想到了Union All对两个表联合查询,但查出来结果怎么做到只取4条呢?走了不少弯路,最后发现挺简单的,如下:SELECT TOP 4 * FROM (SELECT 1 AS [No], Name FROM TABLE1 UNION ALL SELECT 2 AS [No]原创 2015-12-21 15:28:24 · 2253 阅读 · 0 评论 -
SQL Server 2008 clearhtml函数清除字段中的HTML标记
create function [dbo].[clearhtml] (@maco varchar(max))returns varchar(max) as begin declare @i int while 1 = 1 begin set @i=len(@maco) set @maco=replace(@maco, substring(@ma转载 2016-06-12 23:52:14 · 2949 阅读 · 0 评论 -
sql server 中sql语句执行顺序
SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中指定某一子句转载 2016-06-30 14:14:09 · 514 阅读 · 0 评论 -
SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)
SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)语法请参考:https://technet.microsoft.com/zh-cn/library/bb510625.aspx按照语法编写语句DECLARE @OpenID VARCHAR(150);SET @Op原创 2016-07-15 15:11:41 · 1160 阅读 · 0 评论 -
SQL Server与MySQL中的16位的MD5
SQL Server与MySQL中的16位的MD5请参考:SQL Server与MySQL中的MD5与SHA1按参考网址算出MD5的Hash以后,使用如下方法获取16位的MD5SELECT UPPER(replace(@md5, '0x', ''));原创 2016-09-06 11:34:31 · 2934 阅读 · 0 评论 -
SQL Server 2008还原数据时报错“因为数据库正在使用,所以无法获得对数据库的独占访问权”的解决方法
SQL Server 2008g还原数据库时报错“因为数据库正在使用,所以无法获得对数据库的独占访问权”的解决方法右键点击数据库,依次选择“属性-选项-状态-限制访问”,把属性值从MULTI_USER修改为SINGLE_USER然后数据库会被切换为单用户模式,直接还原,完成后把访值改回来简单、快捷原创 2016-12-30 11:02:03 · 10823 阅读 · 0 评论 -
SQL Server 2008清空日志
SQL Server 2008清空日志USE [master];GOALTER DATABASE OTMS SET RECOVERY SIMPLE WITH NO_WAIT;GOALTER DATABASE OTMS SET RECOVERY SIMPLE;GOUSE MyDb;GODBCC SHRINKFILE (N'MyDb_log',原创 2017-11-07 15:26:25 · 699 阅读 · 0 评论 -
查看SQLServer最耗资源时间的SQL语句
1.找出执行时间最长的10条SQL(适用于SQL SERVER 2005及其以上版本)SELECT top 10 (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N'总花费时间ms' ,total_worker_time/1000 N'所用的CPU总时...转载 2018-06-21 11:34:29 · 1171 阅读 · 0 评论 -
使用SQL进行IIS日志中的访问记录统计
一、创建表结构IIS日志中开头处的第4条用#Fields标明了字段,以其后的内容作为字段名创建一个表,每个字段的类型均为NVARCHAR,字段长度设为2000 二、使用bulk insert语句导入日志BULK INSERT test.iis29 FROM 'd:\ ex120629.log' WITH ( FIELDTERMI...原创 2018-10-15 19:51:02 · 909 阅读 · 0 评论 -
SQL Server占用内存过高及AWE的相关说明
SQL Server占用内存过高及AWE的相关说明开机SQL Server使用一段时间以后,内存会慢慢往上增长,最终会增长到系统内存的85%左右,听起来像是SQL Server有严重的内存泄露,其实不然,通过如下方式可以有效解决并控制SQL Server占用内存过高的问题。Step1. 登录SQL Server Management StudioStep2. 右键我们的原创 2015-10-22 16:43:01 · 19064 阅读 · 0 评论 -
SQL Server的日期格式化函数大全
SQL Server的日期格式化函数大全Sql Server 中一个非常强大的日期格式化函数Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select CONVERT(varchar(100),原创 2015-08-11 16:39:41 · 612 阅读 · 0 评论 -
SQL Server 2000优化之高级篇
SQL Server 2000优化之高级篇一、优化索引可以使用的SQL Server 2000的索引优化向导来优化你的索引,可以通过SQL Server2000安装目录中的“事件控查器”程序来访问索引优化向导。 二、数据与索引碎片情况SQL Server 2000中提供了一个命令,用于供用户查询指定的表的数据和索引的碎片信息,命令名DBCC SHOWCONTIG,该命令的详原创 2008-11-08 17:38:00 · 2397 阅读 · 0 评论 -
SQL SERVER整理索引碎片测试
引用地址:http://blog.chinaunix.net/u2/79339/showart_1308678.html SQL SERVER整理索引碎片测试SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了:1SQL SERVER 2000/2005查询2000use转载 2008-11-09 11:37:00 · 2145 阅读 · 0 评论 -
SQL Server 2000优化之基础篇
SQL Server 2000优化之基础篇一、硬件与操作系统当数据库运行遇到瓶颈时,最基本与初级的优化手段是通过改善硬件条件与操作系统环境,具体优化方法可以参考下文:1、独立服务器应尽量配备独立服务器作为数据库服务器。 2、配备更强劲的硬件环境CPU决定计算能力的大小,对于复杂查询而言,CPU是主要的系统瓶颈所在。内存决定数据交换的速度,影响SQL Server原创 2008-11-08 15:47:00 · 2000 阅读 · 0 评论 -
杀虫纪录:一个OleDb/SqlDb Mapping中SqlDbType.Text引起的问题
杀虫纪录:一个OleDb/SqlDb Mapping中SqlDbType.Text引起的问题 前天用户报告了一个bug,一分析十分奇怪。 首先,IIS+Sql Database上有问题,但IDE+Sql Database就没有问题。 其次,原始的Error Message是System.Data.SqlClient.SqlException: A se转载 2012-10-17 20:28:42 · 2654 阅读 · 0 评论 -
A server error occured on the current command. The results, if any, should be discarded.
A server error occured on the current command. The results, if any, should be discarded.近日公司有一个项目,该项目在C#调用SQL Server中的存储过程的时候发生了异常,奇怪的是该项目一直运行稳定,并且该异常只发生在特定的情况下。Review了一下日志,重建了发生异常的现场,Debu原创 2012-10-17 20:25:01 · 4802 阅读 · 0 评论 -
SQL Server2008优化之SET STATISTICS开关
SQL Server2008优化之SET STATISTICS开关清除Buffer Pool时面的所有缓存DBCC DROPCLEANBUFFERS清除Buffer Pool里的所有缓存的执行计划,已经预编译的内容,在此处将被清空DBCC FREEPROCCACHE原创 2014-08-18 15:55:10 · 4768 阅读 · 1 评论 -
SQL Server与MySQL中的MD5与SHA1
SQL Server 2008:MySQL:原创 2014-10-22 11:53:10 · 3110 阅读 · 0 评论 -
[精妙SQL]没有数据源的情况下自定义记录集(VALUES关键字,适用于SQL Server 2008)
没有数据源的情况下自定义记录集(VALUES关键字,适用于SQL Server 2008)select TT_Name from (values('s1'),('s2'),('s3')) as TT(TT_Name);结果集:TT_Names1s2s3原创 2014-12-30 11:39:49 · 1046 阅读 · 0 评论 -
[精妙SQL]使用自定义记录集参与查询(VALUES关键字,适用于SQL Server 2008)
使用自定义记录集参与查询(VALUES关键字,适用于SQL Server 2008)请参考:没有数据源的情况下自定义记录集(VALUES关键字,适用于SQL Server 2008)declare @t1 table([id] bigint,[str] varchar(50));Insert into @t1([id], [str]) values(原创 2014-12-30 11:42:50 · 805 阅读 · 0 评论 -
SQL Server 2008禁止修改表结构的解决办法
SQL Server 2008禁止修改表结构的解决办法近日在使用SQL Server 2008 Management Studio时遇到一个奇怪的问题,之前的数据库是用SQL Server 2005创建的,我将数据库文件复制到另外一台机器上,这台机器上安装的是SQL Server 2008,将数据库文件附加进来没有任何问题,但是当我打开SQL Server 2008的Managem转载 2015-03-19 16:55:11 · 771 阅读 · 0 评论 -
SQL Server2008中通过SQL获取表结构
SQL Server2008中通过SQL获取表结构新增数据用户,角色为public,映射到待获取表结构的数据库上,授与用户在该数据库上的身份为db_owner执行如下SQL语句:select syscolumns.name as [Name] ,systypes.name as [Type],syscolumns.length AS [Size],syscolu原创 2015-03-19 17:09:06 · 2278 阅读 · 0 评论 -
SQL Server的数据库连接自适应数据库镜像
SQL Server的数据库连接自适应数据库镜像如果你用ADO.NET去连接一个数据库镜像,当这个数据库镜像进行故障切换的时候,你的应用程序可以利用驱动器的特性去自动重定向连接。当然,你必须在连接字段里指定初始的主服务器和数据库,以及用于故障切换的镜像服务器。Data Source = myServerAddress;Failover Partner = myMirrorServerAdd原创 2015-03-12 17:42:38 · 618 阅读 · 0 评论 -
获取SQL Server连接数与监视SQL Server连接状态的方法
获取SQL Server连接数与监视SQL Server连接状态的方法(1)通过活动监视器第一步:打开MSSMS管理器,单击“活动监视器”图标。 第二步:在打开活动监视器视图中,单击“进程”选项卡。第三步:运行 #4 连接池异常与处理方法 中的例子,则可以看到打开的5条连接,如下图所示。 (2)使用T-SQL语句同样,通过执行转载 2015-04-12 12:09:01 · 3586 阅读 · 0 评论 -
如何用Sql Server2008连接万网数据库
如何用Sql Server2008连接万网数据库本人实际测试后总结如下步骤:1、配置工具->Sql Server Configuration Manager->SQL Server网络配置->MSSQLSERVER的协议2、看看TCP/IP协议是否启动,启动它3、启动后,右键菜单点"属性" ,在分页菜单中选"IP地址"4、把"IP1"和"IP2"原创 2015-05-28 11:55:41 · 1848 阅读 · 0 评论 -
SQL Server2008中将SELECT语句返回的多条记录转换以逗号分隔的字符串
SQL Server2008中将SELECT语句返回的多条记录转换以逗号分隔的字符串通过SELECT语句查询将返回一个多行的记录集,我们可以通过如下方式将这些记录拼接成逗号分隔的字符串。以某个表的字段为例:1、获取表名编号SELECT TOP 1 [ID] FROM [sysobjects] WHERE [Type] = 'u' AND name = 'ntxuag原创 2015-05-29 14:18:47 · 6617 阅读 · 0 评论 -
SQL Server 2008存储过程中使用另一个存储过程返回的记录集
SQL Server 2008存储过程中使用另一个存储过程返回的记录集create proc sp_pub_test_RsFromProc @BeginTime datetime, @EndTime datetime as --建一个表变量,结构与sp_pub_test_GetRs查询出的结果集相同 declare @Record ta原创 2015-05-22 11:50:57 · 3290 阅读 · 0 评论 -
SQL Server 2000优化之进阶篇
SQL Server 2000优化之进阶篇一、查询条件与记录数1、查询时应将需要选择的字段全部列出来,如果没有特殊的需要应当使用Top n指定本次查询应当返回的记录条数。2、指定查询条件时应遵循如下一些原则:1>、索引字段的相关条件优先2>、数字比较条件优先3>、字段与具体值比较条件优先4>、字段经运算后作为条件项置为较低的优先级5>、字符串比较条件置为较低的优原创 2008-11-08 16:38:00 · 1271 阅读 · 0 评论