مهدی ولی خانی (ولیخانی) هستم .متولد دوم خرداد سال 63 . فارغ التحصیل رشته نرم افزار کامپیوتر ، مقطع کاردانی ، دانشگاه جامع علمی - کاربردی واحد داده پردازی. در حال حاضر حرفه ی من طراحی و برنامه نویسی وب می باشد . هدف اصلی من از انتخاب رشته نرم افزار کامپیوتر فقط ورود به دنیای طراحی و برنامه نویسی تحت وب بود . در واقع بزرگترین سرگرمی من طراحی و برنامه نویسی می باشد .(چه بهتر که تحت وب باشه!) ساعات زیادی از وقت روزانه من پشت یک کامپیوتر در اتاقم میگذره . به موسیقی زیاد علاقه دارم . دو سبک موسیقی را بسیار می پسندم . موسیقی اصیل ایرانی و موسیقی راک . رنگ مورد علاقه آبی و تیم مورد علاقه پرسپولیسه .

<October 2008>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
RSS 2.0 | Atom 1.0 | CDF
Google Reader
del.icio.us blog.mehdiVK.net latest Posts
Add to my Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online

my Feedster
Add to my AOL
Furl blog.mehdiVK.net latest Posts
Subscribe to Rojo


Total Posts: 152
This Year: 61
This Month: 13
This Week: 7
Comments: 107
newtelligence dasBlog 1.9.6264.0


وبلاگ مهدی ولیخانی
وبلاگ مهدی ولیخانی در رابطه با تکنولوژی دات نت
Monday, October 06, 2008
منابع رايگان در رابطه با SQL Server 2008 ، ارائه شده از سوی مایکروسافت

مایکروسافت اقدام به ارائه یک ebook رايگان در رابطه با معرفی امکانات جدید SQL Server 2008 کرده است که از طریق این صفحه می توانید آن را دانلود نمائید.
در این کتاب می خوانید :

Chapter 1: Security and Administration
Chapter 2: Performance
Chapter 3: Type System
Chapter 4: Programmability
Chapter 5: Storage
Chapter 6: Enhancements for High Availability
Chapter 7: Business Intelligence Enhancements

همچنین مایکروسافت یک دوره رايگان 3 ساعته (آنلاین) هم در رابطه با SQL Server 2008 دارد که در رابطه با عناوین زیر صحبت می شود :
  • What's New in SQL Server 2008 for Enterprise Data Platform
  • What's New in SQL Server 2008 for Business Intelligence
  • What's New in SQL Server 2008 for Database Development
جهت کسب اطلاعات بیشتر در رابطه با این دوره 3 ساعته آنلاین کلیک کنید.

همچنین دانلود کنید :
منبع:
  (  |  |  )  ( Comments [0] | Trackback )
Thursday, August 28, 2008
معرفی sp_MSforeachtable و sp_MSforeachdb دو رویه در SQL Server

بعنوان یک توسعه دهنده برايتان موقعيتی پیش آمده است که بخواهید یک دستور را بر روی تمامی جداول یک پایگاه داده اجرا کنید ، و یا دستوری را بر روی تمامی پایگاه های داده موجود اجرا نمائید ؟ راه های مختلفی برای رسیدن به این هدف وجود دارد اما یکی از ساده ترین و صد البته سریع ترین راه ها استفاده از دو فراخوان sp_MSforeachtable و sp_MSforeachdb می باشد . با استفاده از این دو فراخوان می توانید دستورات مورد نظر خود را بر روی کلیه جداول یک پایگاه داده خاص و یا کلیه پایگاه های داده اجرا نمائید . ورودی این دو فراخوان یک رشته است که همانا دستوری است که شما میخواهید اجرا نمائید . در زیر به ذکر دو مثال در رابطه با نحوه استفاده از این دو فرخوان خواهیم پرداخت:

1 - استفاده از sp_MSforeachtable برای اجرای یک دستور بر روی تمامی جداول :
بطور مثال برای بدست آوردن میزان فضائی که هر جدول اشغال کرده است می توانیم از کد زیر استفاده نمائیم:

USE DropThings;
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?];';


توجه داشته باشید که  [?] در واقع Place Holder ی است برای نام جدول.
خروجی کد زیر برای پایگاه داده DropThings بشکل زیر است :

2 - استفاده از sp_MSforeachdb برای اجرای دستور بر روی تمامی پایگاه های داده :
بطور مثال برای بدست آوردن میزان فضائی که هر پایگاه داده اشغال کرده است می توانیم از کد زیر استفاده نمائیم:

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_spaceused


[?] در دستور فوق Place Holder ی است برای نام پایگاه داده .
خروجی حاصل از اجرای دستور فوق به شکل زیر می باشد:

منابع :
The undocumented sp_MSforeachtable procedure
The undocumented sp_MSforeachdb procedure
  (  |  )  ( Comments [2] | Trackback )
Thursday, August 14, 2008
فراخوانی دستورات سیستمی از طریق SQL ، استفاده از xp_cmdshell

