بررسی Performance دستورات SQL Server

سلام.

در اینجا سلسله مباحث آموزشی در مورد ساختار فیزیکی فایلهای MDF و بررسی جزئی تر به نحوه ذخیره سازی اطلاعات ، بررسی Query ها ، جداول ، ایندکسها و... مطرح خواهد شد.

نرمال سازی دیتابیس

نرمال سازی دیتابیس: نرمال سازی روندی است که در آن موجودیت ها و خواص آن که شناسایی شده ، برای دیتایبس های رابطه ای به طور مناسب ایجاد کنیم. در عبارات علوم کامپیوتر ، یکتا به معنی این است که یک مقدار نمیتواند ( و معقولانه تر نبایداست) به مقادیر کوچکتر شکسته شود. برای ایجاد یک دیتابیس نرمال ، باید یک سری موارد به صورت سلسله مراتبی انجام شود. در هر مرحله که انجام میشود یک سری جدول به دیتابیس اضافه می شود و ستونهای جداول موجود نیز کاسته می شود. چرا نرمال سازی؟ قبل از بررسی قوانین نرمال سازی ، به مواردی خواهیم پرداخت که در صورت رعایت درست قوانین نرمال سازی روی جداول از این مزایا استفاده خواهیم کرد. - حذف داده های تکراری ، - جلوگیری از نوشتن کدهای اضافی برای یکسان سازی داده های تکراری. - نگهداری جداول به صورت لاغر(کوچک) که باعث افزایش حجم میزان داده های یک جدول در یک Page 8KB ذخیره خواهد شد و کاهش تعداد خواندن داده ها که برای خواندن اطلاعات یک جدول مورد نیاز هست که باعث افزایش سرعت و بازدهی برنامه میشود. - افزایش به کار گیری ایندکسهای کلاستر، که باعث افزایش سرعت و Join ها می شود. - کاهش ایندکسهای مورد نیاز برای هرجدول ، زیرا نگهداری ایندکس ها هزینه های بازدهی زیادی در بردارد. حذف داده های تکراری هر بخش از اطلاعات که بیش از یک مرتبه در دیتابیس باشد منتظر رخ دادن یک خطا می باشد.مثلا اسم شما در چند مکان مختلف ذخیره شده و یکی از آنها تغییر میکند ولی مابقی آنها تغییر نمیکند که باعث می شود شما دارای چند اسم گوناگون باشید. جلوگیری از کدهای غیر ضروری برنامه نویسی اضافی در تریگرها، Stored Procedure ها یا حتی در لایه منطقی برنامه نیازمند بررسی ساختار داده ای ضعیف هست و همچنین میتواند در بازدهی برنامه تاثیر منفی داشته باشد. کدهای اضافی همچنین احتمال افزایش باگ در برنامه را بیشتر میکند.

نظرسنجی در مورد راه اندازی کلاس مجازی

سلام دوستان عزیزم. میخواستم ببینم چند نفر تمایل دارند کلاسهای مجازی آموزشی راه اندازی بشه.

این کلاسها شامل دوره های دات نت و SQL Server هست که از مبتدی تا پیشرفته رو شامل میشه.

دوستانی که تمایل دارند ایمیل و نظرشونو بفرمایند تا در صورت توافق این کلاسها راه اندازی بشه.

Shrink کردن دیتابیس از طریق دستورات T-SQL

در داخل Management Studio دکمه New Query رو بزنید. در کادر باز شده باید از دستورات زیر استفاده کنید.

DBCC ShrinkFile

DBCC ShrinkDatabase.

 

ساختار دستوری DBCC ShrinkFile

DBCC SHRINKFILE

(

    { file_name | file_id }

    { [ , EMPTYFILE ]

    | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]

    }

)

[ WITH NO_INFOMSGS ]

File_Name

نام فایل برای Shrink کردن.

File_Id

شماره Id فایل برای Shrink کردن. با استفاده از تابع سیستمی File_IDEX یا گرفتن Query از Sys.Database_Files میتوانید این شماره را بدست بیارید.

Target_Size

سایز فایل به مگابایت هست که بعد از shrink کردن باید به این مقدار برسد.این مقدار از نوع صحیح می باشد. اگر این عدد مشخص نشود ، خود SQL Server سایز فایل را به مقدار اولیه فایل ، که زمان ایجاد دیتابیس مشخص کردیم برخواهد گرداند.

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

