当前位置:首页 » 编程语言 » sqlserver磁盘空间
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlserver磁盘空间

发布时间: 2022-05-29 16:09:50

sqlServer表的大小与表占硬盘空间大小有什么区别,应该怎么去查这两项性能

表的大小一般指表的行数,占用硬盘空间大小就比较复杂了,可以有以下几个参数:
分配空间,数据占用空间及索引占用空间。
执行
EXEC alltablecount
即可显示当前数据库所有表资源占用情况。

执行前,请前建立以下表,和两个存储过程:
1、先建立表:HY_SPACE
CREATE TABLE [HY_SPACE] (
[name] [nvarchar] (128) COLLATE Chinese_PRC_CI_AS NULL ,
[rows] [char] (11) COLLATE Chinese_PRC_CI_AS NULL ,
[reserved] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL ,
[data] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL ,
[index_size] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL ,
[unused] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2、建立统计存储过程:
create procere HYspaceused
@objname nvarchar(776) = null,
@updateusage varchar(5) = false
as
declare @idint
declare @typecharacter(2)
declare@pagesint
declare @dbname sysname
declare @dbsize dec(15,0)
declare @logsize dec(15)
declare @bytesperpagedec(15,0)
declare @pagesperMBdec(15,0)
create table #spt_space
(
rowsint null,
reserveddec(15) null,
datadec(15) null,
indexpdec(15) null,
unuseddec(15) null
)
if @updateusage is not null
begin
select @updateusage=lower(@updateusage)
if @updateusage not in ('true','false')
begin
raiserror(15143,-1,-1,@updateusage)
return(1)
end
end
if @objname IS NOT NULL
begin
select @dbname = parsename(@objname, 3)
if @dbname is not null and @dbname <> db_name()
begin
raiserror(15250,-1,-1)
return (1)
end
if @dbname is null
select @dbname = db_name()
select @id = null
select @id = id, @type = xtype
from sysobjects
where id = object_id(@objname)
if @id is null
begin
raiserror(15009,-1,-1,@objname,@dbname)
return (1)
end
if not exists (select * from sysindexes
where @id = id and indid < 2)
if @type in ('P ','D ','R ','TR','C ','RF')
begin
raiserror(15234,-1,-1)
return (1)
end
else if @type = 'V '
begin
raiserror(15235,-1,-1)
return (1)
end
else if @type in ('PK','UQ')
begin
raiserror(15064,-1,-1)
return (1)
end
else if @type = 'F '
begin
raiserror(15275,-1,-1)
return (1)
end
end
if @updateusage = 'true'
begin
if @objname is null
dbcc updateusage(0) with no_infomsgs
else
dbcc updateusage(0,@objname) with no_infomsgs
print ' '
end
set nocount on
if @id is null
begin
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')
print ' '
insert into #spt_space (reserved)
select sum(convert(dec(15),reserved))
from sysindexes
where indid in (0, 1, 255)
select @pages = sum(convert(dec(15),dpages))
from sysindexes
where indid < 2
select @pages = @pages + isnull(sum(convert(dec(15),used)), 0)
from sysindexes
where indid = 255
update #spt_space
set data = @pages
update #spt_space
set indexp = (select sum(convert(dec(15),used))
from sysindexes
where indid in (0, 1, 255))
- data
update #spt_space
set unused = reserved
- (select sum(convert(dec(15),used))
from sysindexes
where indid in (0, 1, 255))
select reserved = ltrim(str(reserved * d.low / 1024.,15,0) +
' ' + 'KB'),
data = ltrim(str(data * d.low / 1024.,15,0) +
' ' + 'KB'),
index_size = ltrim(str(indexp * d.low / 1024.,15,0) +
' ' + 'KB'),
unused = ltrim(str(unused * d.low / 1024.,15,0) +
' ' + 'KB')
from #spt_space, master.dbo.spt_values d
where d.number = 1
and d.type = 'E'
end
else
begin
insert into #spt_space (reserved)
select sum(reserved)
from sysindexes
where indid in (0, 1, 255)
and id = @id
select @pages = sum(dpages)
from sysindexes
where indid < 2
and id = @id
select @pages = @pages + isnull(sum(used), 0)
from sysindexes
where indid = 255
and id = @id
update #spt_space
set data = @pages
update #spt_space
set indexp = (select sum(used)
from sysindexes
where indid in (0, 1, 255)
and id = @id)
- data
update #spt_space
set unused = reserved
- (select sum(used)
from sysindexes
where indid in (0, 1, 255)
and id = @id)
update #spt_space
set rows = i.rows
from sysindexes i
where i.indid < 2
and i.id = @id
INSERT INTO HY_SPACE
select name = object_name(@id),
rows = convert(char(11), rows),
reserved = ltrim(str(reserved * d.low / 1024.,15,0) +
' ' + 'KB'),
data = ltrim(str(data * d.low / 1024.,15,0) +
' ' + 'KB'),
index_size = ltrim(str(indexp * d.low / 1024.,15,0) +
' ' + 'KB'),
unused = ltrim(str(unused * d.low / 1024.,15,0) +
' ' + 'KB')
from #spt_space, master.dbo.spt_values d
where d.number = 1
and d.type = 'E'
RETURN
end
return (0)
GO
3、主存储过程
create procere alltablecount as
declare @name varchar(100)
TRUNCATE TABLE HY_SPACE
declare tablecur cursor for select name from sysobjects where xtype= 'u '
create table #tablecount(tablename varchar(100),reccount int)
open tablecur
fetch next from tablecur into @name
while @@fetch_status!=-1
begin
exec ('insert into #tablecount select tablename='''+@name+''',reccount=count(1) from '+@name+' ')
EXEC HYspaceused @NAME
fetch next from tablecur into @name
end
close tablecur
deallocate tablecur
select * from #tablecount order by reccount desc
select * from HY_SPACE
GO

② sqlserver内存大小设置多少合适

我们在使用电脑的过程中,偶尔会遇到提示“虚拟内存不足,请增加你的虚拟内存”的情况,那虚拟内存是什么?该怎样增大虚拟内存呢?听“电脑那些事儿”跟大家说说!

虚拟内存的含义就是在磁盘上划出一块区域,用来当作内存来使用,弥补内存条不足的一种方法。电脑系统有虚拟内存设置功能,我们可以自定义设置虚拟内存的大小。

1、右击“计算机”,选择“属性”;

2、在打开的“系统”界面中,单击左侧的“高级系统设置”;

3、在打开的“系统属性”界面中,切换到“高级”标签,单击性能选项框里面的“设置”按钮。

4、在打开的“性能选项”的窗口中,选择“高级”标签,然后选择“更改”;

5、去掉“自动管理所有驱动器的分页文件大小”的“√”,选择一个盘符,不建议放到系统盘,可以找一个空间比较大的盘符,自定义大小即可,如果不知道设置为多少,可以设置成下面的推荐值。

6、设置完成以后,重启计算机即可。

注意:如果物理内存偏小,可以把虚拟内存设置得大一点,可以为物理内存的2倍或3倍。如果物理内存已经很大,比如有4G或者8G,那就只可以保持默认状态或1.5倍即可,太大了,反而会影响电脑性能。

顺手收藏并转发一下吧,让更多的朋友受益!

最后,有问题可以关注“电脑那些事儿”微信公众号留言哦【问题+邮箱】(电脑系统、软件应用等各种问题都可以),小编晚间会一一回复。

③ 安装SQLserver2005老说我磁盘空间不足

sqlserver2005安装时安装完成后差不多1g或多一点,要是你有1g多的空间也现这个提示也属正常!
还有路径有两个选择路径的一个安装程序一个数据存放路径,不知道楼主选的哪个!
装sql2005时建议留2g磁盘空间!

④ SqlServer数据文件太大,表占用空间太大,怎么释放空间

时间充足就断线停止写入数据库,做个全备份。
删除数据库,删除数据库文件。
整理下磁盘。
重建同名数据库,恢复数据库。
这时候的空间是最紧凑的,可以试试建聚集索引。
最根本的方法是加硬盘,可能你的数据操作规律就是会产生很多碎片的,必须要有双倍的空间才行。

⑤ 如何迁移sqlserver数据库数据文件,解决磁盘容量不足问题

你恢复时的空间不够,你可以找一个你电脑上磁盘空间最大的盘
然后恢复数据库的时候,修改数据文件的位置即可:

⑥ SQLSERVER可用空间只有1兆多,为什么

正常。可用空间1.27M,是相对于数据库分派空间20G而言,不是磁盘的可用空间。当20G用完后,它会怎么增加,只要磁盘有空间就行了,不用当心。

⑦ 怎么查看整个sqlserver数据库的剩余空间大小

查询各个磁盘分区的剩余空间:
Exec master.dbo.xp_fixeddrives
查询当前数据库的磁盘使用情况
Exec sp_spaceused

⑧ sql sever 2012如何释放磁盘空间

释放方法:
1.打开sqlserver管理工具,选中需要操作的数据库——右键——任务——分离;
勾选删除链接(如果有链接连着数据库会导致分离失败)然后点击确定

2.这时候你会发现你的数据库不见了,不要着急,一会儿就弄回来,先去我的电脑-文件管理 把万恶之源 ldf文件删除了

3.然后回到管理工具 附加上刚才分离的库文件 一般是 ndf 或者mdf后缀的

4.选择后下面会有两个文件 如果你删了ldf 会提示日志文件找不到 把那一项删了 点确定就是 再去删一遍日志文件 我就不截图了

附加完毕是不是发现 我的数据库又回来了 整个过程都不需要重启数据库

如果想要直接释放也可以,但是前提是你需要知道文件的名字,直接执行语句
DBCC SHRINKFILE(‘FileName’, 1 , TRUNCATEONLY )
也可以直接释放。
具体函数 DBCC SHRINKFILE的参数定义,大家可以自己在网上查询。

⑨ SqlServer备份问题,磁盘空间不足(112)

方法1:增加备份用硬盘或删除现有硬盘中没用的文件腾出磁盘空间
方法2:删除数据库中没用的数据,减小数据库的容量
方法3:尝试收缩数据库(不建议使用此方法,容易造成数据碎片,导致数据库运行缓慢)

⑩ sqlserver2005安装时出现了磁盘空间低

sqlserver2005安装时安装完成后差不多1G或多一点,要是你有1G多的空间也现这个提示也属正常!
还有路径有两个选择路径的一个安装程序一个数据存放路径,不知道楼主选的哪个!
装sql2005时建议留2G磁盘空间!