مدیریت دیتابیس Sql server و برنامه نویسی#C
 

ایجاد CheckSum  بر روی یک ستون string

گاها برای join  کردن جداول برای اینکه در قسمت On  رشته حرفی ننویسیم بهتر ایت اول آن را به یک int  تبدیل کنیم

فرمان های زیر این ستون عددی را برای ما می سازند.

ALTER TABLE [CodalDW].[STA].[BalanceSheetLastStatement]
ADD cs_Symbol AS CHECKSUM(Symbol);

GO  
CREATE INDEX Symbol_index ON [CodalDW].[STA].[BalanceSheetLastStatement]  (cs_Symbol); 

استفاده از ColumnIndex  برای افزایش کارایی و سرعت DataWarehouse

مقاله زیر توضیحات کامل در خصوص نحوه و محل استفاده از ایندکس توضیح می دهد

Columnstore indexes: Overview

 

مقاله زیر در خصوص روش استفاده ایندکس در انبار داده توضیح می دهد

Columnstore indexes - Data Warehouse

بدست آوردن سایز فایل دیتابیس

برای بدست آوردن سایز فایل های دیتابیس دستور زیر را استفاده می کنیم

 

SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8)/1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'DatabaseName'
GO

انتقال Table  به یک filegroup  جدید

1- مشخص کردن محل فعلی جدول مورد نظر

SELECT    tbl.name AS [Table Name],
          CASE WHEN dsidx.type='FG' THEN dsidx.name ELSE '(Partitioned)' END AS [File Group]
FROM      sys.tables AS tbl
JOIN      sys.indexes AS idx
ON        idx.object_id = tbl.object_id
AND       idx.index_id <= 1
LEFT JOIN sys.data_spaces AS dsidx
ON        dsidx.data_space_id = idx.data_space_id
ORDER BY  [File Group], [Table Name]

2- انتقال جدول به فایل گروه جدید با دستور زیر

CREATE UNIQUE CLUSTERED INDEX [Index_Name]
ON [SchemaName].[TableName]
([ClusteredIndexKeyFields]) WITH (DROP_EXISTING =ON, ONLINE =ON)
ON [FilegroupName] GO


3-انتقال ایندکس Non-Cluster به فایل گروه جدید
--1st check the index information using the following sp
sp_helpindex [YourTableName]
--Now by using the following query you can move the remaining
--indexes to secondary filegroup

CREATE NONCLUSTERED INDEX [Index_Name]
ON
[SchemaName].[TableName]
([IndexKeyFields])WITH
(DROP_EXISTING =ON, ONLINE =ON)
ON[FilegroupName] GO
 

حذف کردن file  در sql server

بعضی مواقع یم فایل جدید در دیتابیس ایجاد کردید که به Filegeoup  اختصاص داده نشده و می خواهید ان را پاک کنید ولی با پیغام زیر مواجه می شوید

SQL SERVER – Error Msg 5042, Level 16 – The File ‘ّFile name’ Cannot be Removed Because it is Not Empty

برای اینکار دستورات زیر را اجرا کنید:

DBCC SHRINKFILE (N'filename', EMPTYFILE)

ALTER DATABASE [databasename] REMOVE FILE [filename]

استفاده از dynamic management views برای کنترل زمان انتظار منابع در sql server

با استفاده از  ys.dm_os_wait_stats  می توانید زمان انتظار سورس های توسط بانک اطلاعاتی را مشاهده کنید

بعنوان مثال کوئری زیر 10 عنوانی که بیشترین زمان انتظار را دارند نمایش می دهد:

SELECT TOP(10)
dows.*
FROM sys.dm_os_wait_stats AS dows
ORDER BY dows.wait_time_ms DESC;

اگر در نتایج حاصله از اجرای کوئری بالا در ستون wait type  عبارت های زیر مشاهده شد ، یعنی زمان انتظار IO  در سرور و بانک اطلاعاتی شما بالاست و باید راهکاری در این خصوص اتخاذ کنید

ASYNC_IO_C0MPLETI0N, IO_C0MPLETION, LOGMGR, WRITELOG, or PAGEIOLATCH

در پست های بعدی بیشتر در این خصوص صحبت خواهیم کرد

 

 
  BLOGFA.COM