EMPTYFILE :

منتقل کردن تمام اطلاعات از یک فایل به فایل خاص دیگر در یک Filegroup یکسان.

Notrauncate :

منتقل کردن Page های اختصاص یافته از اخر فایل DATA به فضای اختصاص نیافته ابتدای فایل با تعیین کردن یا تعیین نکردن Target_Percent . فضای آزاد در انتهای به سیستم عامل برنخواهد گشت. و سایز فیزیکی فایل تغییر نخواهد کرد. بنابراین ، با مشخص کردن این گزینه ، فایل به نظر میاید Shrink  نشده است.

NOTRUNCATE فقط روی فایل های Data قابل اجراست و روی فایل Log اثری ندارد.

 

TRUNCATEONLY :

رهاسازی فضای آزاد انتهای فایل و برگرداندن به سیستم عامل، ولی هیچ جابجایی Page در داخل فایل صورت نمی گیرد. فایل data به آخرین Extent اختصاص داده شده Shrink خواهد شد.

Target_size در این دستور کارایی ندارد.

این دستور فقط روی فایل data اثر دارد.

With No_Infomsgs:

پیغامهای اطلاعاتی را نمایش نمی دهد.

 

توضیحات :

DBCC SHRINKFILE فقط روی فایلهای دیتابیس در حال استفاده کارایی دارد. برای تغییر دیتابیس در حال استفاده میتوانید از دستور Use استفاده کنید.

زمانی که اجرای آن با موفقیت انجام نشود ، خطا برمیگرداند.

دیتابیس در حال Shrink در Single-User نیست. و کاربران میتوانند با دیتابیس درحال Shrink شدن کار کنند.نیازی نیست برای Shrink کردن دیتابیسهای سیستمی SQL Server را به Single_User Mode ببرید.

 

مثال :

Shrink کردن یک فایل Data به یک حجم خاص :

USE UserDB;

GO

DBCC SHRINKFILE (DataFile1, 7);

GO

Shrink کردن فایل LOG به یک حجم خاص :

USE AdventureWorks2008R2;

GO

-- Truncate the log by changing the database recovery model to SIMPLE.

ALTER DATABASE AdventureWorks2008R2

SET RECOVERY SIMPLE;

GO

-- Shrink the truncated log file to 1 MB.

DBCC SHRINKFILE (AdventureWorks2008R2_Log, 1);

GO

-- Reset the database recovery model.

ALTER DATABASE AdventureWorks2008R2

SET RECOVERY FULL;

GO

 

 

دستور DBCC ShrinkDatabase :

DBCC SHRINKDATABASE

( database_name | database_id | 0

     [ , target_percent ]

     [ , { NOTRUNCATE | TRUNCATEONLY } ]

)

[ WITH NO_INFOMSGS ]

ساختار این دستور مطابق دستور DBCC ShrinkFile هست فقط به جای نام فایل اینجا باید نام دیتابیس یا ID دیتابیس را بنویسید.

 

برای Shrink کردن تمامی فایلهای DATA,LOG باید از این دستور استفاده کرد و برای Shrink کردن یک فایل خاص باید از دستور DBCC ShrinkFile استفاده کرد.

برای اجرای این دستور نیاز به دسترسی sysAdmin یا db_Owner می باشد.

Shrink یک دیتابیس به یک درصد خاص از فضای آزاد:

DBCC SHRINKDATABASE (UserDB, 10);

GO

نحوه Shrink دیتابیس از طریق Management Studio

وقتی Recovery Model روی Full باشد ابتدا باید از دیتابیس یک Full Backup  گرفته و بعد از دیتابیس یک Log Backup تهیه کنید.

برای تهیه یک Full&Log Backup روی دیتابیس مورد نظر راست کلیک کنید.


با انتخاب Backup پنجره زیر نمایش داده می شود.

 

از منوی Recovery Type ابتدا گزینه Full را انتخاب کرده و سپس از دیتابیس یک Full Backup تهیه کرده و مجدد روی دیتابیس راست کلیک کرده و از منوی Backup در Backup Type گزینه Transaction Log رو انتخاب کرده و یک Log Backup تهیه کنید. پس از آن روی دیتابیس مجدد راست کلیک کرده و از منوی Tasks-Shrink-File رو انتخاب می کنید.

 

