文章分类 -  SqlServer

摘要:标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题概述因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见问题,还有一些平时收集的其它一些问题,这也是很多人容易忽视的问题,在以后收集到的问题会补充在文章末尾,欢... 阅读全文
posted @ 2014-10-11 11:19 超级塞亚人 阅读(190) 评论(0) 推荐(0)
摘要:CREATE function [dbo].[fn_split]( @SourceSql varchar(8000), @StrSeprate varchar(10))returns @temp table(C1 varchar(1000))asbegin declare @i in... 阅读全文
posted @ 2014-09-16 13:33 超级塞亚人 阅读(818) 评论(0) 推荐(0)
摘要:网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑... 阅读全文
posted @ 2014-07-17 14:05 超级塞亚人 阅读(118) 评论(0) 推荐(0)
摘要:很多程序员认为SQL是一头难以驯服的野兽。它是为数不多的声明性语言之一,也因为这样,其展示了完全不同于其他的表现形式、命令式语言、面向对象语言甚至函数式编程语言(虽然有些人觉得SQL还是有些类似功能)。 我每天都写SQL,我的开源软件JOOQ中也包含SQL。因此我觉得有必要为还在为此苦苦挣扎的你呈... 阅读全文
posted @ 2014-07-14 09:41 超级塞亚人 阅读(181) 评论(0) 推荐(0)
摘要:很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间这里共享一个脚本CREATE TABLE #tablespaceinfo ( nameinfo VARCHAR(50) , rowsinfo BIGINT , reserved VARCHAR(20)... 阅读全文
posted @ 2014-07-08 11:09 超级塞亚人 阅读(177) 评论(0) 推荐(0)
摘要:USE [UnipsCenterQueue]GO/****** Object: StoredProcedure [dbo].[up_CancelMemberOrderByMainAndMiddle] Script Date: 05/27/2014 16:45:22 ******/SET AN... 阅读全文
posted @ 2014-05-27 17:53 超级塞亚人 阅读(720) 评论(0) 推荐(0)
摘要:--查询指定表的大小,数据条数,占用空间EXEC sp_spaceused '表名'--查询数据库所有表的大小,数据条数,占用空间exec sp_MSForEachTable @precommand=N'create table ##(表名 sysname,记录数 int,保留空间 Nvarchar... 阅读全文
posted @ 2014-05-27 13:40 超级塞亚人 阅读(236) 评论(0) 推荐(0)
摘要:--===================================================================--背景:在一台SQL SERVER 2012 SP1(11.0.3000)服务器上,由于批处理请求较高,CPU使用率超过40%,于是开始各种调研。。--====... 阅读全文
posted @ 2014-05-27 10:13 超级塞亚人 阅读(318) 评论(0) 推荐(0)
摘要:CREATE FUNCTION [dbo].[fn_SplitStr]( @s varchar(8000), --要分拆的字符串 @split varchar(10) --数据分隔符 )RETURNS @re TABLE(col varchar(10... 阅读全文
posted @ 2014-05-21 09:51 超级塞亚人 阅读(371) 评论(0) 推荐(0)
摘要:曾经想实现Log Explorer for SQL Server的功能,利用ldf里面的日志来还原误删除的数据这里有一篇文章做到了,不过似乎不是所有的数据类型都支持以下为译文:http://raresql.com/2011/10/22/how-to-recover-deleted-data-from... 阅读全文
posted @ 2014-05-20 16:39 超级塞亚人 阅读(866) 评论(2) 推荐(1)
摘要:WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。 特别对于U... 阅读全文
posted @ 2014-05-12 14:51 超级塞亚人 阅读(411) 评论(0) 推荐(0)
摘要:分页查询的方法已经很多很多,在这里我也加入成为其中一员。SQL Server中有一个Set Rowcount的的设置,它的意思是使命令的处理在响应指定的行数之后停止处理命令,利用这个特点,我们可以借用它来在一个千万行级数据表中实现高性能分页查询。先来说说实现方式:1、我们来假定Table中有一个已经... 阅读全文
posted @ 2014-05-09 11:36 超级塞亚人 阅读(220) 评论(0) 推荐(0)
摘要:通过下面的语句可以查看当前库中有哪些表是发生死锁的:SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id)tableName FROM sys.dm_tran_locks WHERE resource_type='OBJECT ' spid :被锁进程ID。tableName:发生死锁的表名。只需要使用kill关键字来杀掉被锁的进程ID就可以对表进行解锁:KILL 52 阅读全文
posted @ 2014-04-12 23:43 超级塞亚人 阅读(121) 评论(0) 推荐(0)
摘要:一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server---创建 备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'tes... 阅读全文
posted @ 2014-04-03 09:52 超级塞亚人 阅读(162) 评论(0) 推荐(0)
摘要:本文讲解表锁住了的解决方法:其实不光是创建事务后未提交事务的情况会锁住表,还有很多种场景会使表产生生死锁,解锁其实很简单,下面用一个示例来讲解:1 首先创建一个测试用的表:CREATE TABLE Test ( TID INT IDENTITY(1,1) ) 2 执行下面的SQL语句将此表锁住:begin tranSELECT * FROM Test WITH (TABLOCKX) 3 通过下面的语句可以查看当前库中有哪些表是发生死锁的:SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id)tableN 阅读全文
posted @ 2014-03-21 16:27 超级塞亚人 阅读(476) 评论(0) 推荐(0)
摘要:在数据库中将XML转换成数据表,xml格式如下:Cc021201008260001-1212014-03-13测试商品sxh1141上海王五上海市徐汇区虹桥路XXX号13912345678021-565656562000302555节假日可送《时尚伊人》一份208f3b696af9453e89170b6a7b2992ae1000...此时需要采用OPENXML的方式进行导入。DECLARE @idoc int EXEC sp_xml_preparedocument @idoc OUTPUT, @xml SELECT * INTO #dtImportMemberOrder FROM OPE... 阅读全文
posted @ 2014-03-13 17:39 超级塞亚人 阅读(929) 评论(0) 推荐(0)
摘要:-- =============================================-- Author: -- Create date: -- Description: -- =============================================CREATE PROCEDURE [dbo].[sp_CTE]( -- Add the parameters for the stored procedure here @TableName nvarchar(200) = 'testTable', --表名 @PageSiz... 阅读全文
posted @ 2013-11-09 09:29 超级塞亚人 阅读(124) 评论(0) 推荐(0)
摘要:大数据处理是一个头疼的问题,特别当达不到专业DBA的技术水准时,对一些数据库方面的问题感到无赖。所以还是有必要了解一些数据库方面的技巧,当然,每个人都有自己的数据库方面的技巧,只是八仙过海,所用的武功不同而已。我把我最常用的几种方式总结来与大家分享,大家还有更多的数据库设计和优化的技巧,尽量的追加到评论中,有时一篇完整的博客评论比主题更为精彩。方法1:采用表分区技术。 第一次听说表分区,是以前的一个oracle培训。oracle既然有表分区,就想到mssql是否有表的分区,当时我回家就google了一把,资料还是有的,在这我儿只是再作一次推广,让更多的人了解和运用这些技术。 表分区,就是... 阅读全文
posted @ 2013-09-09 09:25 超级塞亚人 阅读(132) 评论(0) 推荐(0)
摘要:对于树/图的遍历,通常有2种算法来实现:迭代(Iteration)和递归(Recursion),迭代是利用循环反复取值/赋值的过程;递归则是反复自己调用自己来获得最终结果。SQL Server里的递归有32层嵌套限制,目的在于防止代码进入死循环,除非使用提示OPTION (MAXRECURSION 0)。测试数据:if OBJECT_ID('city') is not null drop table cityGOcreate table city(id int,name nvarchar(10),pid int,depth int)GOinsert into city sel. 阅读全文
posted @ 2013-08-20 10:40 超级塞亚人 阅读(148) 评论(0) 推荐(0)
摘要:这次介绍一下T-SQL中“Not IN” 和“Not Exists”的优化。Not IN 和 Not Exists 命令 :有些情况下,需要select/update/delete 操作孤立数据。孤立数据:不存在主表中而存在其关联表中。操作这样的数据,一般第一反应是利用“Not in” 或 “Not Exists”命令。使用Not IN会严重影响性能,因为这个命令会逐一检查每个记录,就会造成资源紧张,尤其是当对大数据进行更新和删除操作时,可能导致资源被这些操作锁住。.选择NOT IN 还是 NOT Exists现在SQL Server 中有两个命令可以使用大数据的插入、更新、删除操作,不仅性能 阅读全文
posted @ 2013-06-17 09:23 超级塞亚人 阅读(264) 评论(0) 推荐(0)