05 2012 档案
摘要:--动态处理select A.StuName,A.BZKTypeName,cast(A.BKCODE as varbinary(MAX)) even, row_number() over (partition by StuName,BZKTypeName order by getdate()) ID into #t1 from BKLIST A --where StuName='林健辉' declare @sql1 varchar(max) declare @sql2 varchar(max) declare @id int declare @maxid int select
阅读全文
摘要:1.只有关联条件有非聚集索引--清空缓存DBCC FREEPROCCACHE WITH NO_INFOMSGSDBCC FREESESSIONCACHE WITH NO_INFOMSGSDBCC FREESYSTEMCACHE('All') WITH NO_INFOMSGSDBCC DROPCLEANBUFFERS WITH NO_INFOMSGSSET NOCOUNT onCREATE TABLE #result(状态 varchar(20),[id(毫秒)] INT,[guid(毫秒)] INT)DECLARE @start INTDECLARE @end INTSET @
阅读全文
摘要:【sqlserver】:sqlserver 认为 null 最小。升序排列:null 值默认排在最前。要想排后面,则:order by case when col is null then 1 else 0 end ,col降序排列:null 值默认排在最后。要想排在前面,则:order by case when col is null then 0 else 1 end , col desc【oracle】:oracle认为 null 最大。升序排列,默认情况下,null值排后面。降序排序,默认情况下,null值排前面。有几种办法改变这种情况:(1)用 nvl 函数或decode 函数 将n
阅读全文
摘要:--生成码表if exists (select * from dbo.sysobjects where id = object_id(N'[codetable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [codetable]GOdeclare @j varchar(8000),@f varchar(8000)select @j='一乙二十丁厂七卜人入八九几儿了力乃刀又三于干亏士工土才寸下大丈与万上小口巾山千乞川亿个勺久凡及夕丸么广亡门义之尸弓己已子卫也女飞刃习叉马乡丰王井开夫天无元专
阅读全文
摘要:declare @class varchar(max)= dbo.super_GetSubClass1(378,default,default); set statistics io on set statistics time on -- XML SELECT B.value FROM ( SELECT [values] = CONVERT(xml,'<root><v>'+REPLACE([values],',', '</v><v>') +'</v></root>&
阅读全文
摘要:问题描述:有表tb,如下:idvalues----------- -----------1aa,bb2aaa,bbb,ccc欲按,分拆values列,分拆后结果如下:idvalue----------- --------1aa1bb2aaa2bbb2ccc1.旧的解决方法SELECTTOP8000id=IDENTITY(int,1,1)INTO#FROMsyscolumns a,syscolumns bSELECTA.id,SUBSTRING(A.[values],B.id,CHARINDEX(',',A.[values]+',',B.id)-B.id)FROM
阅读全文
摘要:数据类型范围存储bigint-2^63(-9,223,372,036,854,775,808)到2^63-1(9,223,372,036,854,775,807)8字节int-2^31(-2,147,483,648)到2^31-1(2,147,483,647)4字节smallint-2^15(-32,768)到2^15-1(32,767)2字节tinyint0到2551字节money-922,337,203,685,477.5808到922,337,203,685,477.58078字节smallmoney-214,748.3648到214,748.36474字节decimal...
阅读全文
摘要:with tiesWITH TIES指定从基本结果集中返回额外的行,对于 ORDER BY 列中指定的排序方式参数,这些额外的返回行的该参数值与 TOPn(PERCENT) 行中的最后一行的该参数值相同。只能在 SELECT 语句中且只有在指定了 ORDER BY 子句之后,才能指定 TOP...WITH TIES。注意:返回的记录关联顺序是任意的。ORDER BY不影响此规则来源:MSDN,http://msdn.microsoft.com/zh-cn/library/ms189463.aspx通俗解释如果按照order by 参数排序TOP n(PERCENT)返回了前面n(pencent
阅读全文
摘要:今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起。后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的。本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语法不去深究了,只是把几个例子实际运行,剖析一番。 使用merge同时执行insert和update操作我们经常会有这样的需求,根据某个字段或多个字段查找表中的一行或多行数.
阅读全文
摘要:SET QUOTED_IDENTIFIER ONSELECT * FROM "student" WHERE stuname='江玉婷' SET QUOTED_IDENTIFIER ONSELECT * FROM [student] WHERE stuname='江玉婷' SET QUOTED_IDENTIFIER OFFSELECT * FROM [student] WHERE stuname='江玉婷' SET QUOTED_IDENTIFIER OFFSELECT * FROM [student] WHERE stunam
阅读全文
摘要:--SQLServer2008中新增功能:可以使用单个Insert命令插入多行。CreatetableDemo_Values(PKIDintnotnullidentity(1,1)primarykey,DNameNvarchar(20)null,DCodeNVarchar(30)null,DDatedatetimenull)go--thisSQLisonlyforSQLServer2008InsertintoDemo_Values(DName,DCode,DDate)values('DemoA','AAA',GETDATE()),('DemoB'
阅读全文
摘要:--链接服务器"LINK_110"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。--消息 7391,级别 16,状态 2,第 4 行--无法执行该操作,因为链接服务器 "LINK_110" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。
阅读全文
摘要:SQL Server 2008中SQL应用系列--目录索引 如果是在SQL 2000中,我们需要读取分层结构数据时,不得不借助递归。在SQL server 2005中,我们可以使用CTE,当然,好的数据结构设计可以避免你使用CTE,请看这里:http://www.cnblogs.com/downmoon/archive/2009/10/23/1588405.html如果你是一个数据库设计新手,那么在sql server 2008中可以使用新的原生分层结构数据hierarchyid。关于它的详细说明,请看MSDN:http://msdn.microsoft.com/zh-cn/library/b
阅读全文
摘要:简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能。但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过。所以本文并不会深入讨论这些主题。索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 精简来说,索引是一种结构.在SQL Server中,索引和表(这里指的是加了聚集索引的表)的存储结构是一样的,都是B树,B树是一
阅读全文
摘要:create procedure SP_GET_TABLE_INFO @ObjName varchar(128) /* The table to generate sql script */as declare @Script varchar(255)declare @ColName varchar(30)declare @ColID TinyIntdeclare @UserType smallintdeclare @TypeName sysnamedeclare @Length smallintdeclare @Prec smallintdeclare @Scale smallintdecl
阅读全文
摘要:SET NOCOUNT ON DECLARE @tbname VARCHAR(30)SET @tbname = '用户档案'DECLARE @columns TABLE ( id INT, NAME VARCHAR(30) )INSERT @columns SELECT ROW_NUMBER() OVER ( ORDER BY columns.object_id ) id, columns.NAME FROM sys.columns JOIN sys.objects ON columns.obje...
阅读全文
摘要:昨天有人在群里讨论SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY,在些作个标记和小结。 其实MSDN对此有官方解释:这三个函数都返回最后生成的标识值。 但是,上述每个函数中定义的“最后”的作用域和会话有所不同。 1、IDENT_CURRENT 返回为某个会话和当前作用域中的指定表生成的最新标识值。 如果 IDENT_CURRENT 值为 NULL(因为表从未包含行或已被截断),IDENT_CURRENT 函数将返回种子值。 2、@@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。...
阅读全文
摘要:MS SQL Server:DDL触发器DDL触发器 (本文转摘于网络)1. DDL Trigger触发事件总汇:在创建用来监视并响应该数据库或服务器实例中的活动的事件通知时,可以指定相应事件类型或事件组。DDL_DATABASE_LEVEL_EVENTS包括: DDL_TRIGGER_EVENTS, DDL_FUNCTION_EVENTS, DDL_SYNONYM_EVENTS, DDL_SSB_EVENTS, DDL_DATABASE_SECURITY_EVENTS, DDL_EVENT_NOTIFICATION_EVENTS, DDL_PROCEDURE_EVENTS, ...
阅读全文
摘要:CREATE TABLE [dbo].[Student2]([StuID] [int] NULL,[StuNum] [varchar](50) SPARSE NULL,[StuNamePY] [varchar](50) SPARSE NULL,[StuNameWB] [varchar](50) SPARSE NULL,[StuName] [varchar](50) SPARSE NULL,[IDNumber] [varchar](18) SPARSE NULL,[FileNo] [varchar](50) SPARSE NULL,[DocType] [varchar](50) SPARSE N
阅读全文
摘要:declare @TableType varchar(max) = ''declare @tablename varchar(max)set @tablename='student'select @TableType=@TableType+case when types.name in ('varchar','nvarchar','char','nchar','varbinary')then 'declare @'+columns.name+''+&#
阅读全文
摘要:在做SQL Server 2005 的群集维护时, 碰到了这样一个问题:当资源组在一个节点上的时候, 用sa登录数据库, 从management studio中查看用户数据库的属性, 正常; 但是将资源组转移到另一个节点时, 用sa登录数据库, 从management studio中查看用户数据库的属性, 却报如下错误:标题: Microsoft SQL Server Management Studio------------------------------无法显示请求的对话框。------------------------------其他信息:无法显示请求的对话框。 (SqlMgmt)
阅读全文
摘要:在论坛上看到这样一个帖子, 原文如下:在我的SQL Server2008R2上, 试了一下, 果然是这样, 转换成numeric时报错..看样子很奇怪, 明明函数ISNUMBERIC的返回值是1, 但是转换却不成功, 为什么呢?查了一下BOL, 发现如下的解释:ISNUMBERIC函数判断表达式是否是以下类型之一:intrealnumericbigintmoneysmallintsmallmoneytinyintfloatdecimal看样子ISNUMBERIC不只判断是否是NUMBERIC类型, 也判断其他如money等类型.试了一下转换成money型, 结果就没有报错, 语句如下:SELE
阅读全文
摘要:-得到事务回滚,数据库备份/还原预计需要的时间SELECT session_id --回滚的进程ID, 可以用dbcc inputbuffer (spid) 来查询进程所做的操作 ,start_time--进程开始command的时间 ,status--进程状态 ,Command--进程执行的命令 ,DB_NAME(database_id) AS 'database_name'--进程涉及的数据库 ,USER_NAME(user_id) AS 'USER_NAME'--提交进程的用户 ,blocking_session_id--阻塞该进程的进程ID ,wait_
阅读全文
摘要:前几天碰到一个问题, SQL Server 2008 SP2 上的一个检查数据库完整性的维护计划失败了, 这个维护计划没有过任何的修改.先查看一下执行这个维护计划的job的历史, 有类似以下的报错:Executing query "DECLARE @Guid UNIQUEIDENTIFIER EXECUTE msdb..sp...".: 100% completeEnd Progress DTExec: The package execution returned DTSER_FAILURE (1).Started: 10:14:30 AM Finished : 10:14
阅读全文
摘要:set nocount ondeclare @lock table(spid int,dbid int,objid int,indid int,type varchar(6),resource varchar(max),mode varchar(200),status varchar(200))declare @loclinfo table(EventType varchar(max),Parameters int,EventInfo varchar(max))declare @sql table (sql varchar(max))insert @lock exec sys.sp_lock;
阅读全文
摘要:declare @TableType varchar(max) =''declare @tablename varchar(max)set @tablename='student'select @TableType=@TableType +case when types.name in ('varchar','nvarchar','char','nchar','varbinary') then '['+columns.name+']'+' &#
阅读全文
摘要:最近在项目中进行压力测试遇到了数据库的死锁问题,简言之,如下的代码在 SERIALIZABLE 隔离级别造成了死锁:?1234567891011121314SELECT @findCount=COUNT(id) FROM MyTableWHERE [fk_related_id]=@ArgumentIF (@findCount > 0)BEGINROLLBACK TRANSACTIONRETURN ERROR_CODEENDINSERT INTO MyTable ([fk_related_id],…)VALUES (@Argument,…)COMMIT TRANSACTIONRETURN
阅读全文
摘要:CLR函数脚本---------------------------------------------------------------------------------using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using System.Collections;/// <summary>/// 用户自定CLR 函数,用来生成一个序列/// </summary>public
阅读全文
摘要:“在 master 数据库中记录的数据库所有者 SID 与在数据库 '**' 中记录的数据库所有者 SID 不同。应该通过使用 ALTER AUTHORIZATION 语句重置数据库 '*' 的所有者来更正此情况。 ” 解决:Sp_changedbowner 'sa',true --sa为需要使用的用户名,在相应的数据库中执行即可
阅读全文
摘要:一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值 对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为 object类型,所以Hashtable可以支持任何类型的keyvalue键值对.二,哈希表的简单操作在哈希表中添加一个keyvalue键值对:HashtableObject.Add(key,value);在哈希表中去除某个keyvalue键值对:Hashtabl
阅读全文
摘要:Float and RealApproximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly. The ISO synonym forrealisfloat(24).Data typeRangeStoragefloat- 1.79E+308 to -2.23E-308, 0 and 2.23E-3
阅读全文
摘要:decimal数据类型最多可存储38个数字,所有数字都能够放到小数点的右边。decimal数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。定义decimal的列、变量和参数的两种特性如下:p 小数点左边和右边数字之和,不包括小数点。如123.45,则p=5,s=2。指定精度或对象能够控制的数字个数。s指定可放到小数点右边的小数位数或数字个数。p和s必须遵守以下规则:0 <=s<=p<= 38。numeric和decimal数据类型的默认最大精度值是38。在Transact-SQL中,numeric与decimal数据类型在功能上等效。当数据值一定要按照指定精确存
阅读全文