বেসিক: আমার এমএস এসকিউএল সার্ভার ডিবি-র ডিস্কের আকারটি কী?
আরও: ডেটা কোথায় আছে আমি তাড়াতাড়ি দেখতে পাব? যেমন কোন টেবিল, লগ, ইত্যাদি
বেসিক: আমার এমএস এসকিউএল সার্ভার ডিবি-র ডিস্কের আকারটি কী?
আরও: ডেটা কোথায় আছে আমি তাড়াতাড়ি দেখতে পাব? যেমন কোন টেবিল, লগ, ইত্যাদি
উত্তর:
আপনি সম্ভবত sp_spaceused কমান্ড দিয়ে শুরু করতে চাইবেন।
উদাহরণ স্বরূপ:
sp_spaceused ডাটাবেসের মোট আকার সম্পর্কে তথ্য দেয়
sp_spaceused 'MyTable' MyTable এর আকার সম্পর্কে তথ্য দেয় Return
আপনি যে সমস্ত বিষয়ে তথ্য পেতে পারেন তার জন্য দস্তাবেজগুলি পড়ুন। আপনি একবারে সমস্ত টেবিলের বিপরীতে sp_spaceused চালানোর জন্য sp_msforeachtable কমান্ডটি ব্যবহার করতে পারেন।
সম্পাদনা করুন: সচেতন থাকুন কমান্ডটি মাঝে মধ্যে একাধিক ডেটাসেটগুলি ফেরত দেয়, প্রতিটি সেটে আলাদা আলাদা পরিসংখ্যান থাকে।
এই স্ক্রিপ্টটি বর্তমান ডাটাবেসের সমস্ত টেবিলের মধ্য দিয়ে যায় এবং দেখায় যে ডেটা, সূচী এবং অব্যবহৃত স্থানের জন্য প্রত্যেকে কতটা জায়গা নেয়:
http://sqlserverpedia.com/wiki/Calculate_Current_Table_Sizes
আপনি এখানে শারীরিক ফাইলগুলি দেখতে পারেন sys.database_files
। এটিতে ফাইল এবং আকারের অবধি রয়েছে (ব্লক আইআইআরসি)।
sp_spaceused
একটি পৃথক বস্তু কতটা জায়গা নেয় তা আপনাকে দেখায়।
প্রতি টেবিলে আকার পেতে এটি চালান:
/******************************************************************************
** File: “GetTableSpaceUsage.sql”
** Name: Get Table Space Useage for a specific schema
** Auth: Robert C. Cain
** Date: 01/27/2008
**
** Desc: Calls the sp_spaceused proc for each table in a schema and returns
** the Table Name, Number of Rows, and space used for each table.
**
** Called by:
** n/a – As needed
**
** Input Parameters:
** In the code check the value of @schemaname, if you need it for a
** schema other than dbo be sure to change it.
**
** Output Parameters:
** NA
*******************************************************************************/
/*—————————————————————————*/
/* Drop the temp table if it's there from a previous run */
/*—————————————————————————*/
if object_id(N'tempdb..[#TableSizes]') is not null
drop table #TableSizes ;
go
/*—————————————————————————*/
/* Create the temp table */
/*—————————————————————————*/
create table #TableSizes
(
[Table Name] nvarchar(128) /* Name of the table */
, [Number of Rows] char(11) /* Number of rows existing in the table. */
, [Reserved Space] varchar(18) /* Reserved space for table. */
, [Data Space] varchar(18) /* Amount of space used by data in table. */
, [Index Size] varchar(18) /* Amount of space used by indexes in table. */
, [Unused Space] varchar(18) /* Amount of space reserved but not used. */
) ;
go
/*—————————————————————————*/
/* Load the temp table */
/*—————————————————————————*/
declare @schemaname varchar(256) ;
-- Make sure to set next line to the Schema name you want!
set @schemaname = 'dbo' ;
-- Create a cursor to cycle through the names of each table in the schema
declare curSchemaTable cursor
for select sys.schemas.name + '.' + sys.objects.name
from sys.objects
, sys.schemas
where object_id > 100
and sys.schemas.name = @schemaname
/* For a specific table uncomment next line and supply name */
--and sys.objects.name = 'specific-table-name-here'
and type_desc = 'USER_TABLE'
and sys.objects.schema_id = sys.schemas.schema_id ;
open curSchemaTable ;
declare @name varchar(256) ; /* This holds the name of the current table*/
-- Now loop thru the cursor, calling the sp_spaceused for each table
fetch curSchemaTable into @name ;
while ( @@FETCH_STATUS = 0 )
begin
insert into #TableSizes
exec sp_spaceused @objname = @name ;
fetch curSchemaTable into @name ;
end
/* Important to both close and deallocate! */
close curSchemaTable ;
deallocate curSchemaTable ;
/*—————————————————————————*/
/* Feed the results back */
/*—————————————————————————*/
select [Table Name]
, [Number of Rows]
, [Reserved Space]
, [Data Space]
, [Index Size]
, [Unused Space]
from [#TableSizes]
order by [Table Name] ;
/*—————————————————————————*/
/* Remove the temp table */
/*—————————————————————————*/
drop table #TableSizes ;
রবার্ট কেইন ব্লগ থেকে নেওয়া
এই কোডটি মাইক্রোসফ্ট এসকিউএল 2005+ এর জন্য
রান স্টার্ট \ প্রোগ্রামস \ মাইক্রোসফ্ট এসকিউএল সার্ভার \ এন্টারপ্রাইজ ম্যানেজার। ডাটাবেস শীট খুলুন, বৈশিষ্ট্য% ডাটাবেস%% এ আপনি অবস্থান ডেটা ফিলার এবং লেনদেন ফাইলগুলি দেখতে পারেন।
এটি এমন একটি কোয়েরি / ভিউ যা কোনও "দুষ্ট" কার্সর বা লুপ ছাড়াই এই সমস্ত তথ্য এবং আরও অনেক কিছু পেয়ে যায়। ;-)
/*
vwTableInfo - Table Information View
This view display space and storage information for every table in a
SQL Server 2005 database.
Columns are:
Schema
Name
Owner may be different from Schema)
Columns count of the max number of columns ever used)
HasClusIdx 1 if table has a clustered index, 0 otherwise
RowCount
IndexKB space used by the table's indexes
DataKB space used by the table's data
16-March-2008, RBarryYoung@gmail.com
31-January-2009, Edited for better formatting
*/
--CREATE VIEW vwTableInfo
-- AS
SELECT SCHEMA_NAME(tbl.schema_id) as [Schema]
, tbl.Name
, Coalesce((Select pr.name
From sys.database_principals pr
Where pr.principal_id = tbl.principal_id)
, SCHEMA_NAME(tbl.schema_id)) as [Owner]
, tbl.max_column_id_used as [Columns]
, CAST(CASE idx.index_id WHEN 1 THEN 1 ELSE 0 END AS bit) AS [HasClusIdx]
, Coalesce( (Select sum (spart.rows) from sys.partitions spart
Where spart.object_id = tbl.object_id and spart.index_id < 2), 0) AS [RowCount]
, Coalesce( (Select Cast(v.low/1024.0 as float)
* SUM(a.used_pages - CASE WHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END)
FROM sys.indexes as i
JOIN sys.partitions as p ON p.object_id = i.object_id and p.index_id = i.index_id
JOIN sys.allocation_units as a ON a.container_id = p.partition_id
Where i.object_id = tbl.object_id )
, 0.0) AS [IndexKB]
, Coalesce( (Select Cast(v.low/1024.0 as float)
* SUM(CASE WHEN a.type <> 1 THEN a.used_pages WHEN p.index_id < 2 THEN a.data_pages ELSE 0 END)
FROM sys.indexes as i
JOIN sys.partitions as p ON p.object_id = i.object_id and p.index_id = i.index_id
JOIN sys.allocation_units as a ON a.container_id = p.partition_id
Where i.object_id = tbl.object_id)
, 0.0) AS [DataKB]
, tbl.create_date, tbl.modify_date
FROM sys.tables AS tbl
INNER JOIN sys.indexes AS idx ON (idx.object_id = tbl.object_id and idx.index_id < 2)
INNER JOIN master.dbo.spt_values v ON (v.number=1 and v.type='E')
উপভোগ করুন।
জিইউআই থেকে এটি কীভাবে করা যায় তার কয়েকটি বিবরণ রয়েছে।
রিয়েল ডিবিএ'র জানা: জিইউআই হ'ল চাম্পের জন্য।
sp_helpdb
সমস্ত ফাইলের নাম, অবস্থান, ডিস্কে স্থান এবং টাইপগুলির একটি রেকর্ডসেট দেয় Return
আপনি প্রতিটি ডাটাবেসের সিফিল টেবিল থেকে ফাইলের নামও পুনরুদ্ধার করতে পারেন।