当前位置:首页 » 编程语言 » sql提供的统计信息流已损坏
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql提供的统计信息流已损坏

发布时间: 2022-04-29 18:55:35

‘壹’ sql数据统计分析问题

给你个示例脚本

declare@AAtable(yearsint,numberint)
insertinto@AAvalues(2014,45201521)
insertinto@AAvalues(2014,45201522)
insertinto@AAvalues(2014,45201523)
insertinto@AAvalues(2014,45201524)
insertinto@AAvalues(2014,45201525)
insertinto@AAvalues(2014,45201526)
insertinto@AAvalues(2014,45201527)
insertinto@AAvalues(2014,45201528)
insertinto@AAvalues(2014,45201532)
insertinto@AAvalues(2014,45201535)
insertinto@AAvalues(2014,45201536)
insertinto@AAvalues(2013,45070121)
insertinto@AAvalues(2013,45070122)
insertinto@AAvalues(2011,45010022)
insertinto@AAvalues(2011,45010023)
insertinto@AAvalues(2012,48038811)
insertinto@AAvalues(2012,48038815)
--select年份,CAST(start_numasvarchar)+'-'+CAST(end_numasvarchar)as票段号,份数from(
--selectyears年份,min(number)asstart_num,max(number)asend_num,COUNT(years)as份数
--from
--(selectyears,number,number-ROW_NUMBER()over(orderbynumber)asgrp
--from@AA)m
--groupbygrp,years)t
--wherestart_num!=end_num
--unionall
--select年份,CAST(start_numasvarchar)as票段号,份数from(
--selectyears年份,min(number)asstart_num,max(number)asend_num,COUNT(years)as份数
--from
--(selectyears,number,number-ROW_NUMBER()over(orderbynumber)asgrp
--from@AA)m
--groupbygrp,years)t
--wherestart_num=end_num

--orderby年份,票段号asc
select年份,casewhenstart_num!=end_numthenconvert(varchar(20),start_num)+'-'+convert(varchar(20),end_num)elseconvert(varchar(20),start_num)endas票段号,份数from(
selectyears年份,min(number)asstart_num,max(number)asend_num,COUNT(years)as份数
from
(selectyears,number,number-ROW_NUMBER()over(orderbynumber)asgrp
from@AA)m
groupbygrp,years)t

orderby年份,票段号asc

‘贰’ sql 查询 统计

createtableclient

(

clientidintnotnull,

groupidintnotnull,

constraintPK_CLIENTprimarykey(clientid,groupid)

);

createtableclienthistory

(

clientidintnotnull,

clientstatusint,

timestampsvarchar2(8),

constraintPK_CLIENTHISTORYprimarykey(clientid)

);

createtableclientgroup

(

groupidintnotnull,

groupnamevarchar2(10),

constraintPK_CLIENTGROUPprimarykey(groupid)

);

insertintoCLIENT(CLIENTID,GROUPID)

values(1,1);

insertintoCLIENT(CLIENTID,GROUPID)

values(2,1);

insertintoCLIENT(CLIENTID,GROUPID)

values(3,1);

insertintoCLIENT(CLIENTID,GROUPID)

values(4,1);

insertintoCLIENT(CLIENTID,GROUPID)

values(5,1);

insertintoCLIENT(CLIENTID,GROUPID)

values(6,2);

insertintoCLIENT(CLIENTID,GROUPID)

values(7,2);

insertintoCLIENT(CLIENTID,GROUPID)

values(8,2);

insertintoCLIENT(CLIENTID,GROUPID)

values(9,3);

insertintoCLIENT(CLIENTID,GROUPID)

values(10,3);

insertintoCLIENTGROUP(GROUPID,GROUPNAME)

values(1,'groupname1');

insertintoCLIENTGROUP(GROUPID,GROUPNAME)

values(2,'groupname2');

insertintoCLIENTGROUP(GROUPID,GROUPNAME)