با انتخاب این گزینه پنجره زیر نمایش داده می شود.




 

از منوی File Type گزینه Log رو انتخاب کرده و Ok رو بزنید. با اینکار Shrink انجام خواهد شد.

نیازی نیست روی File Data اینکار صورت بگیرد. زیرا فضای گرفته شده توسط هارد مجدد توسط اطلاعات وارد شده پر خواهد شد.

اگر Recovery Model دیتابیس روی Simple هست نیازی به تهیه Backup از دیتابیس نیست و میتوان دیتابیس رو مستقیما Shrink کرد.


نحوه تغییر Recovery Model

برای تغییر Recovery Model روی دیتابیس راست کلیک کرده و Properties را بزنید.



پنجره زیر به شما نمایش داده خواهد شد.



در قسمت Options میتوانید Recovery Model رو تغییر بدید. اگر Recovery model رو روی Simple گذاشته اید ، میتوانید با انتخاب گزینه Auto Shrink عملیات Shrink رو به خود SQL Server واگذار کنید.

Database Recovery Model

سلام.

امروز میخوام توضیح مختصری در مورد Recovery Model دیتابیس بدم و اینکه چطوری از افزایش حجم فایل LOG جلوگیری کنیم.

ما در دیتابیس سه نوع Recovery Model داریم. Full-Simple-Bulk Logged .


مدل Full :

در این مدل تمامی عملیات کاربر در فایل Log ذخیره خواهد شد و این عملیات شامل تغییراتی هست که بر روی اطلاعات در داخل دیتابیس انجام خواهد شد.

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


مدل Simple :

در این مدل اطلاعات در فایل Log برای ما اهمیتی ندارند و به محض Commit شدن در فایل MDF بدون تهیه Backup LOG میتوان عملیات Shrink رو انجام داد. این مدل زمانی کاربرد دارد که میزان تغییرات روی اطلاعات در طول روز کم هست یا اطلاعات دارای اهمیت بالایی نیستند که بخواهیم از اطلاعات در هر دقیقه یک Log backup تهیه کنیم. با انتخاب این گزینه و انتخاب Auto Shrink در قسمت options در منوی Database Properties خودبه خود عملیات Shrink روی دیتابیس انجام خواهد شد و فایل Log  همیشه در یک سایز اولیه باقی می ماند.

مدل Bulk Logged:

در این مدل عملیاتی که دستور Bulk copy یا Select insert روی دیتابیس اعمال می شوند هیچ Log ذخیره نمی شود که سرعت عملیات این دستورات افزایش پیدا کند و حجم فایل log به صورت تصاعدی بالا نرود. در این روش نیز مانند مدل Full باید اول از دیتابیس یک Log Backup گرفته تا بتوانیم دیتابیس رو Shrink کنیم.


در پست آینده نحوه Shrink کردن دیتابیس هم از طریق Management Studio هم از طریق کدنویسی رو توضیح خواهم داد.


بازسازی دیتابیس MSDB

سلام.

اگر هنگام Backup گرفتن از دیتابیس بهتون خطا داد که دیتابیس MSDB با مشکل روبرو شده ولی Backup گیری درست  انجام شده است، باید برای رفع مشکل مراحل زیر را طی کنید.

دیتابیس MSDB دیتابیسی هست که تمام کارهای SQL Agent داخل آن ذخیره می شود همچنین تمام History مربوط به Backup و Restore و replication نیز داخل ان ذخیره می شود.

اگر در SQL  تنظیمات خاصی برای Backup,Restore یا Replication صورت نگرفته باشد ، میتوان دیتابیس رو از نو ایجاد کرد.ولی اگر دارای تنظیمات خاصی باشد یا Job خاصی تنظیم شده باشد با طی کردن مراحل زیر دیتابیس درست خواهد شد.

Alter Database Msdb set Single_user

Go

Dbcc checkdb('Msdb',Repair_rebuild)

Go

Alter Database Msdb Set multi_user

Go

با این دستورات ابتدا دیتابیس msdb رو به حالت تک کاربره می بریم. برای اینکار حتما باید sql agent غیر فعال شود.

سپس با استفاده از دستور dbcc checkdb تمام دیتابیس چک شده و اگر ایرادی داشته باشه ، اون موارد رفع می شود.

سپس دیتابیس رو دوباره به حالت Multi_user بر می گردانیم.

