SQL SERVER 2008

تجارب من در رابطه با SQL SERVER

تنظیم SQL Server برای Back Up گرفتن به صورت خودکار (تعریف job)
ساعت ۳:۳۱ ‎ب.ظ روز ۱۳۸۸/۳/٢٦  کلمات کلیدی: automatic backup ، sql server ، job ، پشتیبانگیری خودکار

داشتم کلمات کلیدی را که دوستان از آن استفاده کردند و به وبلاگ من رسیدند را بررسی میکردم که متوجه شود ظاهرا افراد زیادی دنبال مطالبی در رابطه با پشتیبانگیری خودکار هستند. به همین دلیل تصمیم گرفتم مطلبی را که قبلا به همراه دوست عزیزم آقای محبی تهیه کرده بودیم را برای استفاده دوستان روی وبلاگ قرار دهم. لطفا از راهنمای زیر استفاده نمایید :

 


۱.    با راست کلیک روی بانک اطلاعاتی مورد نظر، گزینه Tasks\Backup را انتخاب کنید.
۲.    نوع Backup را انتخاب کنید. Full حجم زیادی از هارد را مصرف خواهد کرد و به ازای هر backup گیری یک فایل ایحاد می‌کند. در حالی که Differntial استفاده بهینه‌تری از فضای هارد داشته و فقط یک فایل ایجاد می‌کند. (ترجیحا از نوع Differntial استفاده شود)
۳.    در قسمت Destination در پایین صفحه، مسیر مورد نظر برای پشتیبان گیری مشخص می‌شود.
۴.    در بالای همین صفحه روی فلش کنار دکمه  Script کلیک میکنیم و از منوی باز شده گزینه Script action to job را باز میکنیم.
۵.    در صفحه باز شده و در قسمت سمت چپ صفحه از بخش Select a page‌ گزینه Schedules‌ را انتخاب میکنیم.
۶.    در همین صفحه روی دکمه New‌ کلیک میکنیم.
۷.    صفحه جدیدی به نام New Job Schedule باز خواهد شد.
۸.    در این صفحه بعد از نام گذاری، تنظیمات لازم و دلخواه در رابطه با زمانبندی Back Up گیری را انجام میدهیم.
۹.    در اینجا با کلیک روی دکمه OK صفحه را بسته تا صفحه New Job مجددا نمایش داده شود.
۱۰.    با کلیک روی Notifications و تیک زدن چک باکس Write to … یک Notify تعریف کنید. نوع این Notify را When the job completes تعریف کنید.
۱۱.    دکمه Ok را کلیک کنید تا به صفحه تعریف Backup برگردید.
۱۲.    دکمه Ok این صفحه را هم کلیک کنید تا صفحه بسته شود.
۱۳.    پایان


 
وارد کردن داده های یک فایل CSV در SQL Server
ساعت ٤:٢٩ ‎ب.ظ روز ۱۳۸۸/۳/۱٩  کلمات کلیدی: sql server ، bulk insert ، csv ، import data

شاید بعضی اوقات نیاز پیدا کرده باشید که داده هایی را در جداول SQL Server وارد کنید. این مطلب را که قبلا در جایی خوانده بودم را برای شما مینویسم تا شاید به درد بعضی از دوستان بخورد.
همانطور که میدانید CSV فایلیست که در آن مطالب به کمک کاما از هم جدا شده‌اند و یک فرمت استاندارد و شناخته شده میباشد که خیلی از نرم‌افزارهای بزرگ مانند excel هم آن را تولید و هم از آن داده دریافت میکنند.


۱-ابتدا توسط اسکریپت زیر یک جدول تستی بسازید :


Create TestTable
USE TestData
GO
CREATE TABLE CSVTest
(ID INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
BirthDate SMALLDATETIME)
GO


۲-یک فایل با فرمت CSV در درایو C و در آدرس C:\csvtest.txt بسازید که دارای محتوای زیر باشد :


 1,Masoud,Ramezani,19830101
2,Name1,Family1,19790122
3, Name2,Family2,20071101
4, Name3,Family3,20040202


۳- در این مرحله اسکریپت زیر را اجرا کنید تاداده ها از روی فایل مورد نظر روی جدول بارگزاری شود. توجه داشته باشید که اگر خطایی در حین انجام این کار رخ دهد فقط همان سطر وارد نمیشود و کار ادامه میابد.


BULK INSERT CSVTest
FROM 'c:\csvTest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

GO