SQL server به شما این امکان را میدهد که بتوانید دستورات سیستمی را از طریق SQL اجرا کرده و احیانا بر روی خروجی های حاصل از اجرای این دستورات پردازش های مورد نظر خود را انجام دهید .با استفاده از xp_cmdshell شما قادر خواهید بود کلیه دستورات سیستمی را فراخوانی کنید .

فعال سازی مجوز استفاده از xp_cmdshell در SQL Server
در نسخه 2000 ، xp_cmdshell بصورت پیشفرض فعال است . اما به دلیل اینکه فعال بودن این امکان برای همه خطرات جبران ناپذیری در پی دارد لذا تنها کاربرانی که در گروه sysadmin هستند می توانند از این امکان استفاده کنند. در صورتیکه کاربر عضو نباشد و اقدام به اجرای این دستور کند خطای زیر را مشاهده می کند.

Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1 SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.

در نسخه 2005 ، xp_cmdshell بصورت پیشفرض فعال نیست ، برای فعال کردن دو راه وجود دارد:
1- فعال کردن از طریق اجرای command :
در این روش برای فعال کردن باید دستورات زیر را اجرا نمائید:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
2- فعال سازی از طریق SQL Server 2005 Surface Area Configuration
برای فعال سازی بر روی Start کلیک کرده و در بخش All Programs به Microsoft SQL Server 2005 و سپس به زیر شاخه Configuration Tools بروید ، حال گزینه SQL Server Surface Area Configuration بروید . در پنجره باز شده بر روی گزینه Surface Area Configuration for features کلیک کرده و در پنجره باز شده در زیر شاخه Database Engine بر روی آیتم xp_cmdshell کلیک کرده و آیتم Enable xp_cmdshell را تیک بزنید و بر روی Apply و سپس OK کلیک نمائید. حال xp_cmdshell آماده استفاده است و شما می توانید با فراخوانی این SP دستورات سیستمی را از طریق xp_cmdshell اجرا نمائید.در زیر تصویر صفحه مربوطه را مشاهده می فرمائید:


مثال :
EXEC master..xp_cmdshell 'dir c:\'

در نظر داشته باشید که کاربری میتواند از این SP استفاده کند که در گروه sysadmin عضو باشد.
  (  |  |  )  ( Comments [0] | Trackback )
Monday, April 21, 2008
راه اندازی Full Text Indexing از طریق T-SQL

برای فعال سازی Full Text Indexing از طریق T-SQL و استفاده از امکانات این سرویس جهت جستجو در محتویات پایگاه داده خود می توانید دستور زیر را بر روی پایگاه داده مورد نظر خود اجرا نمائید :

USE [Database Name]
EXEC sp_fulltext_database 'enable'

همچنین برای غیر فعال کردن هم می توانید از دستور زیراستفاده نمائید:

USE [Database Name]
EXEC sp_fulltext_database 'disable'

برای مشاهده وضعیت فعال بودن و یا نبودن سرویس Full Text Indexing بر روی یک پایگاه داده هم می توانید از دستور زیر استفاده نمائید.

SELECT DATABASEPROPERTY('Database Name', 'IsFullTextEnabled');

بذیهی است که 1 به معنای فعال بودن و صفر به معنای غیر فعال بودن است  . مقدار Null هم یکی دیگر از مقدارهای بازگشتی است که برای مثال می تواند به این دلیل باشد که پایگاه داده ای که وارد کرده اید وجودندارد.
  (  |  )  ( Comments [0] | Trackback )
Thursday, December 13, 2007
کار با تاریخ در T-SQL

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

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


تغییر فرمت تاریخ، تایع Convert:
T-SQL امکانات خیلی خوبی برای فرمت نمایش تاریخ نیز دارد ، به طور مثال امکان نمایش تنها تاریخ ، تنها زمان ، استفاده از / به جای - و ... از جمله امکاناتی است که در T-SQL در نظرگرفته شده است .برای این کار کافیست از تابع CONVERT استفاده نمائید.
به طور مثال برای به دست آوردن تنها تاریخ فعلی سیستم و بصورتی که از / بجای - استفاده شود ، میتونیم Query زیر را اجرا نمائیم.

SELECT CONVERT(nvarchar,GetDate(),111)

سه پارامتری که این تابع دریافت می کند نوع خروجی ، ورودی و الگوی خروجی می باشد که بطور مثال 111 کد مربوط به نمایش تاریخ با استفاده از / به جای - می باشد.
جهت مشاهده فهرست الگوها برای تاریخ کلیک کنید.

اختلاف تاریخ ها DateDiff:
این تابع هم برای محاسبه تفاوت بین دو تاریخ محاسبه می شود . این تابع سه پارامتر ورودی دارد ، اولین پارامتر واحد تفاوت می باشد ، به طور مثال اگر شما بخواهید اختلاف بین دو تاریخ را بر حسب تعداد روز بدانید باید از day بعنوان اولین ورودی استفاده نمائید ، دومین و سومین هم دو تاریخی می باشند که تفاوت آنها را با هم محاسبه کنید .
جهت کسب اطلاعات بیشتر در مورد این تابع و پارامترهای ورودی آن کلیک کنید.