با اینکار مشکل رفع خواهد شد.

اگر دیتابیس Msdb کلا خراب شده باشد و هیچ backup هم نداشته باشیم و بخواهیم دیتابیس رو از اول ایجاد کنیم باید مراحل زیر رو انجام بدیم:

ابتدا سرویس مربوط به sql server رو stop میکنیم. بعد در منوی Run تایپ کنید cmd. و در پنجره باز شده دستور زیر رو تایپ کنید.

C:\program files\microsoft sql server\mssql\binn\sqlservr.exe –c –t 3604

سپس در یک پنجره جدید

cmd دستورات زیر رو تایپ کنید.

Osql –S . –E –q"sp_detach_db 'msdb'"

سپس از مسیر نصب شده sql server  فایلهای دیتابیس msdb که msdbdata.mdf و msdblog.ldf رو حذف کنید یا تغییر نام بدید.سپس دستور زیر رو اجرا کنید.

Osql –S  . –E  -I"c:\program files\microsoft sql server\mssql\install\instmsdb.sql"

پس از اتمام دستور sql server رو shutdown کرده مجدد به صورت عادی اونو start کنید.

با اینکار دیتابیس msdb از ابتدا ساخته خواهد شد.

 

کلاسهای آموزش SQL server 2008

سلام.

دوستانی که تمایل دارند در دوره های SQl Server 2008 Design@implementation  و دوره SQL server 2008 Advanced T-sql شرکت کنند با همراه بنده تماس بگیرند.

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

طی روزهای آتی لیست کلاسهای این دوره رو قرار میدهم.

مابقی سرفصل دروس SQL server 2008 Administrator

در ادامه مطلب ، بخش سوم سرفصل دروس SQL Server 2008 Administrator خدمتتان ارائه می گردد.

ادامه نوشته

ادامه سرفصل دروس SQL Server 2008 administrator

در ادامه مطلب ، ادامه سرفصل  دروس SQL Server2008 Administrator خدمتتان ارائه می گردد.

ادامه نوشته

سرفصل دروس SQL Server 2008 Administrator

سلام دوستان.

در ادامه مطلب ، بخشی از سرفصل دروس SQL Server 2008 Administrator می باشد که به صورت خصوصی تدریس میکنم.

دوستانی که تمایل داشتند میتوانند با شماره 8014-246-0912 تماس بگیرند.

هزینه کلاس ساعتی 20000 تومان می باشد.مدت زمان کلاس 78 ساعت و 26 جلسه می باشد.

مکان کلاس در خیابان گاندی می باشد.

همچنین امکان برگزاری کلاسها به صورت گروهی برای شرکتها و سازمانها می باشد.

حداکثر ظرفیت کلاسها به صورت نیمه خصوصی حداکثر 3 نفر می باشد.

با تشکر.

ادامه نوشته

نحوه کار Pivot در SQL Server 2008

Pivot :

این دستور العمل برای تبدیل مقادیر موجود در سطرها به ستونها و استفاده از توابع محاسباتی می باشد و عملیاتی مانند Cross-Tab در Excel را پیاده سازی می کند.

ساختار دستوری به شکل زیر می باشد:

Select Field1,Field2

From(

Table_Source

)

Pivot ( Aggregate Function(Value_Column)

For Pivot Column

In()

) Table Alias

در Select اول فیلدهایی را که در Column_list قسمت Pivot استفاده کرده و فیلدهایی که براساس آن میخواهیم اطلاعات گروه بندی شود را می آوریم.

در قسمت Table_Source که در واقع یک Derived Table هست ، اطلاعات مورد نیاز از جدولی که میخواهیم محاسبات را انجام دهیم فراخوانی می کنیم.

در قسمت Pivot تابع محاسباتی روی یکی از فیلدهای Select دوم صورت خواهد گرفت .

بخش For نام ستونی که میخواهیم مقادیر آن ستون را به ستونهای مختلف تبدیل کنیم می آوریم.

بخش In لیست مقادیری که میخواهیم به ستون تبدیل شود.

برای روشن شدن مطلب به مثال زیر توجه کنید:

یک جدول هدر فاکتور فروش با مشخصات زیر داریم:

Create Table HdrSale

(     Id Int,

      FactorDate char(8),

      Cust_Name Varchar(30)

)

 

 

