------------------------------------------------------<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

--功能:十六进制转换为文件号

--使用:SELECT dbo.convert_page_nums(0xCF0400000100)

------------------------------------------------------

CREATE FUNCTION convert_page_nums (@page_num binary(6))

RETURNS varchar(11)

AS

BEGIN

RETURN(convert(varchar(2), (convert(int, substring(@page_num, 6, 1))

* power(2, 8)) +

(convert(int, substring(@page_num, 5, 1)))) + ':' +

convert(varchar(11),

(convert(int, substring(@page_num, 4, 1)) * power(2, 24)) +

(convert(int, substring(@page_num, 3, 1)) * power(2, 16)) +

(convert(int, substring(@page_num, 2, 1)) * power(2, 8)) +

(convert(int, substring(@page_num, 1, 1)))) )

END

--------------------------------------------------------------------

--功能:签名函数

--作者:

--时间:年月日

--使用:

--SELECT dbo.fn_SQLSigTSQL

--  (N'SELECT * FROM dbo.T1 WHERE col1 = 3 AND col2 > 78', 4000);

-------------------------------------------------------------------

IF OBJECT_ID('dbo.fn_SQLSigTSQL') IS NOT NULL

DROP FUNCTION dbo.fn_SQLSigTSQL;

GO

CREATE FUNCTION dbo.fn_SQLSigTSQL

(@p1 NTEXT, @parselength INT = 4000)

RETURNS NVARCHAR(4000)

AS

BEGIN

DECLARE @pos AS INT;

DECLARE @mode AS CHAR(10);

DECLARE @maxlength AS INT;

DECLARE @p2 AS NCHAR(4000);

DECLARE @currchar AS CHAR(1), @nextchar AS CHAR(1);

DECLARE @p2len AS INT;

SET @maxlength = LEN(RTRIM(SUBSTRING(@p1,1,4000)));

SET @maxlength = CASE WHEN @maxlength > @parselength

THEN @parselength ELSE @maxlength END;

SET @pos = 1;

SET @p2 = '';

SET @p2len = 0;

SET @currchar = '';

set @nextchar = '';

SET @mode = 'command';

WHILE (@pos <= @maxlength)

BEGIN

SET @currchar = SUBSTRING(@p1,@pos,1);

SET @nextchar = SUBSTRING(@p1,@pos+1,1);

IF @mode = 'command'

BEGIN

SET @p2 = LEFT(@p2,@p2len) + @currchar;

SET @p2len = @p2len + 1 ;

IF @currchar IN (',','(',' ','=','<','>','!')

AND @nextchar BETWEEN '0' AND '9'

BEGIN

SET @mode = 'number';

SET @p2 = LEFT(@p2,@p2len) + '#';

SET @p2len = @p2len + 1;

END

IF @currchar = ''''

BEGIN

SET @mode = 'literal';

SET @p2 = LEFT(@p2,@p2len) + '#''';

SET @p2len = @p2len + 2;

END

END

ELSE IF @mode = 'number' AND @nextchar IN (',',')',' ','=','<','>','!')

SET @mode= 'command';

