解密encrypt的存储过程
先建立这个SP,然后调用即可。[@more@]--破解函数,过程,触发器,视图.仅限于SQLSERVER2000 IF EXISTS (select 1 from dbo.sysobjects where id = object_id(N'[dbo].[SP_DECRYPT]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[SP_DECRYPT] GO CREATE PROCEDURE sp_decrypt(@objectname varchar(50)) AS begin set nocount on --破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器 --修正上一版视图触发器不能正确解密错误 begin tran declare @objectname1 varchar(100)
DISTINCT 和 TOP合用的执行顺序
DISTINCT 和 TOP合用,谁先起作用?[@more@]实验:IF (OBJECT_ID('tempdb..#tmp_a')) IS NOT NULL DROP table #tmp_aCREATE table #tmp_a (a int)insert into #tmp_a select 1insert into #tmp_a select 2insert into #tmp_a select 2insert into #tmp_a select 2insert into #tmp_a select 3select * from #tmp_aSELECT DISTINCT TOP 3 * from #tmp_a根据以上结果得知:系统先distinct运算再top运算。
监视 SQL Server 2000 阻塞
调用一个用户定义的SP,生成对阻塞的监控信息。对“sp_blocker_pss80”存储过程的下列描述可捕获此信息: •开始时间(视运行 SQL Server 的计算机而定),以便此阻塞采样在时间上可以与其他性能信息(如 Microsoft Windows NT 性能监视器日志或 SQL 事件探查器日志)一致。•有关与 SQL Server 的连接的信息,通过查询“sysprocesses”系统表获取。•有关锁定资源的信息,通过查询“syslockinfo”系统表获取。•有关资源等待的信息,通过运行 DBCC SQLPERF(WAITSTATS) 获取。•用于连接(被其他连接阻塞或者阻塞
剖析SQL Server 2005查询通知之基础篇
摘要 在本系列文章中,我们将深入探讨如何把.NET 2.0和SQL Server 2005的查询通知特征联合起来,以便通知应用程序何时关键数据发生变化进而达到消除反复查询数据库的目的。[@more@] 一. 引言 数据库应用程序的典型问题之一是更新陈旧的数据。 设想有一个典型的显示产品及其分类的电子商务网站。一个供应商的产品列表很可能并不经常发生变化,而其分类列表甚至更不会频繁更改。然而,在用户每次浏览该网站时,必须从数据库中反复查询这些列表。这显然是一种典型的低效资源利用,开发者和架构师都在绞尽脑汁想办法以减少这种浪费。
SQL Server 2005中的DDL触发器的实现
SQL SERVER 2005中,新增加了许多新的特性,其中的DDL触发器是个不错的选择,根据资料初步学习如下,现整理之: 在sql server 2000中,只能为针对表发出的 DML 语句(INSERT、UPDATE 和 DELETE)定义 AFTER 触发器。SQL Server 2005 可以就整个服务器或数据库的某个范围为 DDL 事件定义触发器。[@more@]可以为单个 DDL 语句(例如,CREATE_TABLE)或者为一组语句(例如,DDL_DATABASE_LEVEL_EVENTS)定义 DDL 触发器。在该触发器内部,您可以通过访问 eventdata() 函数获得与激发该触发器的事件有关的数据。该函数返回有关事件的 XML
SQL Server触发器
一 触发器基础二 对特定列的更改进行测试三 INSTEAD OF 触发器[@more@]一 触发器基础 什么是触发器?在SQL Server中,当对某一个表进行操作时,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。(SQL Server 2000定义了新的触发器,这里不提) 我为什么要使用触发器? 比如,这么两个表: Create Table Student( --创建学生表 StudentID int primary key, --学号,定义主键约束 .... ) Create Table BorrowRecord( -
取空ID的方法
在表中一系列的的纪录中,ID按照序列增长,如何找到空的ID呢?[@more@]CREATE TABLE [t] ( [a] [tinyint] NOT NULL , [b] [varchar] (100)) ON [PRIMARY]GO Insert into t (a,b) values ( 255, '255' ); Insert into t (a,b) values ( 1, '1' ); Insert into t (a,b) values ( 2, '2' ); Insert into t (a,b) values ( 4, '4' ); Insert into t (a,b) values ( 5, '5' ); Insert into t (a,b) values ( 8, '8' ); Insert into t (a,b) values ( 3, '3' ); 用以下SQL可得到第一个空ID:SELECT MIN(a) + 1 FROM t t1WHERE NOT EXISTS(
判断字符串中只包含或不包含某种字符的方法
通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用可达目的。[@more@]通过2个函数:CHARINDEX和PATINDEXCHARINDEX:查某字符(串)是否包含在其他字符串中,返回字符串中指定表达式的起始位置。PATINDEX:查某字符(串)是否包含在其他字符串中,返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。特殊:可以使用通配符!例子:1. 查询字符串中是否包含非数字字符SELECT PATINDEX('%[^0-9]%', '1235X461')SELECT PATINDEX('%[^0-9]%', '12350461')2. 查询字符串中是否包含数字字
全文索引和查询概念
(摘自http://faq.xunweb.org/itfaq/mssql2/2006-06-05/12902.html) faq-it.org/mysql/ [@more@]一 全文索引及查询概述全文索引、查询和同步化最主要的设计要求是,在注册进行全文检索的所有表上都有一个唯一的全文键列(或者单列主键)。全文索引对使用的重要字及其所在位置进行跟踪。 例如,假定有一个对 DevTools 表的全文索引。全文索引可能指出在 Abstract 列的第 423 个和第 982 个单词处找到了单词 Microsoft,所在的行与 ProductID 6 关联。该索引结构支持对所有包含被索引单词的项进行有效检索,以及高级检索操作,如短语检索和邻
读懂Windows虚拟内存问题
本文详细介绍了虚拟内存的设置和相关问题的解决方法。摘自:西安浩敏网络有限公司[@more@]网友必备 读懂Windows虚拟内存问题(1) 内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件
查询数据库对象所属的filegroup及相关SQL
查询了好多资料,也在网上搜索了很久,没有介绍这个的。最后通过研究sp_help系统存储过程,得到了答案。[@more@]在sysobjects系统表中,没有filegroup信息,只有sysindexes表中有groupid字段。当在SQL Server中新建一个表时,即使没有建立任何Index,系统都会为这个表在sysindexes生成一条记录。利用这个特性,用一下SQL可以查询出Table所在的filegourp信息:SELECT Data_located_on_filegroup = fg.groupname, Table_name = obj.nameFROM sysfilegroups fg, sysindexes idx, sysobjects objWHERE idx.id = obj.idAND obj.type in ('S ','
Transact_SQL小手册
语句、函数、语法等。[@more@]--语 句 功 能--数据操作SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行DELETE --从数据库表中删除数据行UPDATE --更新数据库表中的数据--数据定义CREATE TABLE --创建一个数据库表DROP TABLE --从数据库中删除表ALTER TABLE --修改数据库表结构CREATE VIEW --创建一个视图DROP VIEW --从数据库中删除视图CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引CREATE PROCEDURE --创
SQL Server日期计算
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。[@more@]在使用本文中的例子之前,你必须注意以下的问题。大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定。第一天(DATEF
在SQL Server 2005中实现表的行列转换
PIVOT和UNPIVOT关系运算符是SQL Server 2005提供的新增功能,因此,对升级到SQL Server 2005的数据库使用PIVOT和UNPIVOT时,数据库的兼容级别必须设置为90(可以使用sp_dbcmptlevel存储过程设置兼容级别)。[@more@]在查询的FROM子句中使用PIVOT和UNPIVOT,可以对一个输入表值表达式执行某种操作,以获得另一种形式的表。PIVOT运算符将输入表的行旋转为列,并能同时对行执行聚合运算。而UNPIVOT运算符则执行与PIVOT运算符相反的操作,它将输入表的列旋转为行。 在FROM子句中使用PIVOT和UNPIVOT关系运算符时的语法格式如下:[ FROM { <
sql server分组查询示例
sql server分组查询示例[@more@]create table Guest_info( GuestID int primary key, GuestName varchar(50), birthday datetime)create table Or_info( Order_id int identity(1,1) primary key, GuestID int foreign key REFERENCES Guest_info(GuestID), Isyes int -- 0:notOK 1:Ok 2:Cancel 3:Renege)select c.age, TotalCount=count(*), notOKCount=sum(case c.Isyes when 0 then 1 else 0 end) , cancelCount=sum(case c.Isyes when 2 then 1 else 0 end) , RenegeCount=sum(case c.Isyes when 3 then 1 else 0 end) , OKCo
代码实现数据库转换[sql2000VSDBF格式]
这里,就SqlServer,DBF两种格式的转化问题做个总结。[@more@]一: 从dBase文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select * fromopenrowset('MICROSOFT.JET.OLEDB.4.0','dBase 5.0;DATABASE=c:','select * from [test.dbf]')--如果导入数据并生成表select * into 表 fromopenrowset('MICROSOFT.JET.OLEDB.4.0','dBase 5.0;DATABASE=c:','select * from [test.dbf]')/*===========================
编程实现备份和还原数据库
下面备份还原都是用存储过程实现![@more@]if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_backupdb]GO/*--备份数据库的通用存储过程--邹建 2003.10--*//*--调用示例--备份当前数据库exec p_backupdb @bkpath='c:',@bkfname='DBNAME_DATE_db.bak'存储过程实现备份和还原数据库:if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop proc
SQLServer中需要经常用到的几个设置选项
SQLServer中需要经常用到的几个设置选项。[@more@]1. SET DEADLOCK_PRIORITY说明:控制在发生死锁情况时会话的反应方式。如果两个进程都锁定数据,并且直到其它进程释放自己的锁时,每个进程才能释放自己的锁,即发生死锁情况。语法:SET DEADLOCK_PRIORITY { LOW | NORMAL | @deadlock_var }参数:LOW指定当前会话为首选死锁牺牲品。Microsoft® SQL Server™ 自动回滚死锁牺牲品的事务,并给客户端应用程序返回 1205 号死锁错误信息。NORMAL指定会话返回到默认的死锁处理方法。@deadlock_var是指定死锁处理方法的字符变量。如果
sql server事务全攻略
摘自 豆豆技术http://www.ddvip.net/database/mssql/index2/71.htm[@more@]一 事务的属性 事务具有ACID属性 即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性 原子性 就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全 回滚,全部不保留 一致性 事务完成或者撤销后,都应该处于一致的状态 隔离性 多个事务同时进行,它们之间应该互不干扰.应该防止一个事务处理其他事务也要修改的数据时, 不合理的存取和不完整的读取数据 永久性 事务提交以后,所做的工作就被永久的保存下来 二
SQL Server 管理常用的SQL和T-SQL
SQL Server 数据库管理常用的SQL和T-SQL:[@more@]1. 查看数据库的版本 select @@version 常见的几种SQL SERVER打补丁后的版本号: 8.00.194 Microsoft SQL Server 2000 8.00.384 Microsoft SQL Server 2000 SP1 8.00.532 Microsoft SQL Server 2000 SP2 8.00.760 Microsoft SQL Server 2000 SP3 8.00.818 Microsoft SQL Server 2000 SP3 w/ Cumulative Patch MS03-031 8.00.2039 Microsoft SQL Server 2000 SP4 2. 查看数据库所在机器操作系统参数 exec master..x