请教dbcc page()的问题

唐诗三百首 2016-04-19 10:53:21
某些情况下, 执行dbcc page(...) with tableresults,no_infomsgs;命令会返回2个结果集
请问怎样取其中第1个结果集到临时表?

create table #temppagedata(ParentObject sysname,
Object sysname,
Field sysname,
VALUE nvarchar(max))

insert into #temppagedata(ParentObject,Object,Field,VALUE)
exec('dbcc page(...) with tableresults,no_infomsgs; ');

-- 当返回1个结果集时,以上语句正常执行,
-- 当返回2个结果集时,以上语句执行异常,
Msg 213, Level 16, State 7, Line 95
Column name or number of supplied values does not match table definition.

...全文
258 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2016-04-27
  • 打赏
  • 举报
回复
谢谢大版, 问题已解决.
中国风 2016-04-19
  • 打赏
  • 举报
回复
刚测了一下,你调用的应该索引ID--2772510 PageType=2 你用3查看是索引页对应的数据页,你要一个结果集应该是查数据页而不是索引页
中国风 2016-04-19
  • 打赏
  • 举报
回复
引用 4 楼 ap0405140 的回复:
dbcc page(数据库名, 1, 2772510,3) with tableresults,no_infomsgs; --> 这句执行后是2个结果集. 我也想知道什么情况下会出2个,什么情况下出1个?
你最后一个参数不对,3为看child page,要用1, dbcc page(数据库名, 1, 2772510,1)
唐诗三百首 2016-04-19
  • 打赏
  • 举报
回复
dbcc page(数据库名, 1, 2772510,3) with tableresults,no_infomsgs; --> 这句执行后是2个结果集. 我也想知道什么情况下会出2个,什么情况下出1个?
中国风 2016-04-19
  • 打赏
  • 举报
回复

CREATE TABLE TabName(Code VARCHAR(10) ,Name NVARCHAR(100),Remark NVARCHAR(10) DEFAULT '')
go
INSERT INTO dbo.TabName
        ( Code, Name )
VALUES  ( 'aa1'  -- Code - varchar(10)
          , N''  -- Name - nvarchar(100)
          ),( 'bb1'  -- Code - varchar(10)
          , N''  -- Name - nvarchar(100)
          )
		  ,( 'cc1'  -- Code - varchar(10)
          , N''  -- Name - nvarchar(100)
          )
GO
--DROP TABLE #temppagedata
create table #temppagedata(ParentObject sysname,
                                          Object sysname,
                                          Field sysname,
                                          VALUE nvarchar(max))
 
 insert into #temppagedata(ParentObject,Object,Field,VALUE)
EXEC('DBCC PAGE(Sales,1,190,1)WITH tableResults,no_infomsgs;')

SELECT * FROM #temppagedata
--以上生成数据页信息为例 190--是通过DBCC IND(Sales,TabName,-1)得到
中国风 2016-04-19
  • 打赏
  • 举报
回复
你是用DBCC PAGE?返回两个结果集 你的用参数是?你需要实现什么操作,这是用于显示索引或数据页信息
中国风 2016-04-19
  • 打赏
  • 举报
回复
返回两个结果集,必须栏位数据类型和长度要兼容,列数要相同 比如同一个存储过程,有两个结果集1个返回2列,一个返回3列不行 如果1个返回为INT,另一个返回为字符串,那定义的类型都需要为字符串

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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