ELSE IF @mode = 'literal' AND @currchar = ''''

SET @mode= 'command';

SET @pos = @pos + 1;

END

RETURN @p2;

END

GO

------------------------------------------------

--功能:trace跟踪

--时间:年月日

-------------------------------------------------

SET NOCOUNT ON;

USE master;

GO

IF OBJECT_ID('dbo.sp_perfworkload_trace_start') IS NOT NULL

DROP PROC dbo.sp_perfworkload_trace_start;

GO

-- Creation script for the sp_perfworkload_trace_start stored procedure

CREATE PROC dbo.sp_perfworkload_trace_start

@dbid      AS INT,

@tracefile AS NVARCHAR(254),

@traceid   AS INT OUTPUT

AS

-- Create a Queue

DECLARE @rc          AS INT;

DECLARE @maxfilesize AS BIGINT;

SET @maxfilesize = 5;

EXEC @rc = sp_trace_create @traceid OUTPUT, 0, @tracefile, @maxfilesize, NULL

IF (@rc != 0) GOTO error;

-- Client side File and Table cannot be scripted

-- Set the events

DECLARE @on AS BIT;

SET @on = 1;

exec sp_trace_setevent @TraceID, 10, 1, @on

exec sp_trace_setevent @TraceID, 10, 3, @on

exec sp_trace_setevent @TraceID, 10, 11, @on

exec sp_trace_setevent @TraceID, 10, 35, @on

exec sp_trace_setevent @TraceID, 10, 12, @on

exec sp_trace_setevent @TraceID, 10, 13, @on

exec sp_trace_setevent @TraceID, 43, 1, @on

exec sp_trace_setevent @TraceID, 43, 3, @on

exec sp_trace_setevent @TraceID, 43, 11, @on

exec sp_trace_setevent @TraceID, 43, 35, @on

exec sp_trace_setevent @TraceID, 43, 12, @on

exec sp_trace_setevent @TraceID, 43, 28, @on

exec sp_trace_setevent @TraceID, 43, 13, @on

exec sp_trace_setevent @TraceID, 45, 1, @on

exec sp_trace_setevent @TraceID, 45, 3, @on

exec sp_trace_setevent @TraceID, 45, 11, @on

exec sp_trace_setevent @TraceID, 45, 35, @on

exec sp_trace_setevent @TraceID, 45, 12, @on

exec sp_trace_setevent @TraceID, 45, 28, @on

exec sp_trace_setevent @TraceID, 45, 13, @on

exec sp_trace_setevent @TraceID, 12, 1, @on

exec sp_trace_setevent @TraceID, 12, 3, @on

exec sp_trace_setevent @TraceID, 12, 11, @on

exec sp_trace_setevent @TraceID, 12, 35, @on

exec sp_trace_setevent @TraceID, 12, 12, @on

exec sp_trace_setevent @TraceID, 12, 13, @on

exec sp_trace_setevent @TraceID, 41, 1, @on

exec sp_trace_setevent @TraceID, 41, 3, @on

exec sp_trace_setevent @TraceID, 41, 11, @on

exec sp_trace_setevent @TraceID, 41, 35, @on

exec sp_trace_setevent @TraceID, 41, 12, @on

exec sp_trace_setevent @TraceID, 41, 13, @on

-- Set the Filters

DECLARE @intfilter AS INT;

DECLARE @bigintfilter AS BIGINT;

-- Application name filter

EXEC sp_trace_setfilter @traceid, 10, 0, 7, N'SQL Server Profiler%';

-- Database ID filter

EXEC sp_trace_setfilter @traceid, 3, 0, 0, @dbid;

-- Set the trace status to start

EXEC sp_trace_setstatus @traceid, 1;

-- Print trace id and file name for future references

PRINT 'Trce ID: ' + CAST(@traceid AS VARCHAR(10))

+ ', Trace File: ''' + @tracefile + '''';

GOTO finish;

error:

PRINT 'Error Code: ' + CAST(@rc AS VARCHAR(10));

finish:

GO

-----------------------------------------------

--功能:清理索引和统计信息

--时间:年月日

-----------------------------------------------

USE [MASTER]

GO

/****** 对象:  StoredProcedure [dbo].[spCleanIdx]    脚本日期: 10/26/2008 20:06:57 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[spCleanIdx]

@tabname nvarchar(150) -- 需要删除统计或索引的表

AS

/*

建立新的存储过程

*/

DECLARE @idx_name        nvarchar(150) -- 存放要删除的索引或统计的名称

DECLARE @drop_idx_string nvarchar(200) -- 存放动态组织而成的DROPS  index/stats 语法

--SET NOCOUNT ON

--  查看用户所指定的表是否存在

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES

WHERE table_type = 'base table' AND table_name = @tabname)

BEGIN

RAISERROR(N'表:''%s'' 并不存在',16, 1, @tabname)

RETURN (1)

END

SET @tabname = OBJECT_ID(@tabname)

IF EXISTS (SELECT id FROM sysindexes

WHERE id=@tabname AND indid BETWEEN 1 AND 254

AND status IN (96,10485856,8388704))

BEGIN

DECLARE idx_cursor CURSOR

FOR SELECT name FROM sysindexes

WHERE id=@tabname AND indid BETWEEN 1 AND 254

AND status IN (96,10485856,8388704)

OPEN idx_cursor

FETCH NEXT FROM idx_cursor INTO @idx_name

WHILE @@FETCH_STATUS = 0

BEGIN

SET @drop_idx_string = ('DROP STATISTICS '+OBJECT_NAME(@tabname)+'.'+@idx_name)

EXECUTE(@drop_idx_string)

FETCH NEXT FROM idx_cursor INTO @idx_name

END

CLOSE idx_cursor

DEALLOCATE idx_cursor

END

PRINT N'     *** 统计删除完毕***'

IF EXISTS (SELECT id FROM sysindexes

WHERE id=@tabname AND indid BETWEEN 1 AND 254

AND status NOT IN (96,10485856,8388704))

BEGIN

DECLARE idx_cursor CURSOR

FOR SELECT name FROM sysindexes

WHERE id=@tabname AND indid BETWEEN 1 AND 254

AND status NOT IN (96,10485856,8388704)

OPEN idx_cursor

FETCH NEXT FROM idx_cursor INTO @idx_name

WHILE @@FETCH_STATUS = 0

BEGIN

--确定要删除的索引不是当做Constraint

IF OBJECTPROPERTY (OBJECT_ID(@idx_name),'IsConstraint') IS NULL

BEGIN

SET @drop_idx_string = ('DROP INDEX '+OBJECT_NAME(@tabname)+'.'+@idx_name)

EXECUTE(@drop_idx_string)

END

FETCH NEXT FROM idx_cursor INTO @idx_name

END

CLOSE idx_cursor

DEALLOCATE idx_cursor

END

PRINT N'     *** 索引删除完毕***'

转载于:https://www.cnblogs.com/dbasys/archive/2008/11/03/2127565.html

sql server 2005 几个常用的存储过程或函数相关推荐

  1. Sql Server 2005 中的row_number() 分页技术

    原文发布时间为:2009-05-08 -- 来源于本人的百度文章 [由搬家工具导入] 在Sql Server 2005中,我们可以利用新增函数row_number()来更高效的实现分页存储 CREAT ...

  2. SQL Server 2005中的Row_Number分页

    早就听说了SQL Server 2005中的Row_Number分页了,但是一直就没认真理解这个Row_Number的含义.这两天实在是太忙了,但是还是坚持将这个弄明白了.在说分页之前还是来了解一下R ...

  3. [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)

    原文地址:http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx[原文×××] [翻译]使用C#创建S ...

  4. SQL Server 2005 常用数据类型详解

    SQL Server 2005 常用数据类型详解 [b]1. 字符串数据类型[/b] char 此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定:如未指定,默认为char(1).每个字 ...

  5. SQL Server 2005中创建CLR存储过程

    在2005之前的版本创建存储过程都是在数据库里面写Transact-SQL语言实现的,不过现在SQL Server 2005支持用其他面向对象的语言编写CLR存储过程了,关于这样做的好处,官方有很多解 ...

  6. 存储过程系列之调试存储过程 SQL Server 2005

    在数据库中直接调试   在数据库中直接调试是调试SQL Server 2005的存储过程的最简单的方法. 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地 ...

  7. SQL Server 2005: 存储过程签名

    SQLSERVER 2005提供的对存储过程签名(signature)功能是我最喜欢的. 如果我们要编写一个存储过程,执行该存储过程里的代码需要权限P,并且我们想要用户Alice可以执行这个存储过程, ...

  8. 转:配置 SQL Server 2005 远程调试存储过程

    VS调试SQL存储过程的时候提示被用户取消 问题:     您工作的本机装有Visual Studio 2005,局域网中有一台SQL Server 2005数据库服务器,你想通过本机远程调试SQL ...

  9. 在Visual Studio 2005中调试SQL Server 2005的存储过程

    介绍 SQL Server 2000可以让我们在查询分析器中直接调试存储过程( 更多的信息请参看:用SQL Server 2000的查询分析器调试存储过程) 到了现在的SQL Server 2005, ...

最新文章

  1. 2021厦门高考成绩查询,2021年厦门高考成绩排名查询,成绩什么时候可以查询
  2. python转成exe_将python程序转换成exe程序
  3. 原声php 读取excel乱码_使用PHPExcel读取Excel文件时会读出乱码
  4. Swift 中的指针使用
  5. java 日志乱码_【开发者成长】JAVA 线上故障排查完整套路!
  6. pandas 链接数据库
  7. dueros基于什么开发的_干货丨超详细!DuerOS开发套件申请攻略!
  8. 携程ELK日志分析平台深耕之路
  9. HCIE RS 2019.11.05面试战报
  10. zepto部分报错及解决方案
  11. 脱离极域电子教室软件控制策略(实测有效)
  12. 存储器容量的扩展 —— 位/字扩展
  13. unity 反编译 step1 disUnity
  14. Teleport Pro v1.72 中文破解版网页离线浏览工具下载
  15. 平面曲线的弧长和曲率
  16. 【word操作】论文页眉页脚设置
  17. MSN, 迅雷等调用小红伞作为杀毒软件的方法
  18. C++实现批量文件重命名
  19. Cesium之鼠标事件绑定和移除
  20. 计算机磁盘损坏问题与系统的重置和重装

热门文章

  1. php定时发送生日模块消息_RabbitMQ之消息的可靠性投递
  2. php长链接要配置,PHP链接到配置文件页面。 ?id =
  3. gulp安装指定版本_对比webpack,你更应该先掌握gulp【10分钟教你彻底掌握gulp】
  4. python 强制转换成字符_Python笔记(三)
  5. python-按照相同的顺序打乱
  6. ObjC学习8-重头戏来了!Foundation框架
  7. 十八年开发经验分享(二)问题解决篇(上)
  8. [2018.12.6]左偏树
  9. 11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号
  10. dubbo负载均衡代码分析2(一致性hash策略)