热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sqlserver2005几个常用的存储过程或函数

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

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

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

--使用: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 (&#64;pos <&#61; &#64;maxlength)

  BEGIN

    SET &#64;currchar &#61; SUBSTRING(&#64;p1,&#64;pos,1);

    SET &#64;nextchar &#61; SUBSTRING(&#64;p1,&#64;pos&#43;1,1);

    IF &#64;mode &#61; &#39;command&#39;

    BEGIN

      SET &#64;p2 &#61; LEFT(&#64;p2,&#64;p2len) &#43; &#64;currchar;

      SET &#64;p2len &#61; &#64;p2len &#43; 1 ;

      IF &#64;currchar IN (&#39;,&#39;,&#39;(&#39;,&#39; &#39;,&#39;&#61;&#39;,&#39;<&#39;,&#39;>&#39;,&#39;!&#39;)

        AND &#64;nextchar BETWEEN &#39;0&#39; AND &#39;9&#39;

      BEGIN

        SET &#64;mode &#61; &#39;number&#39;;

        SET &#64;p2 &#61; LEFT(&#64;p2,&#64;p2len) &#43; &#39;#&#39;;

        SET &#64;p2len &#61; &#64;p2len &#43; 1;

      END

      IF &#64;currchar &#61; &#39;&#39;&#39;&#39;

      BEGIN

        SET &#64;mode &#61; &#39;literal&#39;;

        SET &#64;p2 &#61; LEFT(&#64;p2,&#64;p2len) &#43; &#39;#&#39;&#39;&#39;;

        SET &#64;p2len &#61; &#64;p2len &#43; 2;

      END

    END

    ELSE IF &#64;mode &#61; &#39;number&#39; AND &#64;nextchar IN (&#39;,&#39;,&#39;)&#39;,&#39; &#39;,&#39;&#61;&#39;,&#39;<&#39;,&#39;>&#39;,&#39;!&#39;)

      SET &#64;mode&#61; &#39;command&#39;;

    ELSE IF &#64;mode &#61; &#39;literal&#39; AND &#64;currchar &#61; &#39;&#39;&#39;&#39;

      SET &#64;mode&#61; &#39;command&#39;;

 

    SET &#64;pos &#61; &#64;pos &#43; 1;

  END

  RETURN &#64;p2;

END

GO

 

 

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

--功能&#xff1a;trace跟踪

--时间&#xff1a;年月日

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

 

 

SET NOCOUNT ON;

USE master;

GO

 

IF OBJECT_ID(&#39;dbo.sp_perfworkload_trace_start&#39;) 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

  &#64;dbid      AS INT,

  &#64;tracefile AS NVARCHAR(254),

  &#64;traceid   AS INT OUTPUT

AS

-- Create a Queue

DECLARE &#64;rc          AS INT;

DECLARE &#64;maxfilesize AS BIGINT;

 

SET &#64;maxfilesize &#61; 5;

 

EXEC &#64;rc &#61; sp_trace_create &#64;traceid OUTPUT, 0, &#64;tracefile, &#64;maxfilesize, NULL

IF (&#64;rc !&#61; 0) GOTO error;

 

-- Client side File and Table cannot be scripted

 

-- Set the events

DECLARE &#64;on AS BIT;

SET &#64;on &#61; 1;

exec sp_trace_setevent &#64;TraceID, 10, 1, &#64;on

exec sp_trace_setevent &#64;TraceID, 10, 3, &#64;on

exec sp_trace_setevent &#64;TraceID, 10, 11, &#64;on

exec sp_trace_setevent &#64;TraceID, 10, 35, &#64;on

exec sp_trace_setevent &#64;TraceID, 10, 12, &#64;on

exec sp_trace_setevent &#64;TraceID, 10, 13, &#64;on

exec sp_trace_setevent &#64;TraceID, 43, 1, &#64;on

exec sp_trace_setevent &#64;TraceID, 43, 3, &#64;on

exec sp_trace_setevent &#64;TraceID, 43, 11, &#64;on

exec sp_trace_setevent &#64;TraceID, 43, 35, &#64;on

exec sp_trace_setevent &#64;TraceID, 43, 12, &#64;on

exec sp_trace_setevent &#64;TraceID, 43, 28, &#64;on

exec sp_trace_setevent &#64;TraceID, 43, 13, &#64;on

exec sp_trace_setevent &#64;TraceID, 45, 1, &#64;on

exec sp_trace_setevent &#64;TraceID, 45, 3, &#64;on

exec sp_trace_setevent &#64;TraceID, 45, 11, &#64;on

exec sp_trace_setevent &#64;TraceID, 45, 35, &#64;on

exec sp_trace_setevent &#64;TraceID, 45, 12, &#64;on

exec sp_trace_setevent &#64;TraceID, 45, 28, &#64;on

exec sp_trace_setevent &#64;TraceID, 45, 13, &#64;on

exec sp_trace_setevent &#64;TraceID, 12, 1, &#64;on

exec sp_trace_setevent &#64;TraceID, 12, 3, &#64;on

exec sp_trace_setevent &#64;TraceID, 12, 11, &#64;on

exec sp_trace_setevent &#64;TraceID, 12, 35, &#64;on

exec sp_trace_setevent &#64;TraceID, 12, 12, &#64;on

exec sp_trace_setevent &#64;TraceID, 12, 13, &#64;on

exec sp_trace_setevent &#64;TraceID, 41, 1, &#64;on

exec sp_trace_setevent &#64;TraceID, 41, 3, &#64;on

exec sp_trace_setevent &#64;TraceID, 41, 11, &#64;on

exec sp_trace_setevent &#64;TraceID, 41, 35, &#64;on

exec sp_trace_setevent &#64;TraceID, 41, 12, &#64;on

exec sp_trace_setevent &#64;TraceID, 41, 13, &#64;on

 

-- Set the Filters

DECLARE &#64;intfilter AS INT;

DECLARE &#64;bigintfilter AS BIGINT;

-- Application name filter

EXEC sp_trace_setfilter &#64;traceid, 10, 0, 7, N&#39;SQL Server Profiler%&#39;;

-- Database ID filter

EXEC sp_trace_setfilter &#64;traceid, 3, 0, 0, &#64;dbid;

 

-- Set the trace status to start

EXEC sp_trace_setstatus &#64;traceid, 1;

 

-- Print trace id and file name for future references

PRINT &#39;Trce ID: &#39; &#43; CAST(&#64;traceid AS VARCHAR(10))

  &#43; &#39;, Trace File: &#39;&#39;&#39; &#43; &#64;tracefile &#43; &#39;&#39;&#39;&#39;;

 

GOTO finish;

 

error:

PRINT &#39;Error Code: &#39; &#43; CAST(&#64;rc AS VARCHAR(10));

 

finish:

GO

 

 

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

--功能&#xff1a;清理索引和统计信息

--时间&#xff1a;年月日

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

 

 

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]

    &#64;tabname nvarchar(150) -- 需要删除统计或索引的表

AS

 

/*

建立新的存储过程

*/

 

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

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

 

--SET NOCOUNT ON

 

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

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES

           WHERE table_type &#61; &#39;base table&#39; AND table_name &#61; &#64;tabname)

    BEGIN

       RAISERROR(N&#39;表&#xff1a;&#39;&#39;%s&#39;&#39; 并不存在&#39;,16, 1, &#64;tabname)

       RETURN (1)

    END

 

SET &#64;tabname &#61; OBJECT_ID(&#64;tabname)

IF EXISTS (SELECT id FROM sysindexes

       WHERE id&#61;&#64;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&#61;&#64;tabname AND indid BETWEEN 1 AND 254

               AND status IN (96,10485856,8388704)

   OPEN idx_cursor

   FETCH NEXT FROM idx_cursor INTO &#64;idx_name

     WHILE &#64;&#64;FETCH_STATUS &#61; 0

    BEGIN

       SET &#64;drop_idx_string &#61; (&#39;DROP STATISTICS &#39;&#43;OBJECT_NAME(&#64;tabname)&#43;&#39;.&#39;&#43;&#64;idx_name)

       EXECUTE(&#64;drop_idx_string)

       FETCH NEXT FROM idx_cursor INTO &#64;idx_name

    END

   CLOSE idx_cursor

   DEALLOCATE idx_cursor

END

PRINT N&#39;     *** 统计删除完毕***&#39;

 

IF EXISTS (SELECT id FROM sysindexes

       WHERE id&#61;&#64;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&#61;&#64;tabname AND indid BETWEEN 1 AND 254

               AND status NOT IN (96,10485856,8388704)

   OPEN idx_cursor

   FETCH NEXT FROM idx_cursor INTO &#64;idx_name

     WHILE &#64;&#64;FETCH_STATUS &#61; 0

    BEGIN

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

       IF OBJECTPROPERTY (OBJECT_ID(&#64;idx_name),&#39;IsConstraint&#39;) IS NULL

       BEGIN

          SET &#64;drop_idx_string &#61; (&#39;DROP INDEX &#39;&#43;OBJECT_NAME(&#64;tabname)&#43;&#39;.&#39;&#43;&#64;idx_name)

          EXECUTE(&#64;drop_idx_string)

       END

       FETCH NEXT FROM idx_cursor INTO &#64;idx_name

    END

   CLOSE idx_cursor

   DEALLOCATE idx_cursor

END

PRINT N&#39;     *** 索引删除完毕***&#39;




推荐阅读
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 函数:每个DBMS都有特定的函数。举例说明:DBMS函数的差异函数语法提取串的组中部分数据类型转换Access使用MID(); ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 开发笔记:select from具体执行相关知识介绍及案例分析
    本文由编程笔记小编整理,主要介绍了select from具体执行相关的知识,包括数据插入、查询最小rowID、查询每个重复名字的最小rowID、删除重复数据等操作,并提供了案例分析。希望对读者有一定的参考价值。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • Mysql调优的顺序及面试问题总结
    文章目录一、调优相关1.第一步:本地explain线上查询遇到的第一个坑:遇到的第二个坑:2.第二步:覆盖索引3.第三步&# ... [详细]
author-avatar
谁会心如刀割_590
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有