摘要:CREATE FUNCTION dbo.UrlDecode(@url varchar(3072))RETURNS varchar(3072)ASBEGIN DECLARE @count int, @c char(1), @cenc char(2), @i int, @urlReturn varchar(3072) SET @count = Len(@url) SET @i = 1 SET @urlReturn = '' WHILE (@i 0 SELECT @High = CHARINDEX(SUBSTRING(@URL, @Posit...
阅读全文
摘要:一般我们在使用SQL语句实现行列转置时候,最常用的方法无外乎就是 case语句来实现,但是如果需要需要转置的列太多,那么case起来语句就无限庞大,十分不方便,sql server中的PIVOT就可以帮助我们解决此类问题PIVOT語法,如下: SELECT , [first pivoted column] AS , [second pivoted column] AS , ... [last pivoted column] AS FROM () AS PIVOT ( () FOR [] ...
阅读全文
摘要:一、分区表简介使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性大型表:数据量巨大的表。访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式。分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。注意:只有 SQL Server Enterprise Edition 支持分区。二、创建分区表或分区索引的步骤可以分为以下步骤:1. 确定分区列和分区数2. 确定是否使用多个文件组3. 创建分区函数4. 创建分区
阅读全文
摘要:我们在写事务时经常遇到的问题如下:消息 266,级别 16,状态 2,过程 sp1,第 0 行EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。消息 3903,级别 16,状态 1,过程 sp2,第 15 行ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。如果这只是一个单独的事务引起的,那么很好解决,我们只要检查下是否遗漏了匹配的BEGIN tran 和 COMMIT tran即可,但是如果2个存储过程都是用事务写的,那么就即使每个存储过程的事务写法都正常,也会报这个错误,这是因为
阅读全文
摘要:1.查看工具选项中【启用IntelliSense】是否打开: 选择【工具】-->【选项】打开选项页面,依次展开【文本编辑器】-->Transact-SQL-->IntelliSense,检查是否勾选了【启用IntelliSense】选项。 注意修改配置后要打开新的查询页面才起作用。如果勾选后仍旧不起作用则进行下一步。2.如果前面的【启用IntelliSense】已经勾选,则有可能是缓存被占满:选择菜单【编辑】-->IntelliSense-->【快速刷新本地缓存】(快捷键:ctrl+shit+r)。
阅读全文
摘要:oday I am showing you the difference between @@ERROR, BEGIN TRY/CATCH and XACT_ABORT. The three alternatives to error handling works little different and let us intercept the error handling in different stages in the process. First I am going to show you the ordinary @@ERRORcheck which most of you..
阅读全文
摘要:Update Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,这个在表间关联来做更新和删除操作非常有用. 列子:updatetb_Usersetpass=''fromtb_Userusrinnerjointb_Addressaddronusr.nAddressFK=addr.nAddressIDwhereusr.id=123update的格式是 update t1 set t1.name=’Liu’from t1inner join t2 on t1.id = t2.tid
阅读全文
摘要:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY 是相似的函数,因为它们都返回插入到标识列中的值。 IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。调用它时必须提供表示表名的字符型参数,你可以得到你想要的任何表的最后一个IDENTITY值,即使你的代码里没有插入动作。例如:IDENT_CURRENT('T1'); SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是,SCOPE_IDENTITY
阅读全文
摘要:一、数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的。 在一个系统分析、设计阶段,因为数据量较小,负荷较低。我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程。 所以在考虑整个系统的流程的时候,我们必须要考虑,在高并发大数据量的访问情况下,我们的系统会不会出现极端的情况。(例如:对外统计系统在7月 1
阅读全文
摘要:事务定义: 事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据更改均会 提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有 数据更改均被清除。 事务三种运行模式:自动提交事务每条单独的语句都是一个事务。显式事务每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。隐性事务在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句 显式完成。 事务操作的语法: BEGIN TRANSACTIONBEGIN DISTRIBUTED TRANSACTIONCOMMI
阅读全文
摘要:1.首先安装sql prompt 的原文件 2.找到sql Prompt 4.0安装目录, 把破解的注册码生成程序,拷贝进安装目录 。一般默认:【C:\Program Files\Red Gate\SQL Prompt 4】。3.断开网络,关闭vs mssql ,sql prompt 程序 4.运行注册码程序,先点1 ,然后点2,会生成注册码,此时不要关闭此程序5.运行mssql ,点击菜单 sql prompt 4 ,选择 serial Number ,输入注册码,点active6,因为没有联网,所以会提示错误,把所有错误信息复制到SQLPrompt 4 Keygen.exe 的 Acti.
阅读全文
摘要:在SQL Server 中,某列的数据都在int范围之内,但是使用sum聚集函数求该列和的时候,出现“将expression转化为数据类型int时发生算术溢出错误”。首先,我们先看看SQL Server 定义的数据类型的长度:bigint 数据类型存储从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 范围内的数字。存储大小为 8 个字节。 int 数据类型的存储范围是 -2,147,483,648 至 2,147,483,647(每个值需 4 个字节的存储空间)。 smallint 数据类型的存储范围只有 -32,768
阅读全文
摘要:始终认为,一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的。所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项。 一、分析阶段一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能是很重要的非功能性需求,必须根据系统的特点确定其实时性需求、响应时间的需求、硬件的配置等。最好能有各种需求的量化的指标。另一方面,在分析阶段应该根据各种需求区分出系统的类型,大的方面,区分是OLTP(联...
阅读全文
摘要:有时候在线的数据结构发生了变化,先备份以前的数据,然后再用一个脚本进行初始化。但是在删除带默认值的列的时候,脚本老是报错,google一下,这样就可以了:USEMyTestDB--先删除约束declare@namevarchar(20)select@name=b.namefromsysobjectsbjoinsyscolumnsaonb.id=a.cdefaultwherea.id=object_id('UserInfo')anda.name='NickName'exec('altertableUserInfodropconstraint'+@n
阅读全文
摘要:TRY...CATCH是SqlServer 2005/2008令人印象深刻的新特性.提高了开发人员异常处理能力.没有理由不尝试一下Try.. Catch功能.* TRY 块 - 包含可能产生异常的代码或脚本* CATCH 块 - 如果TRY块出现异常,代码处理流将被路由到CATCH块.在这里你可以处理异常,记录日志等.SqlServer中的Try Catch和C#,JAVA等语言的处理方式一脉相承.这种一致性才是最大的创新之处.SQLSERVER 2000中异常处理: CREATE PROC usp_AccountTransaction @AccountNum INT, @Amount DEC
阅读全文
摘要:使用游标有四种基本的步骤:声明游标、打开游标、提取数据、关闭游标。 如下面SQL示例所示:--=============================================--Author:<搏击的小船>--Createdate:<2011-04-19>--Description:<SQLSERVER游标DEMO>--=============================================--临时表CREATETABLE##TempTB(IDINTIDENTITY,ColAVARCHAR(50),ColBVARCHAR(50))
阅读全文
摘要:利用SQL生成随机字符串,在网上搜索了一下,各人有各人的实现方式,不过简单实用的实在是少。发现最简便的方式还是:[代码]在网上查看到的另外一种方式(很费事的说):先建立视图:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/******Object:View[dbo].[View_Rand]ScriptDate:02/18/201118:48:05******/--第一步,创建视图CREATEVIEW[dbo].[View_Rand]A
阅读全文
摘要:sql server中查询删除含有回车换行制表符的记录 -- 制表符 CHAR(9) -- 换行符 CHAR(10) -- 回车 CHAR(13) --在表aaa中过滤包含回车换行符的字段b的记录 select * from aaa where charindex(char(10)+char(13),b)>0 --在表aaa中把包含回车换行符的字段b的记录的回车换行符去掉 update aaa set b=replace(b,char(10)+char(13),'')
阅读全文
摘要:-===========字符串使用汇总================ --将字符串中从某个字符开始截取一段字符,然后将另外一个字符串插入此处 select stuff('hello,world!',4,4,'****') --返回值hel****orld! --返回从指定位置开始指定长度的字符串 select substring('Hello,World!',2,10) --返回值ello,World --将字符串中某段字符替换为指定的字符串 select replace('hello,world!','ll',
阅读全文
摘要:网上摘抄的:/*一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。--Alter function Get_StrArrayLengthcreate function Get_StrArrayLength( @str varchar(5000), --要分割的字符串 @split varchar(10) --分隔符号)returns intasbegin declare @location int declare @start int declare @length int set @str=ltrim(rtrim(@st
阅读全文
|