۴-توسط اسکریپت زیر محتوای جدول را چک کنید.


SELECT *
FROM CSVTest
GO


۵- در انتها هم میتوانید این جدول تستی را از پایگاه داده حذف نمایید.


Drop Table CSVTest
GO


 
آموزش گام به گام قسمت بندی(partitioning) در SQL Server
ساعت ٤:۳٠ ‎ب.ظ روز ۱۳۸۸/۳/۱٧  کلمات کلیدی: sql server ، partitioning ، filegroup ، partition function

در ادامه مطلب قبلی با عنوان معرفی تکنیک قسمت بندی (partitioning) در SQL Server میخواهم مثالی در این زمینه مطرح کنم که شاید به درد خیلی از افراد بخورد. در این مثال نحوه قسمت بندی یک جدول را بیان میکنم. لطفا ابتدا مطلی قبل را برای آشنایی بیشتر مطالعه بفرمایید.

مرحله اول – یک پایگاه داده تستی با دو filegroup مختلف بسازید.
این متن برای بیان مثال از درایو C کامپیوتر استفاده میکند. اگرچه باد بیان کنم که برای به دست آوردن بهترین سطح کارایی قسمت‌بندی بهتر است که filegroup ها در دیسک‌های سخت مجزا تعریف شوند. قبل از اجرای اسکریپت زیر، مطمئن شوید که درایو C کامپیوتر شما حاوی دو فولدر میباشد.فولدرهای Primary و Secondary در مثال زیر دو فولدری هستند که برای filegroup های مختلف تعریف شده‌اند. اسکرپت زیر را برای ساختن پایگاه داده تستی اجرا نمایید.


USE Master;
GO
--- Step 1 : Create New Test Database with two different filegroups.
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'TestDB')
DROP DATABASE TestDB;
GO
CREATE DATABASE TestDB
ON PRIMARY
(NAME='TestDB_Part1',
FILENAME=
'C:\Data\Primary\TestDB_Part1.mdf',
SIZE=2,
MAXSIZE=100,
FILEGROWTH=1 ),
FILEGROUP TestDB_Part2
(NAME = 'TestDB_Part2',
FILENAME =
'C:\Data\Secondary\TestDB_Part2.ndf',
SIZE = 2,
MAXSIZE=100,
FILEGROWTH=1 );
GO

مرحله دوم – تابع محدوده قسمت‌بندی را بسازید.
تابع قسمت‌بندی محدوده مقادیری که در قسمت متفاوت ذخیره شده است را تعریف مینماید. برای مثال اجازه دهید که تصور کنیم ۱۰ رکورد اول در یک filegroup و مابقی در filegroup دیگر ذخیره شده است. تابع زیر، تابع قسمت‌بندی را با محدوده مشخص تعریف خواهد کرد.


USE TestDB;
GO
--- Step 2 : Create Partition Range Function
CREATE PARTITION FUNCTION TestDB_PartitionRange (INT)
AS RANGE LEFT FOR
VALUES (10);
GO

مرحله سوم – طرح قسمت‌بندی را به filegroup ها الحاق کنید.
تابع قسمت‌بندی باید به filegroup ها الحاق شود تا در قسمت‌بندی جدول استفاده شود. در مثال زیر قسمت‌بندی روی filegroup های primary و secondary ساخته شده است.


USE TestDB;
GO
--- Step 3 : Attach Partition Scheme to FileGroups
CREATE PARTITION SCHEME TestDB_PartitionScheme
AS PARTITION TestDB_PartitionRange
TO ([PRIMARY], TestDB_Part2);
GO


مرحله چهارم – ساختن جدول با کلید و طرح قسمت‌بندی
جدولی که باید قسمت‌بندی شود باید به صورتی ساخته شود که دارای ستونی با نامی باشد که با  طرح قسمت‌بندی برای قسمت‌بندی جداول در filegroup های مختلف استفاده شود. مثال زیر ستونهای شناسه را به عنوان کلید قسمت‌بندی نشان داده است.


USE TestDB;
GO
--- Step 4 : Create Table with Partition Key and Partition Scheme
CREATE TABLE TestTable
(ID INT NOT NULL,
Date DATETIME)
ON TestDB_PartitionScheme (ID);
GO


مرحله پنجم – ساخت اندیس روی جدول قسمت‌بندی شده که بحثی اختیاری و توصیه شده است.
این مرحله اختیاریست اما به شدت توصیه شده است. مثال زیر نحوه ساخت اندیسهای ردیف شده جدول را نشان میدهد. در اینجا اندیس با استفاده از طرح قسمت‌بندی و کلید قسمت‌بندی به عنوان یک جدول قسمت‌بندی شده ساخته شده است.


