① 如何用查詢分析器查詢sql 資料庫大小,查詢語句是什麼我用sp_spaceused老是不行
「我這邊測試了 提示拒絕了sysaltfiles的select許可權 註:我查的是在虛擬主機上的的資料庫大小 用sp_spaceused查出的是已經使用的大小 我要查的是還剩餘多少空間」 我說,兄弟,你腦子轉一下不就行了?剩餘=總數-使用 你不會不懂吧? --------------- SQLServer 2000,以下sql語句可以得到資料庫的容量 declare @room integer select @room=size from sysaltfiles where name='資料庫名'(或'自定義資料庫要加"data") select @room=@room*8*1000/1024 print convert(varchar(10),@room)+' K' 可先用select * from sysaltfiles 語句查詢一下資料庫名 例:declare @room integer select @room=size from sysaltfiles where name='master'(或'自定義資料庫要加"data") select @room=@room*8*1000/1024 print convert(varchar(10),@room)+' K' ------------- 詳細請看 參考資料
② 新手SQL資料庫管理員,在沒人帶的情況下應該怎麼做。
嚴格地說,資料庫是「按照數據結構來組織、存儲和管理數據的倉庫」。在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的「倉庫」,並根據管理的需要進行相應的處理。例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。J.Martin給資料庫下了一個比較完整的定義:資料庫是存儲在一起的相關數據的集合,這些數據是結構化的,無有害的或不必要的冗餘,並為多種應用服務;數據的存儲獨立於使用它的程序;對資料庫插入新數據,修改和檢索原有數據均能按一種公用的和可控制的方式進行。當某個系統中存在結構上完全分開的若干個資料庫時,則該系統包含一個「資料庫集合」。
資料庫系統階段60年代後,隨著計算機在數據管理領域的普遍應用,人們對數據管理技術提出了更高的要求:希望面向企業或部門,以數據為中心組織數據,減少數據的冗餘,提供更高的數據共享能力,同時要求程序和數據具有較高的獨立性,當數據的邏輯結構改變時,不涉及數據的物理結構,也不影響應用程序,以降低應用程序研製與維護的費用。資料庫技術正是在這樣一個應用需求的基礎上發展起來的。資料庫技術有如下特點:* 面向企業或部門,以數據為中心組織數據,形成綜合性的資料庫,為各應用共享。* 採用一定的數據模型。數據模型不僅要描述數據本身的特點,而且要描述數據之間的聯系。* 數據冗餘小,易修改、易擴充。不同的應用程序根據處理要求,從資料庫中獲取需要的數據,這樣就減少了數據的重復存儲,也便於增加新的數據結構,便於維護數據的一致性。* 程序和數據有較高的獨立性。* 具有良好的擁護介面,用戶可方便地開發和使用資料庫。* 對數據進行統一管理和控制,提供了數據的安全性、完整性、以及並發控制。資料庫日常維護(參考) 資料庫日常維護工作是系統管理員的重要職責。其內容主要包括以下幾個部分:一、備份系統數據SYBASE 系統的備份與恢復機制保證了在系統失敗時重新獲取數據的可能性。SQL Server 提供了兩種不同類型的恢復機制:一類是系統自動完成的恢復,這種措施在每次系統啟動時都自動進行,保證了在系統癱瘓前完成的事務都寫到資料庫設備上,而未完成的事務都被回退;另一類是人工完成的恢復,這是通過 DUMP 和 LOAD 命令來執行人工備份和恢復工作。因此定期備份事務日誌和資料庫是一項十分重要的日常維護工作。1、備份資料庫每一個資料庫都應在創建之後卸出,從而提供一個裝入基點。在此之後按排定的時間周期表卸出。比如每周五卸出資料庫。對一般資料庫系統卸出資料庫周期建議為每周一次。除了按計劃周期卸出資料庫之外,還需在每次運行沒有日誌的操作後卸出資料庫。例如:·每次強制地運行了 DUMP TRAN WITH NO_LOG (因為資料庫的磁碟空溢出);·每次用 sp_dboption 允許 select into/bulk 做快速拷貝,或用 SELECT INTO 命令創建一個永久性的表,或使用了 WRITETEXT 命令。卸出資料庫的命令為:DUMP DATABASE database_nameTO mp_devicedatabase_name 是要卸出的資料庫名稱,mp_device 是卸出設備的名稱。用系統過程 sp_helpdevice 可以獲得設備的信息。下面一條命令用來卸出資料庫 my_db :DUMP DATABASE my_dbTO db_bk_dev2、備份事務日誌如果事務日誌與資料庫放在同一個設備上,則事務日誌不應與資料庫分開備份。master 資料庫和小於 4M 的用戶資料庫就是這種情況。一般資料庫系統的資料庫和日誌分別放在不同的設備上,因此,可以用 DUMP TRAN 命令單獨備份日誌。備份事務日誌的周期直接影響數據的恢復程度,因此建議每天備份。備份事務日誌的命令格式為:DUMP TRANsaction database_name[TO mp_device][WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE]其中 database_name 是要備份事務的資料庫名稱,mp_device 是備份設備名稱,僅當包含了 WITH TRUNCATE_ONLY 或 WITH NO_LOG 子句時,才可以備份到設備。注意:如果總是用 DUMP DATEBASE (備份資料庫及其日誌),而不用 DUMP TRAN ,事務日誌將不會刷新,而變得非常龐大。對於 master 資料庫和小型資料庫每次運行 DUMP DATEBASE 之後應當運行 DUMP TRANsaction 命令刷新日誌 。下面一條命令備份資料庫 db160 的事務日誌到備份設備上:DUMP TRANsaction db160TO db_log_bk_devWITH TRUNCATE_ONLY3、備份資料庫及其日誌間的相互作用在至少卸出一次資料庫前,卸出事務日誌是毫無意義的。下圖顯示了備份資料庫及其日誌間的關系如果在星期二下午5:01出現非硬體故障,需要做的所有工作是裝入磁帶5(參見下一節:數據恢復),由於磁帶5是下午5:00剛備份的,因此只有備份和裝入之間的一分鍾內的數據損失。但是,如果在星期二下午4:49失效會怎麼樣呢?在這種情況下,要裝入磁帶1(在星期五下午5:00的卸出)。然後,依次裝入磁帶2,3以及4。這樣,系統將恢復到星期二上午10:00點的狀態,星期二的大部分工作丟失了。此例顯示了經常卸出事務的重要性。二、萬一系統失敗時恢復資料庫系統如果用戶資料庫存儲的設備失效,從而資料庫被破壞或不可存取,通過裝入最新的資料庫備份以及後來的事務日誌備份可以恢復資料庫。假設當前的事務日誌存在於一個並沒有毀壞的設備上,帶著 WITH NO_TRUNCATE 選項的 DUMP TRANsaction 命令卸出它。要恢復資料庫按如下步驟去做:1、如果日誌存在於一個分離的設備上,用帶著 NO_TRUNCATE 選項的 DUMP TRANsaction 命令卸出被毀壞的或者不可存取的用戶資料庫事務日誌。2、用下面的查詢檢查設備分配已毀壞資料庫的設備使用情況。必須為同一目的賦同樣的空間塊。下面的查詢顯示了分配給資料庫 mydb 設備使用和尺寸情況:SELECT segmap,size FROM sysusagesWHERE dbid = ( SELECT dbid FROM sysdatabases WHERE name = 「mydb」)3、檢查查詢的輸出。在 segmap 列的 『3』代表數據分配,『4』代表日誌分配。size 列代表 2K 數據塊的數目。注意此信息的次序、使用和尺寸部分。例如,輸出為:segmapSize--------------------310240//實際尺寸為:20M35120//實際尺寸為:10M45120//實際尺寸為:10M31024//實際尺寸為:2M42048//實際尺寸為:4M4、用 DROP DATABASE 命令刪除毀壞設備上的資料庫。如果系統報錯,用DBCC DBREPAIR 命令的 DROPDB 選項。5、刪除資料庫後,用 sp_dropdevice 刪除毀壞了的設備。6、用 DISK INIT 初始化新的資料庫設備。7、重建資料庫。用 CREATE DATABASE 命令從老的 sysusages 表拷貝所有的行,並包含第一邏輯設備。對上例,命令為:CREATE DATABASE mydb ON datadev1=20,datadev2=10LOG ON logdev1=108、用 ALTER DATABASE 命令重建其餘入口。在此例中,在datadev1上分配更多的空間,命令為:ALTER DATABASE mydb ON datadev1=2[page]9、用 LOAD DATABASE 重新裝入資料庫,然後用 LOAD TRAN 裝入前面卸出的日誌。LOAD DATABASE 命令語法是:LOAD DATABASE database_nameFROM mp_deviceLOAD TRANsaction 命令的語法是:LOAD TRANsaction database_nameFROM mp_device卸出資料庫和事務日誌的預設許可權歸資料庫所有者,且可以傳遞給其他用戶;裝載資料庫和事務的許可權也歸資料庫所有者,但不能傳遞。二、產生用戶信息表,並為信息表授權;系統維護人員的另一個日常事務是為用戶創建新的信息表,並為之授權。創建表以及為表授權的方法已經在講過,在此只將有關命令語法寫出來。·創建表的命令為:CREATE TABLE table_name( column_1 datatype [NULL | NOT NULL | IDENTITY], column_2 ……)goALTER TABLE table_nameADD PRIMARY KEY (column_list)go·刪除表的命令格式為:DROP TABLE table_namego·為表授權的命令格式為:GRANT {ALL|permission_list}ON table_name TO user_namego ·收回許可權的命令格式為REVOKE {ALL|permission_list}ON table_name FROM user_namego 三、監視系統運行狀況,及時處理系統錯誤;系統管理員的另一項日常工作是監視系統運行情況。主要有以下幾個方面:1、監視當前用戶以及進程的信息使用系統過程:sp_who說明:該命令顯示當前系統所有注冊用戶及進程信息,如下表是某系統的信息。--------------------------------------------------------------- SLEEP從左向右依次顯示:進程號、當前狀態、注冊用戶名、主機名、佔用塊數、資料庫名以及當前命令。如果監視時發現進程總數接近最大連接數(用系統過程:sp_configure 「user conn」 查看)時,應下掉不活動或無關進程,以保證系統正常運做;另外亦可監視非法用戶或用戶使用不屬於自己使用范圍的資料庫等情況。2、監視目標佔用空間情況使用系統過程:sp_spaceused說明:該過程顯示行數、數據頁數以及當前資料庫中由某個目標或所有目標所佔用的空間。如下表是某資料庫日誌表的信息:NameRow_totalreserveddataIndex_sizeunused------------------------------------------------------------SyslogsNot avail32KB32KB0KBNot avail日常要監視的主要目標有:用戶資料庫、資料庫日誌表(syslogs)以及計費原始數據表等。如果發現佔用空間過大,對日誌表要進行轉儲;對其他目標則應擴充空間或清楚垃圾數據。3、監視 SQL Server 統計數字使用系統過程:sp_monitor說明:sp_monitor 顯示SQL Server 的歷史統計數字,下表是某系統的統計數字:Last_runCurrent_runSeconds---------------------------------------------------------------May 13 2000 1:27PMMay 13 2000 3:01PM5678CPU_busyIO_busyIdle---------------------------------------------------------------16(6)-0%0(0)-0%5727(5672)-99%Packets_receivedPackets_sentPacket_errors---------------------------------------------------------------21(17)100(97)0(0)Total_readTotal_writeTotal_errorsConnections--------------------------------------------------------785(366)311(113)0(0)3(2)上表依次給出該系統本次運行統計的上一次時間、本次時間、間隔秒數、CPU佔用、IO佔用、收發包情況、系統讀入寫出情況等信息四、保證系統數據安全,周期更改用戶口令;為保證系統數據的安全,系統管理員必須依據系統的實際情況,執行一系列的安全保障措施。其中,周期性的更改用戶口令是比較常用且十分有效的措施。更改用戶口令是通過調用系統過程sp_password 來實現的。Sp_password 的語法為:sp_password caller_password,new_password [,loginame]其中caller_password 是登錄口令(老口令),new_password是新口令,loginame是登錄名稱。 在網路搜索:資料庫日常維護(參考) 相 關 文 章 Sybase存儲過程的建立和使用SYBASE dbcc電信企業參與競爭的利器-數據倉庫和數據挖掘SCOUNIX下磁帶機的安裝與備份StoredProcere(存儲過程)編寫經驗和優化措施細說SYBASE資料庫日誌常見資料庫系統之比較 - SYBASE 和 SQL SERVERSYBASE ASE FOR LINUX安裝及perl連接SYBASESybase資料庫應用(一)安裝Sybase ASE
③ SQL數據存儲問題
int和Bit類型的長度都是確定的。因為資料庫是以頁為單位來分配空間的,一個頁等於8K
④ sql怎麼獲得資料庫緩存空間大小
其實只要使用系統內置的存儲過程sp_spaceused就可以得到表的相關信息
如:sp_spaceused 'tablename'
以下是為了方便寫的一個存儲過程,目的是把當前的所有表的相關信息全部都保存在一個指定的表裡面
CREATE PROCEDURE get_tableinfo AS
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo --創建結果存儲表
(nameinfo varchar(50) ,
rowsinfo int , reserved varchar(20) ,
datainfo varchar(20) ,
index_size varchar(20) ,
unused varchar(20) )
delete from tablespaceinfo --清空數據表
declare @tablename varchar(255) --表名稱
declare @cmdsql varchar(500)
DECLARE Info_cursor CURSOR FOR
select o.name
from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
and o.name not like N'#%%' order by o.name
OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname',
N'@tbname varchar(255)',
@tbname = @tablename
FETCH NEXT FROM Info_cursor
INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO執行存儲過程
exec get_tableinfo
查詢運行該存儲過程後得到的結果
select *
from tablespaceinfo
order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
⑤ 如何查看sql資料庫伺服器數據
1、使用系統性能監視器監視當前SQL的工作性能(控制面板-->管理工具-->性能)可以查看SQL對磁碟、內存的總體佔用
2、使用SQL 性能監視器(SQL Profiler)可以查看SQL 的執行事件,讀寫次數,起始和結束事件等等,可以保存死鎖圖形。
⑥ 怎樣進行sql資料庫的優化
1、資料庫空間是個概述,在sqlserver里,使用語句 exec sp_spaceused 'TableName' 這個語句來查。
⑦ 如何快速獲得SQL Server 錶行數
其實有兩個辦法可以快速的查詢到SQL Server的表數據。1. sp_spaceused:其中有一列是rows,如果輸入的表對象的話,那麼就會獲得這個表的行數,速度非常快。其中也有一個列為rowcnt,Counts the total number of inserted, deleted, or updated rows since the last time statistics were updated for the table 使用下面的語句:---replace the tablename when you use this script from sys.sysindexes where id =object_id('tablename') and indid in(0,1) 通過這個統計結果可能不是太准確,因為系統統計信息有個時間差
⑧ 如何查詢表空間用SQL命令
sql系統存儲過程:sp_spaceused '表名',可以查看錶使用空間的情況。
如圖 data,即已使用的空間
⑨ SQL SERVER 臨時表能使用EXEC SP_spaceused 查詢表大小么
想請問你創建的是全局臨時表和臨時表?
如果是本地普通臨時表,本地會話沒有結束的話,是可以的,會話一旦消失,就查詢不到了
如果是全局臨時表,則用EXEC SP_spaceused是可以的
附:
全局臨時表和本地普通臨時表區別:
普通臨時表的名稱前面有一個編號符(#table_name),而全局臨時表的名稱前面有兩個編號符(##table_name),本地普通臨時表僅在當前會話中可見;全局臨時表在所有會話中都可見
⑩ 如何使用SQL語句查詢資料庫及表的空間容量
--1、查看錶空間的名稱及大小
select
t.tablespace_name,
round(sum(bytes/(1024*1024)),0)
ts_size
from
dba_tablespaces
t,
dba_data_files
d
where
t.tablespace_name
=
d.tablespace_name
group
by
t.tablespace_name;
--2、查看錶空間物理文件的名稱及大小
select
tablespace_name,
file_id,
file_name,
round(bytes/(1024*1024),0)
total_space
from
dba_data_files
order
by
tablespace_name;
3.查看所有表空間使用情況
select
b.file_id
文件ID號,
b.tablespace_name
表空間名,
b.bytes/1024/1024||'M'位元組數,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M'
已使用,
sum(nvl(a.bytes,0))/1024/1024||'M'
剩餘空間,
round(100
-
sum(nvl(a.bytes,0))/(b.bytes)*100,2)||
'%'
佔用百分比
from
dba_free_space
a,dba_data_files
b
where
a.file_id=b.file_id
group
by
b.tablespace_name,b.file_id,b.bytes
order
by
b.file_id;
總有一款適合你!