یک جدول ریز فاکتور فروش با مشخصات زیر داریم :

Create Table DetailSale

(     Id Int,

      IdHdrSale int,

      Quantity int,

      ProductCode int

)

 

در جدول اول اطلاعات زیر را اضافه می کنیم :

Insert into Hdrsale 

      values(1,'89/10/01','Mohammadi'),

              (2,'89/10/02','Karimi'),

              (3,'89/10/02','Sadeghi'),

              (4,'89/10/01','Mohammadi'),

              (5,'89/10/02','Karimi')

در جدول دوم اطلاعات زیر را وارد می کنیم :

Insert into DetailSale

      Values(1,1,2,10),

              (2,1,3,20),

              (1,2,10,10),

              (1,3,5,20),

              (2,3,10,10),

              (1,4,5,10),

              (2,4,4,20),

              (1,5,20,10)

 

حال اگر Query زیر را اجرا کنیم لیست تمام فاکتورهای مشتری در تاریخ های مختلف را خواهیم داشت .

       Select Hs.FactorDate,Ds.Quantity,Hs.Cust_Name

       From HdrSale Hs

            Inner Join

      DetailSale DS

            On Ds.IdHdrSale=Hs.Id

 

حال ما میخواهیم به تفکیک افراد ببینیم در هر روز چه تعداد جنس فروخته شده است.

میخواهیم نتیجه زیر را داشته باشیم:

Date

Karimi

Sadeghi

Mohammadi

89/10/01

0

0

14

89/10/02

30

15

0

 

برای اینکار باید از Pivot استفاده کنیم:


 

با اجرای Query زیر نتیجه بالا بدست خواهد آمد :

Select FactorDate,Isnull([Karimi],0) as [Karimi],isNull([Mohammadi],0) as [Mohammadi],

            IsNull([Sadeghi],0) as [Sadeghi]

From(

       Select Hs.FactorDate,Ds.Quantity,Hs.Cust_Name

       From HdrSale Hs

            Inner Join

      DetailSale DS

            On Ds.IdHdrSale=Hs.Id

      ) As A

Pivot

(Sum(A.Quantity)

      For Cust_Name In([Karimi],[Mohammadi],[Sadeghi])

) As B

Order by FactorDate

 

در Select دوم که داخل From هست هر فیلدی که از جداول بیاریم مانند فیلدهای جلوی Group By می ماند و نتیجه Query بدست آمده تغییر خواهد کرد. به طور مثال اگر فیلد Hs.id نیز اضافه شود دیگر نتیجه فوق را نخواهیم داشت و Sum براساس Group By براساس فیلدهای تاریخ و Id خواهد بود.

 

درس اول آموزش دستورات ابتدایی Transact SQL

جلسه اول 

دستور Select:

در زیر ساختار بسیار ساده دستور Select را ملاحظه می کنید.

SELECT select_list

FROM table_list

Select_list شامل فیلدهایی می شود که میخواهیم از جدول مربوطه فراخوانی کنیم. اگر به جای نام فیلدها از * استفاده کنیم تمام فیلدهای موجود در Table_List را به ما نمایش میدهد.

Table_List شامل جداول و یا View هایی هست که ما میخواهیم اطلاعات را از آنها فراخوانی کنیم.

در مثال زیر با استفاده از دستور select یک سری اطلاعات را از دیتابیس AdventureWorks فراخوانی می کنیم.

USE AdventureWorks

GO

 

SELECT NationalIDNumber,

         LoginID,

         JobTitle

FROM HumanResources.Employee

با اجرای دستورات بالا نتیجه ای معادل شکل زیر بدست خواهد آمد.

JobTitle

LoginID

NationalIDNumber

Chief Executive Officer

Vice President of Engineering

 Engineering Manager

Senior Tool Designer

Sales Representative

 Sales Representative

 Sales Representative

adventure-works\ken0

adventure-works\terri0

adventure-works\roberto0

adventure-works\rob0

adventure-works\rachel0

adventure-works\jae0

adventure-works\ranjit0

295847284

245797967

509647174

112457891

...

668991357

954276278

134219713

                                 

(290 row(s) affected)

شرح دستور :