values(3,'groupname3');

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(1,1,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(2,0,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(3,1,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(4,0,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(5,0,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(6,1,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(7,1,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(8,1,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(9,0,null);

insertintoCLIENTHISTORY(CLIENTID,CLIENTSTATUS,TIMESTAMPS)

values(10,1,null);

selectcg.groupid,cg.groupname,(sum(ch.clientstatus)/count(c.clientid))fromclientgroupcg,clienthistorych,clientc

wherec.clientid=ch.clientid

andc.groupid=cg.groupid

groupbycg.groupid,cg.groupname

‘叁’ SQL 数据统计问题

declare @ct datetime
set @ct=getdate()
if exists(select 1 from HJ_MINUTER_1_BASE_ONE
where CONVERT(varchar(8),Dtime,112) = CONVERT(varchar(8),@ct,112)
and DATEPART(HH,Dtime) = DATEPART(HH,@ct))
--where之后的条件可以合并为:CONVERT(varchar(13),@ct,120) = CONVERT(varchar(13),Dtime,120)
begin
select '此位置写内容!'
end

还有说一句,多的不是括号,而是end前面没有begin,然后begin和end之间需要有语句,才会不报错

‘肆’ 怎样修复已经损坏的SQL数据库

1.停止SQL Server的服务,备份SQL Server安装目录下的\data子目录
下故障数据库的两个文件,一个数据文件hbposv6_branch_data.mdf,
一个hbposv6_branch_log.ldf(也有可能非此命名),同时查看磁盘
空间是否有足够的空间;

2.启动SQL Server服务(如已停止),创建一个新的数据库,命名为
原来数据库的名字。
3.停止SQL Server
4.把老数据库的MDF文件(hbposv6_branch_data.mdf)替换
新数据库的相应的MDF文件,
并把LDF文件(hbposv6_branch_log.ldg)删除。
5.重新启动SQL Server服务,然后运行如下命令:

Use Master
go

sp_configure 'allow updates', 1
reconfigure with override
go

begin tran
update sysdatabases set status = 32768 where name = 'hbposv6_branch'
--Verify one row is updated before committing
commit tran
go

6.停止SQL然后重新启动SQL Server服务,然后运行如下命令
(更换日志文件路径地址):

use master
go
DBCC TRACEON(3604)
DBCC REBUILD_LOG
('hbposv6_branch',
'c:\Program Files\Microsoft SQL Server\MSSQL\Data\hbposv6_branch_log.ldf')
--在这里,请输入你的数据库的路径
go

7.停止SQL然后重新启动SQL Server服务,然后运行:

use master
go
update sysdatabases set status = 8 where name = 'hbposv6_branch'
go

sp_configure 'allow updates', 0
reconfigure with override
go

8.运行dbcc checkdb(db_name) 检查数据库的完整性

9.修复数库
--请在查询分析器中执行下列语句.执行前断开其它
所有数据库连接,最好是断开网线
--如果不是该数据库名,请将数据库
--hbposv6_branch
--改为要修复的数据库

USE master
Go
--单用户模式
EXEC sp_dboption 'hbposv6_branch', 'single user', 'TRUE'
go
--数据库检查
DBCC CHECKDB ('hbposv6_branch')
Go
--如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复
--数据库修复
DBCC CHECKDB ('hbposv6_branch','repair_rebuild')
Go
--再次数据库检查,如果返回结果中没有了红色的提示文字,
说明修复成功;
DBCC CHECKDB ('hbposv6_branch')
Go
--否则意味着还需要更高级别的修复;尝试将上面修复语句的
'repair_rebuild'换为'repair_allow_data_loss'再试,
之后再次检查数据库。
--如果还有错误未修复,请把这些信息以文字的方式发给我们

--退出前请一定要执行以下语句返回到多用户模式
EXEC sp_dboption 'hbposv6_branch', 'single user','FALSE'
go

注:都要把 dbname 替换成真实的数据库名字。

‘伍’ SQL语句的问题数据库查询统计的问题

select name,count(name)as '人数' from table group by name

只要根据 name 来分组 基本就OK了

count(name) table 表中任何一个字段也可以 *,1

‘陆’ Service Unavailable

1.流量太大
比如您的主机的额定流量是15G/月。如果您的网站每月流量在15G,每天流量在0.5G以下,则应该能正常访问。如果连续几天的访问量上升,流量超过0.5G/天,则该主机属于超负荷运行。超负荷运行情况下,则会出现有时能正常访问,有时被系统自动停止(ServiceUnavailable)的情况。解决办法是:首先登录虚拟主机管理中心查看最近的访问统计和流量统计,看看流量有没有异常增加的情况,有时站内的个别RAR或者mp3文件被其他网站盗链,则会出现流量上升几十倍的情况。通过我们提供的日志下载功能和访问统计中的"文件类别"功能进行分析,可以得出是否有盗链或者被大量下载。如果是流量自然增长,购买的型号不能满足要求,则需要对虚拟主机型号进行升级,以获得更多的流量配额。
2.程序占用资源过多
比如同样是100人在线的论坛,雷傲论坛所占的资源就是动网论坛所占资源的10倍以上;另外,一些死循环程序,或者不优化的程序(比如1.0版的阿江统计在数据库太大的情况下)都会占用太多的系统资源,而系统资源明显是有限的。由于我们的新虚拟主机是采用WINDOWS2003的操作系统,各网站之间是以独立进程运行的,不会相互影响。

如果一个网站的程序占资源太多或者发生太多的错误,系统日志就会提示:“应用程序池'west263pool11'被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误,或者提示:应用程序池'hui999'超过了其作业限制设置。有关更多信息,请参阅在http://go.microsoft.com/fwlink/events.asp的帮助和支持中心。
这时,访问这个网站就会提示:ServiceUnavailable。一般系统会在30秒左右恢复正常,多刷新几次就能正常访问了。
如果经常出现类似的错误,请及时优化网站程序,或者升级你的虚拟主机至更高的款型,以获得更多的系统资源。

程序占用资源太多的原因如下:
1.有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其他线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST(ASP进程)中。
参考解决办法:
压缩和修复我的数据库
下载数据库文件--[如果是.asp的扩展名,请改为.mdb的扩展名]--用ACCESS打开--选择工具--数据库实用工具--压缩和修复数据库--[改回.asp的扩展名]--上传覆盖原来数据库文件

2.注册了不良的Com组件,特别是用VB开发的ACTIVEX控件,可能导致占用内存使用量不断增长
参考解决办法:尽量减少或避免非官方或是客户要求的不必要的组件
3.多媒体等文件下载占用服务器带宽
参考解决办法:停止下载
4.程序问题
需要及时的关闭不再使用的数据库,以避免一直占用服务器资源在conn.asp连接数据库字符串语句中加入如下subendConnection()conn.closesetconn=nothingendsub
其它程序问题:把IE选项里显示友好HTTP错误信息的勾取消掉,再访问网站看出现什么错误信息,然后再调试
5.上传重要的数据库等文件更新,由于正处于受访问状态,可能导致瞬间占用率上升
一般此情况较少,若有出现此情况时,可能有必要先暂停站点,再作更新
6.ACCESS论坛(如动网)大了以后就很容易出现数据库方面的问题,当你的论坛数据库在30M以上,帖子5万左右,可能就会出现数据库吃不消的情况

7.建议取消程序中使用的onerrorresumenext这个容错语句,对错误进行调试。临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。如果是动网论坛,可以使用论坛自带的分表储存功能,会有较好的效果
比较长远办法:更换论坛和数据库,一般都采用动网sql商业版本+MSSQL的方案来解决

‘柒’ SQL SERVER 2005 关于统计问题,急啊

SELECT MovieID, sum(PVCount) FROM dbo.Tab_2
WHERE Date BETWEEN DATEADD( d, -7 ,GETDATE()) AND GETDATE()
GROUP BY MovieID
这样就可以得出一周内各视频的查看次数,之后再根据这个结果集更新Tab_1就可以了。

完整的如下:
UPDATE a
SET a.PVCountWeekly = b.WeeklyCount
from Tab_1 a
INNER JOIN
(
SELECT MovieID, sum(PVCount) as WeeklyCount FROM dbo.Tab_2
WHERE Date BETWEEN DATEADD( d, -7 ,GETDATE()) AND GETDATE()
GROUP BY MovieID
) b
ON a.MovieID = b.MovieID

‘捌’ 为什么我用SQL的SELECT 统计记录总数老出错

有聚集函数时,SQL不能这样写,你可以这样写
sql="select id,sex,name,(select count(*) from table) as sum from table"
rs.open sql,conn,1,1

‘玖’ SQL多表数据统计查询遇到的问题~~

select c.小组名,d.积分,d.积分/c.count
from
(select 小组名,count(成员编号) as count from a group by 小组名) c,
(select a.小组名,sum(iif(isnull(b.积分),0,b.积分)) as 积分 from a left join b
on a.成员编号=b.成员编号 group by a.小组名) d
where
c.小组名=d.小组名

原来这么麻烦:(

‘拾’ Service Unavailable这个怎么解决!

原因:由于网站超过了iis限制造成的。解决方法:

1.在Windows上,打开开始菜单,搜索iis,然后打开它。