分享、学习、提高
2007/07/07 10:30
Tags: , ,
一大早起来,朋友在QQ上急问说:
引用

xxx 00:22:10
某数据库出现置疑,我按照
http://www.itlearner.com/article/2005/1375.shtml
xxx 00:22:35
在分离数据库时说分离失败,然后在数据库就消失了
xxx 07:39:39
我现在用一个多月前备份的
我 09:28:37
那现在用的你有没有换一个数据库名?
xxx 09:24:34
我就是右键,分离数据库,提示失败,在企业管理里一看,数据库没有了
xxx 09:25:02
没有换数据库名,但是我把那个mdf和log文件复制了一份


上服务器看一下,先停止MSSQL。把其一个月前备份的改个名字,将昨天出现问题的数据库.mbf和ldf文件恢复成原数据库名。重启MSSQL,在数据库列表中就看到它了:)只是后面有个(置疑)。

然后参照上面那篇文章说的运行:

USE MASTER
GO

SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO

UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='hxdbname'
Go

sp_dboption 'hxdbname', 'single user', 'true'
Go

DBCC CHECKDB('test')
Go

update sysdatabases set status =28 where name='hxdbname'
Go

sp_configure 'allow updates', 0 reconfigure with override
Go

sp_dboption 'hxdbname', 'single user', 'false'
Go


1分钟后,下面显示了结果,看到了许多索引错误。如:

服务器: 消息 8909,级别 16,状态 1,行 2
表错误: 对象 ID 0,索引 ID 0,页 ID (1:60296)。页首结构中的 PageId = (0:0)。
'hxdbname' 的 DBCC 结果。
CHECKDB 发现了 0 个分配错误和 1 个一致性错误,这些错误并不与任何单个的对象相关联。
.......
表错误: 数据库 'hxdbname',索引 'Hx_Fav.bookid'(ID 133575514)(索引 ID 2)。下列键的键多余或无效:
服务器: 消息 8956,级别 16,状态 1,行 2
索引行(1:25141:294)(其值为 favid = 1172 and id = 212014)指向由  标识的数据行。
服务器: 消息 8952,级别 16,状态 1,行 2
表错误: 数据库 'hxdbname',索引 'Hx_Fav.bookid'(ID 133575514)(索引 ID 2)。下列键的键多余或无效:
服务器: 消息 8956,级别 16,状态 1,行 2
索引行(1:50440:363)(其值为 favid = 6070 and id = 212012)指向由  标识的数据行。
服务器: 消息 8952,级别 16,状态 1,行 2
........

先不管这些,此时网站就可以使用了:)

但是出现了这些索引错误,应该修复一下才对。于是,使用dbcc dbreindex('Hx_Fav'),提示
引用

服务器: 消息 3908,级别 16,状态 1,行 1
未能在数据库 'hxdbname' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。


同时,在网站访问时也出现了类似的错误。
引用

Microsoft OLE DB Provider for SQL Server 错误 '80004005'

未能在数据库 'hxdbname' 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。

/book/log_show.asp,行 78  


网上找下资料,还是只能通过新建一个数据库,将数据库导入的方法来解决:(

新建一个数据库,将原数据库导入,选上了“扩展选项”,导入还算顺利。

然后将出现错误提示的表一一dbcc dbreindex了一下。

最后dbcc checkdb,没有显示错误了。

修改网站的连接数据库代码,问题解决:)
2007/07/05 13:19
Tags:
今天使用AspJpeg组件时,发现这样的提示:

Persits.Jpeg.1 错误 '800a0004'

AspJpeg has expired. Please visit www.aspjpeg.com to purchase a registration key.

奇怪,怎么会提示过期呢。。。

想起5月份重装后这是第一次使用此组件,当时并未安装它,而是将原aspjpeg.dll注册了下。

再想起它有个安装包,装时需要填一个序列号,可能与这个有关系。

参考一篇文章:http://blog.it12.com.cn/article.asp?id=180&page=1

在程序中加入:
Response.Write Jpeg.Expires
显示:
2007-6-9 22:02:00

先看服务器上注册表中的HKEY_LOCAL_MACHINE\Software\ Persits Software\AspJpeg,只有一个Expires。
而本机有Expires和RegKey。