خط اول دستور برای تغییر دیتابیس پیش فرض هست. زیرا زمانی که برای اولین بار به SSMS (SQL Server Management Studio ) وصل می شوید پیش فرض Database در حال استفاده هست که در User شما به عنوان Default Database تعیین شده باشد. با این دستور به دیتابیس مورد نظر وصل خواهیم شد.

USE AdventureWorks

GO

خطوط زیر مشخص میکند کدام ستونها به ما نمایش داده شوند.

SELECT NationalIDNumber,

       LoginID,

       JobTitle

قسمت بعدی که عبارت From می باشد :

FROM HumanResources.Employee

این عبارت مشخص می کند اطلاعات باید از چه منبعی فرخوانی شود. در اینجا ما اطلاعات را از یک جدول موجود در دیتابیس فراخوانی کردیم.

عبارت HumanResources.Employee شامل دو قسمت می باشد. قسمت اول نام Schema هست و قسمت دوم نام حقیقی جدول. هر Schema شامل یک سری اشیا می باشد. در درس های آینده نحوه تعریف Schema و کاربرد آنرا توضیح خواهیم داد.

اگر بخواهیم لیست تمامی ستونهای موجود را از یک منبع داده که در جلوی عبارت From آمده است ، فراخوانی کنیم باید از دستور زیر استفاده کنیم :

SELECT *

FROM HumanResources.Employee

 

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

 

محدود کردن نتیجه یک Query بواسطه عبارت Where.

در یک دستور Select عبارت Where برای محدود کردن نتیجه مورد نظر به کار می رود. شکل ساده دستوری عبارت where در زیر آمده است .

توجه : وقتی عبارتی داخل [] قرار میگیرد منظور این است که وجود آن در دستور اصلی به صورت دلخواه می باشد و نبود آن در اجرای دستور مشکلی ایجاد نخواهد کرد.

 

SELECT select_list

FROM table_list

[WHERE search_conditions]

Search_conditions ها گزارهایی هستند که مقادیر عبارات را با TRUE , FALSE,UNKHOWN ارزیابی می کنند.

UNKHOWN زمانی ظاهر می شود که در Search_Condition ها به مقدار NULL دسترسی پیدا کنیم.

یک مقدار NULL نه صفر هست نه خالی فقط و فقط شناخته نشده است.همچنین دو مقدار NULL باهم برابر نیستند و نمیتوان بدون یک نتیجه UNKHOWN آنها را باهم مقایسه کرد.


آموزش Transact SQL

سلام.

تصمیم دارم در دروس پیوسته از مباحث ابتدایی تا پیشرفته مباحث TSQL  یا برنامه نویسی در SQL Server رو آموزش بدم.

دوستانی هم که سوال داشتند در قسمت نظرخواهی بپرسند پاسخ میدم.


با سلام.

در این مطلب قصد دارم نحوه نصب Msde 2000 رو به شما آموزش بدهم.امیدوارم مفید واقع بشه.

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

پس از دانلود با اجرای آن باید مسیری برای آن مشخص کنید تا فایلها را Extract کند.به طور پیش فرض درایو c را انتخاب کنید.

پس از Extract شدن تمامی فایلها . یک فایل setup دارد که به صورت عادی اجرا نخواهد شد و باید دستوراتی برای ان مشخص کنید که در ادامه توضیح خواهم داد.

پارامترها به شرح زیر می باشند.

SAPWD = این پارامتر برای تعیین رمز برای کاربر Sa در sql server می باشد که اگر تنظیم نکنید این کاربر بدون رمز خواهد بود و امنیت پایگاه داده را به خطر خواهد انداخت.پیشنهاد میشود برای ان رمزی تعیین کنید.

INSTANCENAME= نام Sql server هست که باید نامی برای آن تعیین کنید.اگر نامی برای ان تعیین نکنید نام پیش فرض کامپیوتر شما قرار خواهد گرفت. ولی اگر نامی برای آن تعیین  کنید برای وصل شدن به sql server باید از شکل computername\instancename باید به سرور وصل بشوید.

مانند : Hamid\Sql2000

که hamid نام کامپیوتر می باشد و sql2000 نام instance هست که موقع نصب تنظیم شده است.

SECURITYMODE=SQL که این پارامتر مشخص میکند که SQL SERVER به صورت MIXED MODE نصب شود که در زمان وصل شدن به پایگاه داده بتوان هم با WINDOWS AUTHENTICATION وصل شد هم با SQL AUTHENTICATION.

