T-Sql执行的问题
我有一个存储过程其只主要是这样两句
1.
SELECT [...],RN=ROW_NUMBER() OVER(ORDER BY [XX]) INTO [表名.这里是每一次创建一个表] FROM ( [这里是一个很大的表是一段时间内的数据,distinct] EXCEPT [一个大数据表] )
2.
SELECT TOP 1 RN FROM [表名,刚才查入数据的表]先 exec sp_executesql -- 1步
后 2.条语句
这样是数据库是先要把1步执行完了再执行第2步吧。
但是在服务器上,程序报错都是在这里。一天有一百多次这种运算,一般会出现几次这里的错误。这个问题怎么解决。
解决方案 »
- C# 打开sqlserver2008 连接时的问题
- 有关时间的判断语句
- 求一条简单SQL语句
- 数据库内部结构问题
- 如何用一条SQL语句实现从两个关联表a (F1,F2),b (f1,f2)中取出 所有a中所有b.f2 = 1 AND a.f1 = B.f1 或者 a.f1在B.F1中没有对应数据的记录
- 一个简单的触发器问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
- 如何获得当前insert或update记录的关键字!
- 如何能让一台服务器的存储过程连接到另外一台服务器上??/
- 下面2句起什么作用?
- 打开一个表后不关闭会引起内存泄漏么?
- 请教局域网中跨机器数据库备份
- 关于连接后索引失效问题求高手解答
SELECT TOP 1 RN FROM [表名,刚才查入数据的表] ORDER BY RN DESC
在 Pee.Dal.DataAcq.DbDataCollDal.PrePageShow(DateTime startTime, DateTime endTime, Int32 frq, String tbBaseName)PrePageShow这个方法就是运行了那个存储过程的。
C#代码
SqlCommand selectCommand = new SqlCommand(queryText, this.openConnection());
//得到Web.config里DB_ConnectionString中Connection Timeout=90
selectCommand.CommandTimeout = cn.ConnectionTimeout;
或者
SqlCommand selectCommand = new SqlCommand(queryText, this.openConnection());
selectCommand.CommandTimeOut=0;Web.config(.NET 2005)
<connectionStrings>
<add name="DB_ConnectionString" connectionString="Data Source=xxx.xxx.xxx.xxx;Initial Catalog=DB NAME;Persist Security Info=false;User ID=sa;Password=sa;Connection Timeout=90;" providerName="System.Data.SqlClient"/>
</connectionStrings>CommandTimeout 属性
指示执行命令期间在终止尝试和产生错误之前需等待的时间。设置和返回值设置或返回 Long 值,该值指示等待命令执行的秒数。默认值为 30。详见:http://www.cnblogs.com/haoyi0418/articles/1031690.html
SELECT [...],RN=ROW_NUMBER() OVER(ORDER BY [XX]) INTO [表名.这里是每一次创建一个表] FROM ( [这里是一个很大的表是一段时间内的数据,distinct] EXCEPT [一个大数据表] )参考如下的内容,看是否有用?
如何从表A(总表)中找出表B(分表)中不存在的记录组合假设表A和表B都只有两个字段id,name
如何用一句SQL返回表A中存在的id,name结果集而在表B中不存在的id,name结果集select A.* from A left join B on A.id=B.id and A.name=B.name where B.id is nullselect * from A where not exists(select top 1 * from B where A.ID=B.ID)这两个都可以.
--前提:表中不能有text、ntext、image、cursor 数据类型的字段。用CheckSum()最简单:select * from A where checksum(*) not in (select checksum(*) from B)
DROP TABLE TB_20110108_tmp_1010
SELECT T1.[SiteId],T1.[AdId], COUNT([Ip]) AS [ShowIp],0 AS [ClickIp],RN=ROW_NUMBER() OVER(ORDER BY T1.[SiteId],T1.[AdId]) INTO TB_20110108_tmp_1010
FROM (
SELECT DISTINCT [SiteId],[AdId],[Ip] FROM TB_20110108 A WHERE [RecTime]>=@startTime AND [RecTime]<@endTime
EXCEPT
SELECT [SiteId],[AdId],[Ip] FROM TB_AbsIp_20110108
) T1
GROUP BY T1.[SiteId],T1.[AdId]
前面两种方法不一定能提高效率,我试过,特别是第一种 is null那种会降低效率