USE TestDB;
GO
--- Step 5 : (Optional/Recommended) Create Index on Partitioned Table
CREATE UNIQUE CLUSTERED INDEX IX_TestTable
ON TestTable(ID)
ON TestDB_PartitionScheme (ID);
GO


مرحله ششم -  وارد کردن داده در جدول قسمت‌بندی شده
داده ها را در جدول قسمت‌بندی شده وارد کنید. در اینجا کل ۳ رکورد را وارد میکنیم. قبلا تصمیم گرفته بودیم که در قسمت‌بندی اول شناسه کلیدهای قسمت‌بندی یک تا ده را قرار دهیم و مابقی رکوردها را در قسمت دوم قرار دهیم. در مثال زیر رکورد با شناسه (ID) برابر ۱ وارد قسمت اول شده است و مابقی در قسمت دوم وارد خواهند شد.


USE TestDB;
GO
--- Step 6 : Insert Data in Partitioned Table
INSERT INTO TestTable (ID, Date) -- Inserted in Partition 1
VALUES (1,GETDATE());
INSERT INTO TestTable (ID, Date) -- Inserted in Partition 2
VALUES (11,GETDATE());
INSERT INTO TestTable (ID, Date) -- Inserted in Partition 2
VALUES (12,GETDATE());
GO


مرحله هفتم – داده را از جدول تستی آزمایش کنید.
روی جدول TestTable جستجو بزنید و داده های وارد شده در آن را ببینید.


USE TestDB;
GO
--- Step 7 : Test Data from TestTable
SELECT *
FROM TestTable;
GO

مرحله هشتم – درستی یا نادرستی وارد شدن داده ها را بررسی نمایید.
میتوانیم روی view با نام sys.partitions کوئری بزنیم و بررسی کنیم که جدول TestTable شامل دو قسمت است و همانطور که در مرحله ۶ بیان شد، یک رکورد وارد قسمت ۱ و دو رکورد وارد قسمت ۲ شده‌اند.


USE TestDB;
GO
--- Step 8 : Verify Rows Inserted in Partitions
SELECT *
FROM sys.partitions
WHERE OBJECT_NAME(OBJECT_ID)='TestTable';
GO

منبع مطلب

 


 
معرفی تکنیک قسمت بندی (partitioning) در SQL Server
ساعت ٦:۱٤ ‎ب.ظ روز ۱۳۸۸/۳/۱٢  کلمات کلیدی: performance ، سطح کارایی ، sql server ، partitioning

قسمت بندی (partitioning) یک فرآیند یا روش است که توسط آن جداول خیلی بزرگ و اندیسها(index) به چندین بخش کوچکتر و بخشهای قابل مدیریت تر تقسیم میشود. SQL Server نسخه ۲۰۰۵ به بعد این اجازه را میدهد که جداول را با استفاده از محدوده‌های تعریف شده قسمت بندی کرد و همچنین خصوصیات مدیریتی و ابزارهایی را برای نگه داشتن جداول قسمتبندی شده در سطح کارایی بهینه ارائه داده است.


جداول بر اساس ستونهایی که برای عملیات قسمت بندی استفاده میشوند و محدوده‌های مشخص شده برای هر قسمت، تقسیم بندی میشوند. نمونه‌ای از این ستون میتواند ستون شناسه صعودی باشد که میتواند در محدوده‌های مختلف قسمت بندی شود. محدوده ‌های مختلف میتوانند در قسمت‌های مختلف باشند، قسمت‌های میتوانند در filegroup های مختلف باشند و قسمت‌های مختلف میتوانند روی هارد دیسکهای مختلف باشند تا سطح کارایی را بالا ببرند.


تقسیم‌بندی‌ها میتوانند به راحتی با استفاده از رویه ها و توابع راه اندازی شوند، به علاوه جداول غول‌آسا میتوانند به سادگی برای هر قسمت دارای اندیسهای مجزا باشند..این میتواند به بالا بردن سطح کارایی منجر شود. این تکنیک زمانی باعث بالا رفتن کارایی میشود که سرعت هارد دیسک گلوگاه کارایی سیستم باشد. اگر CPU یا RAM گلوگاه سیستم باشند، این تکنیک کمک بیشتری نمیکند.