exec sp_spaceused如何只返回一个结果集(转载)
问:
我想把每天数据库的大小自动保存到table中
但是exec sp_spaceused是返回2个表,执行下面的语句出错,如何解决?
drop table db_size go create table dbo.db_size ( database_name varchar(200), database_size varchar(200), unallocated_space varchar(200) ) go insert into db_size exec sp_spaceused
exec sp_spaceused始终返回两个结果集,导致报错:
--------------------------------------------------------- Server: Msg 213, Level 16, State 7, Procedure sp_spaceused, Line 196 Insert Error: Column name or number of supplied values does not match table definition.
答:
这个东西你只要查看一下sp_spaceused中是如何写的,把它摘下来就行了
sp_helptext 'sp_spaceused'可以看sp_spaceused的内容
可以得知sp_spaceused中,最核心的一段代码如下:
declare @pages int declare @dbname sysname declare @dbsize dec(15,0) declare @logsize dec(15) declare @bytesperpage dec(15,0) declare @pagesperMB dec(15,0) select @dbsize = sum(convert(dec(15),size)) from dbo.sysfiles where (status & 64 = 0) select @logsize = sum(convert(dec(15),size)) from dbo.sysfiles where (status & 64 <> 0) select @bytesperpage = low from master.dbo.spt_values where number = 1 and type = 'E' select @pagesperMB = 1048576 / @bytesperpage select database_name = db_name(), database_size = ltrim(str((@dbsize + @logsize) / @pagesperMB,15,2) + ' MB'), 'unallocated space' = ltrim(str((@dbsize - (select sum(convert(dec(15),reserved)) from sysindexes where indid in (0, 1, 255) )) / @pagesperMB,15,2)+ ' MB')
所以我们可以用sp_helptext这个系统存储过程,来查看任何存储过程的代码。
分类:
Sql Server
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2016-02-19 ASP.NET 中通过Form身份验证 来模拟Windows 域服务身份验证的方法