浏览模式: 普通 | 列表
分类: Sql Server | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | >
将多个查询合并输出,每个查询调用不同的显示页
select top 50 Id,Title,Addtime,url='news1-detail.aspx' from New1

union ( SELECT top 50 Id,Title,Addtime,url='news2-detail.aspx' FROM news2 WHERE isdel=0 order by addtime desc )
union ( SELECT top 50 Id,Title,Addtime,url='news3-detail.aspx' FROM news3 WHERE isdel=0 order by addtime desc )

ORDER BY Addtime DESC
p.s. 阻塞的情况下,用sp_who 和sp_lock 就可以看出是哪些对象竞争比较严重,但是对于dreamweaver自动代码 sp_prepexec;1 却无效了

问题:
引起进程阻塞原sql命令:sp_execute;1
sp_prepexec;1
无法找到引起sql语句,或是插入如个表,或是查询哪个表,都不是很明确


解决办法:

你这是2000的还是2005的?
sp_execute 表明该语句通过ADO进行连接的。
先打开查询分析器,选择master数据库

在2005下面通过如下方法试试看:
select text
from sys.dm_exec_requests
cross apply sys.dm_exec_sql_text(plan_handle)
where session_id = *
...

阅读全文…

NOLOCK

[ 2010-08-09 10:32:36 | 作者: admin ]
大家在写查询时,为了性能,往往会在表后面加一个nolock,或者是with(nolock),其目的就是查询是不锁定表,从而达到提高查询速度的目的。这点可能很多朋友在做开发时都会遇到,不过如果说系统中的每个查询语句中的表都加上nolock,您是否同意这么做呢?什么是并发访问:同一时间有多个用户访问同一资源,并发用户中如果有用户对资源做了修改,此时就会对其它用户产生某些不利的影响,例如:  1.脏读
  一个用户对一个资源做了修改,此时另外一个用户正好读取了这条被修改的记录,然后,第一个用户放弃修改,数据回到修改之前,这两个不同的结果就是脏读。
  2.不可重复读
  一个用户的一个操作是一个事务,这个事务分两次读取同一条记录,如果第一次读取后,有另外用户修改了这个数据,然后第二次读取的数据正好是其它用户修改的数据,这样造成两次读取的记录不同,如果事务中锁定这条记录就可以避免。
...

阅读全文…

SQL with(unlock)与with(readpast)

[ 2010-08-09 09:44:57 | 作者: admin ]
所有Select加 With (NoLock)解决阻塞死锁,在查询语句中使用 NOLOCK 和 READPAST
处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAST 。有关 NOLOCK 和 READPAST的一些技术知识点:
对于非银行等严格要求事务的行业,搜索记录中出现或者不出现某条记录,都是在可容忍范围内,所以碰到死锁,应该首先考虑,我们业务逻辑是否能容忍出现或者不出现某些记录,而不是寻求对双方都加锁条件下如何解锁的问题。
NOLOCK 和 READPAST 都是处理查询、插入、删除等操作时候,如何应对锁住的数据记录。但是这时候一定要注意NOLOCK 和 READPAST的局限性,确认你的业务逻辑可以容忍这些记录的出现或者不出现:
简单来说:

NOLOCK 可能把没有提交事务的数据也显示出来.
READPAST 会把被锁住的行不显示出来
...

阅读全文…

处理死锁的存储过程

[ 2010-07-29 14:21:34 | 作者: admin ]
/*--处理死锁

查看当前进程,或死锁进程,并能自动杀掉死进程

因为是针对死的,所以如果有死锁进程,只能查看死锁进程
当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程

--邹建 2004.4--*/

/*--调用示例

exec p_lockinfo
--*/
create proc p_lockinfo
@kill_lock_spid bit=1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示
@show_spid_if_nolock bit=1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示
as
declare @count int,@s nvarchar(1000),@i int
select id=identity(int,1,1),标志,
...

阅读全文…

VARCHAR类型造成SQL SERVER经常死锁

[ 2010-07-29 14:18:21 | 作者: admin ]
SQL SERVER死锁的问题断断续续追踪了两三个星期,终于有个初步的判断:有一个SELECT语句和一个UPDATE语句需要获取大量的锁。死锁应该与之相关。
应用程序在SQL中为每个传入的字符串参数加了N,表示是unicode字符串。在参数与相应的列进行匹配的时候,如果该列不是NVARCHAR而是VARCHAR类型,则SQL SERVER要对该列的数据进行转换,由于此转换而导致不能使用索引,会获取大量的键锁、页锁。如果几个这样的SQL同时执行则容易死锁。
比如这样几句SQL:
declare @P1 int
set @P1=14
exec sp_prepexec @P1 output, N'@P1 nvarchar(4000)', N'SELECT CMDOCUMENTS.*, CMDOCTYPES.DOCTYPENAME, CMDOCCONTENTS.CONTENTSIZE, ...

阅读全文…
attachments/201007/02_230522_1742320.gif


1、建立存储过程
CREATE PROCEDURE get_tableinfo AS
     if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
     create table tablespaceinfo --创建结果存储表
     (nameinfo varchar(50) ,
     rowsinfo int , reserved varchar(20) ,
     datainfo varchar(20) ,
...

阅读全文…

win7下面安装sql2000开发版的过程

[ 2010-01-25 21:33:04 | 作者: admin ]
win7下面sql2000专业版是无法安装的,只能安装sql2000个人版或开发版
第一步:关闭uac。
第二步:确认机器名修改成简单字符串(如小写的tao),有时候安装不成功就是机器名引起的。
第三步:正常安装sql2000 ,在服务中启动sql server的服务
第四步:安装sql2000 sp4 ,在服务中启动sql server的服务

安装好win7下面的iis和asp,打开asp错误提示,然后测试sql2000能正常连接
<%
connStr ="Driver={SQL Server};server=(local);uid=test;pwd=test;database=tao123;"
set cn = server.createobject("adodb.connection")
cn.open connStr
cn.close
set cn=nothing
%>
...

阅读全文…