當前位置:首頁 » 編程語言 » 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磁碟空間!