TARGETDIR= مسیر فایلهای SQL SERVER مشخص می شود.مقدار آن باید با یک \ خاتمه پیدا کند.برای DEFAULT INSTANCE نام شاخه های ایجاد شده به نام \MSSQL ساخته می شود ولی اگر برای ISNTANCE نامی تعیین کرده باشید نام شاخه به صورت \MSSQL$INSTANCENAME می شود.

DISABLENETWORKPROTOCOLS=0  با تعیین این مقدار شما برای وصل شدن به SQL SERVER از MDAC استفاده خواهید کرد که توسط MSDE نصب خواهد شد.

مثال :

 Setup SAPWD="PaSSWORDtEST" INSTANCENAME="SQL2000" TARGETDIR="C:\SQLSERVER\" SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0

امیدوارم این مطلب مفید واقع شده باشه.دوستان اگر سوالی داشتند بپرسند تا پاسخ بدهم.

یاعلی

توضیحی در مورد OSQL

سلام دوستان.در این پست قصد دارم مقداری در مورد یکی از ابزارهای تحت Command Prompt توضیحی بدم.

OSQL ابزاری است که  به شما اجازه میدهد بدون وجود داشتن Enterprise Manager یا Query Analyzer با دیتابیس ارتباط برقرار کنید و بتوانید کارهای خود را انجام دهید.

ساختار این دستور به صورت زیر است:

OSQL -S -E -U -P -d -Q -q

S-  نام سروری است که میخواهید با آن ارتباط برقرار کنید

U,P,E این سه پارامتر به نوع ارتباط به سرور برمیگردد 

که شما یا با استفاده از windows Authentication میخواهید وصل شوید یا به طریق Sql Authentication

برای وصل شدن به صورت Windows Authenctication شما باید فقط از سوئیچ E- استفاده کنید و سوئیچ های U-,P- نیازی نیست.

و اگر میخواهید به صورت Sql Authentication وصل شوید باید از سوئیچ های U,P استفاده کنید و نیازی به سوئیچ E نمی باشد.

سوئیچ U نام کاربری تعریف شده در قسمت login سرور شما می باشد.

سوئیچ P کلمه عبور آن کاربر می باشد.
سوئیچ E از همان کاربری که به ویندوز وصل شده برای وصل شدن به بانک اطلاعاتی استفاده میکند.

سوئیچ d نام دیتابیس را مشخص میکند.

سوئیچ Q,q نام هردو برای اجرای دستورات می باشند با این تفاوت که اگر از Q استفاده کنید بعد از اجرای دستور از به خود Command prompt برگشته و اگر از q استفاده کنید در داخل دستور osql باقی مانده تا بتوانید دستورات دیگری اجرا نمایید.

نکته بسیار مهم: این دستور به حروف بزرگ و کوچک حساس می باشد.

مثال :

در این روش با استفاده از windows Authentication  یک فایل mdf را attach خواهیم کرد.

Osql -S (local) -E -Q"sp_attach_single_file_db 'Test','c:\Test.mdf'"

در این روش با استفاده از Sql Authentication ا زیک جدول اطلاعاتی را واکشی خواهیم کرد.

Osql -S (local) -U sa -P 12345 -d test -Q"select * from table1"

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

شب خوش.

سلام

سلام خدمت دوستان عزیز.

باتشکر از بازدید از وبلاگ اینجانب.

در این وبلاگ مطالبی رو پیرامون نگهداری اطلاعات در بانک اطلاعاتی sql Server عرض خواهم کرد.

مطالبی رو در خصوص بررسی Performance دیتابیس و اینکه چطور Performance گزارشاتتان افزایش دهید بیان خواهم کرد.

در صورتی که سوالی داشتید میتوانید با بنده تماس بگیرید.

اگر فایلهای دیتابیس شما خراب شد میتوانید با اینجانب تماس بگیرید تا راهنمایی تان کنم.

آماده بستن قرارداد در زمینه مشاوره در زمینه بررسی وضعیت فعلی سرور و دیتابیس ها و همچنین ارائه  راهکارها با موسسات مختلف می باشم.

همچنین دوستانی اگر در زمینه برنامه نویسی با زبان Delphi سوال داشتند می توانند مطرح کنند تا پاسخ دهم.

آماده برگزاری کلاسهای آموزشی Delphi , Sql Server نیز میباشم.