这一篇我们来捋捋在T-SQL中可能会用到的几个特殊的函数 1. 随机数: RAND 返回从 0 到 1 之间的随机 float 值. 语法: RAND ( [ seed ] ) seed 提供种子值的整数表达式(tinyint.smallint 或 int).如果未指定 seed,则 Microsoft SQL Server 数据库引擎 随机分配种子值.对于指定的种子值,返回的结果始终相同. 随机数是我们经常会用到的,几乎所有的语言都支持产生随机数.而且函数都差不多.例如在VBA和VB中也是用R…
用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(Table-Valued Function).其中表值函数又分为Inline table-valued functions和Multistatement table-valued functions. 用户定义函数(UDF)在 SQL Server 中发挥重要的作用.用户定义函数可以用于执行复杂的逻辑…
谈完并行执行的原理,咱们再来谈谈优化,到底并行执行能给我们带来哪些好处,我们又应该注意什么呢,下面展开. Amdahl’s  Law 再谈并行优化前我想有必要谈谈阿姆达尔定律,可惜老爷子去年已经驾鹤先去了.…
declare @M int,@N int set @m=10 set @n=1 select top 10 cast(rand(checksum(newid()))*(@M-@N)+@n as int) from t_table…
SQL开发中会有生成随机数的需求,下面说几种常用的需求和解决办法(基于MS SQL),最后总结出通用的办法: 1.0-9间的随机整数,包括0和9本身: abs(checksum(newid()))%10 扩展从a-b间的随机整数(a,b本身也是整数): a+abs(checksum(newid()))%(b-a+1) 2.0-1间的随机实数: rand() --或是 rand(checksum(newid())) --推荐使用后一种. 由此扩展从a-b间的随机实数: a+rand(checksu…
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 这篇文章会列出导致事务日志过度增长的常见的问题和错误管理形式,包括: 在完整恢复模式里,没有进行日志备份 进行索引维护 长时间运行或未提交的事务阻止事务日志里空间重用 当然,如果增长没检查,日志文件会扩展直到吞没所有可用磁盘空间或日志文件的最大大小,在这个时候你…
日常的OLTP环境中,有时会涉及到一些统计方面的SQL语句,这些语句可能消耗巨大,进而影响整体运行环境,这里我为大家介绍如何利用SQL Server中的”类MapReduce”方式,在特定的统计情形中不牺牲响应速度的情形下减少资源消耗. 我们可能经常会利用开窗函数对巨大的数据集进行分组统计排序.比如下面的例子: 脚本环境 /* This script creates two new tables in AdventureWorks: dbo.bigProduct dbo.bigTransacti…
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 它不会经常提起,除非你的数据库运行在简单(SIMPLE)恢复模式,在事务日志上定期备份非常重要的.这会控制事务日志大小,并且保证,在灾难发生里,你可以恢复你的数据库到灾难发生前的某个时间点.这些日志备份要和定期的完整数据库(数据文件)备份一起. 如果你在测试数据…
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 虽然我们想回避它,去讨论下事务日志的内部结构和内部运行机制,但适当的理解下日志维护技术是有益的.这个话题在Paul Randal的讲座<理解SQL Server里的日志和恢复>里已经讲得很透彻,另外Kalen Delaney的<深入解析Microsoft…
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会告诉你每个DBA应该知道的具体细节. 事务日志是存储对应数据库所有事务和数据修改记录的文件(每个数据库都有对应的日志文件).在造成SQL Server意外关闭的灾难事件里,例如实例或硬件故障,事务日志用来恢复数据库,用来保证数据的完好无损(完整性).在重启前,数据库进入恢复过程,事务日志被读取保证所…
(1) try catch 配合 Transactions 使用 --打开try catch功能 set xact_abort on begin try begin tran ) commit tran print 'commited' end try begin catch rollback print 'rolled back' end catch (2)获取当前月前一个月有多少天(DatePart( date ,  datetime)  DateAdd(date , 数字 ,datetim…
1.修改时间的秒和微秒 create table a (Dtime datetime);insert into aselect '2013-08-30 17:59:35' union allselect '2013-09-01 17:59:35' union allselect '2013-09-02 17:59:35' union allselect '2013-09-03 18:59:35' select * from a update a set Dtime=dateadd(ss,(ran…
--0042-9923-3598 select id = right('000000000000' + cast(cast(rand(checksum(newid()))*1000000000000 as bigint) as varchar),12) from Order…
create database MyDatabseOne; --创建数据库 drop database MydatabaseOne; --删除数据库; --如果直接点"执行"将是执行所有语句,而选中某些则是单独执行 --以下代码创建数据库的初始值 create database MydatabaseOne --创建数据库 on primary ( --配置主数据文件 name='MydatabaseOne', --主数据文件的逻辑名称 filename='C:\Users\Rao\De…
第一种:select cast(ceiling(rand() * 10) as int)第二种:select cast(ceiling(rand(checksum(newid()))*10) as int) 在update的时候,如果想要每一行都设置不一样的随机数,需要用 第二种方法.…
有2个办法拆分比较大的数据库. 1.重建聚集索引2.收缩数据库 一.准备测试数据 )) go insert into blocktable(blockno,binno,rack,chipcount,machineno) ) ) as int), ) ,' from master..spt_values select * from blocktable insert into blocktable select * from blocktable drop table blocktable sel…
declare @T TABLE (id int identity(1,1),[Name] nvarchar(20), Randnum int) insert @T ([Name]) select 'A1' union all select 'A2' union all select 'A3' union all select 'A4' union all select 'A5' union all select 'A6' union all select 'A7' union all sele…
) as int) as RndId from 表名…
源自: http://www.sqlservercentral.com/articles/Stairway+Series/73779/ 作者: Tony Davis, 2011/09/07 翻译:刘琼滨 谢雪妮 许雅莉 赖慧芳 译文: 该系列 本文是楼梯系列的一部分:SQL Server中的事务日志管理的阶梯 当事情进展顺利时,不需要特别意识到事务日志是做什么的,或者它是如何工作的.您只需确信每个数据库都有正确的备份机制.当事情出错时,对事务日志的理解对于采取纠正措施是非常重要的,特别是当需要一…
SQL Server中的事务日志管理的阶梯,级别1:事务日志概述 翻译:刘琼滨 谢雪妮 许雅莉 赖慧芳 级别1:事务日志概述 事务日志是一个文件,其中SQL服务器存储了所有与日志文件关联的数据库执行的所有事务和数据修改的记录.如果发生了导致SQL服务器意外关闭的灾难,比如实例或硬件故障,则使用事务日志恢复数据库,并在tact中使用数据完整性.在重新启动时,数据库进入一个恢复过程,其中读取事务日志以确保所有有效的.提交的数据被写入到数据文件(向前滚),以及任何部分.未提交的事务被撤销(回滚).简而…
本文是用于记录自己平时遇到的一些SQL问题或知识点,以便以后自己查阅,会持续的更新,增加内容.发在博客园也可以和各位博友共同学习交流,如文中记录的有错误之处希望指出,谢谢. 一.用SQL语句调用作业 USE msdb EXEC sp_start_job @job_name = '作业名称' 二.SQL语句中GO语句 1.GO的解释 官方文档:GO只是SQL Server管理器(SSMS)中用来提交T-SQL语句的一个标志. 解释:GO向SqlServer实用工具发出一批Transact-SQL语…
分享一下我研究SQLSERVER以来收集的笔记 前言 为什麽分享??因为像现在网上很多人攻城师那样,转行去卖水果,卖早餐,总有一日我也会离开这个行业的 由于本人不是在大公司上班工资很低,我希望有一天存到足够的钱离开这个行业,然后开一个面包店(现时的想法/梦想) 因为我知道开面包店还是可以实现的,相比起其他的梦想和想法来说,难度不是太大 做一个面包师傅,能看到每个食到自己做的面包的人的微笑,你说幸福不是从这里来的吗? 把自己所学到的东西分享出来,最起码自己曾经对SQLSERVER圈子作出过小小贡献…
    工作中会遇到SQL Server模拟数据生成以及数值列值(如整型.日期和时间数据类型)随机填充等等任务,这些任务中都要使用到随机数.鉴于此,本文将对SQL Server中随机数的使用简单做个总结 .   T-SQL 随机有关的三个函数          RAND([seed] 此函数生成从0到1之间随机 float 值(详细说明查看https://technet.microsoft.com/zh-cn/library/ms177610(v=sql.90).aspx).   CHECKSU…
最近在论坛看到有人问,如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的: 1.    如何生成8位随机数,生成的数越随机,重复的可能性当然越小 2.    控制不重复 3.    考虑性能 针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 */ USE tempdb GO --创建测试表 CREATE TABLE tb(id char(8)) --创建用于自动过滤重复值的唯一索引 CREATE UNIQUE INDEX IX_tb ON tb(id) W…
内存优化表是 SQLServer 2014 的新功能,它是可以将表放在内存中,这会明显提升DML性能.关于内存优化表,更多可参考两位大侠的文章:SQL Server 2014新特性探秘(1)-内存数据库 试试SQLSERVER2014的内存优化表 创建内存优化表也很简单,以下测试: 添加内存优化数据库文件组:[sql] view plain copy 在CODE上查看代码片派生到我的代码片USE [master] GO -- 在当前数据库中添加内存优化数据库文件组(每个数据库仅1个文件组) AL…
百度了各种随机生成,集中摘录如下: 一.循环写入千万级测试数据 DECLARE @i int ) BEGIN INSERT INTO A_User(username,password,addtime,token,roleid) ), ) ), ), ) ) as int)) END GO 二.生成一段时间内的随机时间 --生成一段时间内的随机时间 declare @Date_start datetime declare @Date_end datetime set @Date_start= '2…
如果采用insert into 循环一条一条插入速度比较慢 可以先将数据插入临时表,然后在临时表数据量到达批量插入的行数时执行例如:目标表 (col1,col2,col3) --根据目标表结构复制一个临时表 declare @n int begin insert #temp(col1,col2,col3) values ( NEWID(), )),), CAST(ABS(CHECKSUM(newID()))%CAST( cast('2003-10-01' as datetime)-cast('1…
SELECT SUBSTRING(N'王李张刘陈杨黄赵吴周徐孙马朱胡郭何高林郑谢罗梁宋唐许韩冯邓曹彭曾肖田董袁潘于蒋蔡余杜叶程苏魏吕丁任沈姚卢姜崔钟谭陆汪范金石廖贾夏韦付方白邹孟熊秦邱江尹薛闫段雷侯龙史陶黎贺顾毛郝龚邵万钱严覃武戴莫孔向汤', (),)) ) as int))+ ) ) as int)) AS CNAME, , ) ) AS TEL 名字部分有不少生僻字,不过测试数据的话,勉强用用吧…
一个分页的问题,DTCms3.0中,分页是根据时间分页的,如果当添加时间(add_time)都是同一个数值时,不管点击第几页,显示的数据都是同一个的内容,于是就有了需要把同一个时间改指定随机日期的功能. 原贴脚本转至http://bbs.csdn.net/topics/340165720 第7楼的feilniu同学. SQL脚本如下:  AND 100  生成的内容为: id random_datetime 3 2015-07-05 07:55:10.000 4 2015-07-08 06:15…
1.比较常见和好用的一种 SELECT TOP 10 *, NEWID() AS randomFROM tableORDER BY random --newid函数会随机生成一个guid,很长的一个字符串,我们可以利用它进行随机取数 2.比较快速的一种() --Declare @d Datetime --Set @d=getdate() SELECT Top 1* FROM users WHERE 0.01 >= CAST(CHECKSUM(NEWID(), uid) & 0x7ffffff…