数据库还原时碰上的非常郁闷问题:提交到“事件探查器”的SQL语句跟在“查询分析器”中的执行结果不一致!

glboy 2005-07-05 12:37:48
具体情况如下:
1.首先备份了一个经测试正确的数据库备份文件20050704.bak;
2.为检验备份情况,先删除掉了其中的一个数据库表文件
3.执行客户端还原操作(备注:都是在本机执行)
在客户端提交给sql server数据库的过程中,在事件探查器中捕捉到的SQL语句为:
“USE master exec p_killspid 'TravelAgency' RESTORE DATABASE TravelAgency FROM DISK = 'E:\Data\20050704.bak'”
//但是以上操作不成功
特别注意:将以上SQL(“USE master exec p_killspid 'TravelAgency' RESTORE DATABASE TravelAgency FROM DISK = 'E:\Data\20050704.bak'”)置于查询分析器中执行,可以验证执行是正确的

非常郁闷:提交到“事件探查器”跟在“查询分析器”中的执行结果怎么会不对呢???
执行的情况应该是从客户端提交的SQL执行不对,但同样的语句放到查询分析器中就完全没有任何问题
,折腾了我一个上午啦,:(
...全文
191 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
glboy 2005-07-05
  • 打赏
  • 举报
回复
问题就在于放到查询分析器中执行,一切都正常,而在客户端执行却不正常
这是执行结果:
已处理 1464 页,这些页属于数据库 'TravelAgency' 的文件 'TravelAgency_Data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'TravelAgency' 的文件 'TravelAgency_Log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 1465 页,花费了 5.075 秒(2.363 MB/秒)。

问题在于为什么在特客户端执行该操作不能正常执行,同时被提交的SQL语句都已经在事件探查器中可以正常捕捉到
Andy__Huang 2005-07-05
  • 打赏
  • 举报
回复
你把上面的放到查詢分析器裡運行,如果有問題會有提示出來。

glboy 2005-07-05
  • 打赏
  • 举报
回复
问题这样解决了:
将操作的用户登陆id授予了“system administrators”和“process administrators”就可以了

但觉得还不是很理解
pbsql 2005-07-05
  • 打赏
  • 举报
回复
可以肯定与那几句sql没有关系,其内部的USE master并不能影响外部的当前数据库

检查你的客户端程序,确保在执行那几句sql时与TravelAgency是没有连接的
glboy 2005-07-05
  • 打赏
  • 举报
回复
有可能是客户端连接到TravelAgency时不能kill自己,但是客户端应连接到master还是一样,这个我早测试过了
调整的sql为:
“USE master exec p_killspid 'TravelAgency' USE master RESTORE DATABASE TravelAgency FROM DISK = 'E:\Data\20050704.bak'”
pbsql 2005-07-05
  • 打赏
  • 举报
回复
估计是客户端连接到TravelAgency时不能kill自己

客户端应连接到master而不是TravelAgency,再执行那几条语句估计就没问题了
glboy 2005-07-05
  • 打赏
  • 举报
回复
help
glboy 2005-07-05
  • 打赏
  • 举报
回复
就是没有任何错,所以才非常郁闷中,问题其实就是客户端提交的sql是正确的(这个可以通过将事件探查器中捕捉到的sql放置到查询分析器中执行非常正确),但是察看结果就是不对,即
客户端提交执行的结果不对,
而同样的sql在查询分析器中执行是正确的
vivianfdlpw 2005-07-05
  • 打赏
  • 举报
回复
报什么错?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