于是,在AspJpeg下新建一个项:RegKey
然后将数值更改为48958-77556-02411

程序刷新,显示Jpeg.Expires为:
9999-9-9。

OK了,此后使用此组件的程序正常运行:)

相关资料:AspJpeg缩略图组件 v1.5下载
2007/05/20 22:37
Tags:
朋友的一个网站经常一天之中会出现几次访问很慢甚至完全打不开的情况,开始一直怀疑是程序问题,也优化了些,但是一直没能彻底解决。

前几天,比较严重的问题出现了。经常卡,有时iisreset完后就马上卡。我在服务器上的事件日志中,突然发现大量的SQL事件,打开一看,类似如下描述:

17052:
SQL Server 已为 8 个并发查询而优化。1 个查询超过了此限制,因而性能可能会受到不良影响。


搜索引擎中查一下,说是sql版本问题,改成企业版就行了。

咦,难道安装的不是企业版?先看看是什么版本,select @@version看下,显示
Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)   May  3 2005 23:18:38   Copyright (c) 1988-2003 Microsoft Corporation  Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
晕,真的是个人版。。。

第二天,他让重装了企业版,程序没动,到现在还没有发现有访问非常慢的情况,看来这个SQL个人版是造成这个问题的罪魁祸首!我估计访问量只要稍大(超过1wIP),用SQL个人版就可能会出问题。

引用
SQL Server 2000 桌面版和 SQL Server 2000 个人版都有一个并发工作负荷调控器,可在并发执行 5 个以上的批处理时限制数据库引擎的性能。
并发工作负荷调控器限制了数据库引擎的性能。当同时执行五个以上的批处理命令时,个别 Transact-SQL 批处理命令的性能将降低。
来源:http://www.9zhidao.cn/info/8304.htm


另有一篇的解决方法:
引用
你的服务器上有 多个 CPU?
用sp_configure 改一下 cost threshod for parallelism,和max degree of parallelism
的值,企业服务器的 server属性的处理器页也有这个选项.
你在企业管理器中的'处理器'页下有个'并发',其中的最小查询计划阀值改一个看行不行.
还有连接页下的并发用户连接数也看一下
来源:http://www.9zhidao.cn/info/23105.htm
2007/05/14 09:00
Tags: ,
在查询分析器中运行select @@version
我的是
Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)   May  3 2005 23:18:38   Copyright (c) 1988-2003 Microsoft Corporation  Personal Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
其中看到May  3 2005 就说明是打了SP4了。
2007/05/13 22:56
Tags:
将Serv-U切换成以普通用户启动后,发现FTP登录后提示:
331 User name okay, need password.
命令:>    PASS *****
530 Not logged in, home directory does not exist.

不知道什么原因,换成用System账号启动后,一切正常。

搜索了下,原来是需要给该目录以上的上级目录给该用户的读取权限。也就是说如果启动serv-u的用户名是servu,FTP主目录是d:\hx,那么不仅d:\hx需要有servu的所有权限,还需要对d盘的读取权限,否则就会出现这个错误。2000下没有这个问题,我以前服务器是2000的,就没碰到过这问题!


但是更改后还是不行:
命令:>    PASS *****
    230 User logged in, proceed.
状态:>    登录成功。
命令:>    PWD
    257 "/" is current directory.
状态:>    Home directory: /
命令:>    FEAT
然后就一直没反应了,1分钟后就提示:
错误:>     接收服务器响应时发生超时(60000 毫秒)。

切换成System账号启动,还是正常。

参考了这篇文章(注:地址失效了),将Windows Firewall的网络连接设置中的“FTP服务器”取消,居然就OK了!

给上级目录读的权限的具体操作,我本人试了N(>10)回!。。。
选择D盘,给servu读的权限,选择高级,应用到:只有该文件夹,下面的权限只留最下面的“读取权限”,点确定,等待(下面文件最多等的时间越长。)

关于如何使用普通用户启动Serv-U,请参照:http://www.itlearner.com/article/2006/3438_6.shtml
分页: 4/7 第一页 上页 1 2 3 4 5 6 7 下页 最后页 [ 显示模式: 摘要 | 列表 ]