اضافه کردن به تاریخ DateAdd:
این تابع هم برای اضافه کردن یک مقدار به تاریخ فعلی می باشد ، این مقدار می تواند سال ، ماه ، روز ، ساعت و ... باشد . البته جهت کسر کردن مقداری از تاریخ هم از همین تابع استفاده می شود ، بدین صورت که پارامتر ورودی یک مقدار منفی می باشد .این تابع سه ورودی دارد اولی واحد اضافه شدن و یا کسر شدن است ، مثل day , month , year , ... ، دومی مقداری است که باید اضافه و یا کسر شود و سومین پارامتر تاریخی است که پردازش باید بر روی آن صورت گیرد .
جهت کسب اطلاعات بیشتر در رابطه با این تابع کلیک کنید.

لینک های مرتبط :
- مرجع دستورات T-SQL در MSDN
-مرجع کامل توابع کار با تاریخ در MSDN

  (  )  ( Comments [0] | Trackback )
Wednesday, November 28, 2007
دسترسی به مقدار خروجی یک Stored Procedure توسط T-SQL

اگر بخواهیم تو برنامه نویسی سمت Database هم یک نوعی مرتب برنامه نویسی کنیم استفاده از SP و ... چیزی دور از ذهن نخواهد بود ، تو کد نویسی ها هم بخش هائی هستند که باید بصورت مجزا نوشته شوند . یه مثال ساده ، همین تبدیل تاریخ ، تو سی شارپ میائیم کلاس براش تعریف می کنیم و یک سری Property و متد و ... همه کارها تو این کلاس انجام میشه و کلاس های دیگه کار فراخوانی متدها را انجام میدهند ، همین مثال تو T-SQL هم هست فرض کنید یک جائی قرار باشه که تاریخ رو به شمسی تبدیل کنید و مجبور باشید حتما اون بالا رو SQL Server این کار انجام بشه خوب تعریف یک SP برای این کار خیلی خوبه ، SP تعریف می کنیم یک ورودی که تاریخ میلادیه و یه خروجی که تاریخ شمسی است .

CREATE STORED PROCEDURE TestSP
                 @Input int,
                 @Output int output
AS
SET @Output = @Input + 1;
GO

خوب با نسبت دادن output به Output@ در واقع نوع این پارامتر را خروجی تعریف می کنیم و می توانیم به مقدار ان در کد فرخوان دسترسی داشته باشیم. حال SP فوق را به شکل زیر صدا می زنیم :
DECLARE @result int;
EXEC TestSP 1,@result OUT
SELECT @result
همانطور که مشاهده کردید با نسبت دادن OUT به result@ می توانیم به مقدار خروجی این SP دسترسی داشته باشیم.
  (  )  ( Comments [0] | Trackback )
Thursday, April 05, 2007
تغییر Owner جداول و SP ها در SQL Server

حتما برایتان پیش آمده که بخواهید Owner یک جدول و یا تمامی جداول پایگاه داده خود را تغییر دهید . این امر به دلایل مختلفی احساس می شود اما یکی از راه های پیش روی شما برای تغییر دادن Owner تمامی جداول موجود در پایگاه داده شما به یک Owner جدید به شکل زیر می باشد:


DECLARE @old sysname, @new sysname, @sql varchar(1000)

SELECT
@old = 'oldOwner_CHANGE_THIS'
, @new = 'dbo'
, @sql = '
IF EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLES
WHERE
QUOTENAME(TABLE_SCHEMA)+''.''+QUOTENAME(TABLE_NAME) = ''?''
AND TABLE_SCHEMA = '''
+ @old + '''
)
EXECUTE sp_changeobjectowner ''?'', '''
+ @new + ''''

EXECUTE sp_MSforeachtable @sql


و اما اگر میخواهید این کار رو بر روی تمامی Stored Procedure های موجود انجام بدهید می توانید به شکل زیر عمل کنید :

DECLARE @oldOwner sysname, @newOwner sysname

SELECT
@oldOwner = 'oldOwner_CHANGE_THIS'
, @newOwner = 'dbo'

select 'EXECUTE sp_changeobjectowner '''+QUOTENAME(a.SPECIFIC_SCHEMA)

+'.'+QUOTENAME(a.ROUTINE_NAME)+''','''+@newOwner+''''
from
INFORMATION_SCHEMA.ROUTINES a
where
a.ROUTINE_TYPE = 'PROCEDURE'
AND a.SPECIFIC_SCHEMA = @oldOwner
AND
OBJECTPROPERTY(OBJECT_ID(QUOTENAME(a.SPECIFIC_SCHEMA)

+'.'+QUOTENAME(a.ROUTINE_NAME)), 'IsMSShipped') = 0




و اما اگر میخواهید تنها برای یک آبجکت این کار را انجام دهید می توانید از  sp_changeobjectowner استفاده کنید!!!
منبع : وبلاگ جناب Scott Forsyth

  (  )  ( Comments [0] | Trackback )