Tuesday, August 26, 2008

کلاس روز پنج‌شنبه ۷ شهریور کنسل شده است.
روز جمعه ۸ شهریور کلاس در دو جلسه از ساعت ۸ تا ۱۳ برگزار می‌شود.

Sunday, August 24, 2008

Orphaned Users

-در مورد مطالب وب‌لاگء سعی می‌کنم هم مطالب مقدماتی و هم مباححث پیش‌رفته‌تر را این‌جا مطرح کنم.

-لینک پست قبل به لیست توابع رشته‌ای SQL Server 2005 بود. در مورد توابع سیستمی جلسه آیندهء ۸ شهریورء مباحث خلاصه‌ای را مطرح می‌کنم و لینک مربوط به این نوع توابع را در وب‌لاگ خواهم گذاشت.

-این پست در مورد Orphaned User ها یا User های رهاشده است.

-یادآوری: برای متصل شدن به Instance ۲ راه وجود داشت: Windows Authentication و SQL Authentication. ما ابتدا Login ی بر روی Instance ایجاد می‌کردیم که از آن برای اتصال به دیتابیس به یکی از این دو روش استفاده می‌کردیم. اولین قدم در پروسه اتصال به Instanceء Authentication است تا مشخص شود آیا Login مورد نظر می‌تواند به دیتابیس کانکت شود یا خیر.

نکته: برای دیدن لیست Login ها و User ها می‌توانید از View های sys.syslogins و sys.server_principals استفاده کنید(در جلسه قبل توضیح داده شد).

پس از این‌که Authentication انجام شدء سرویسء چک می‌کند که آیا در دیتابیس‌هایی که به Instanceء Attach شده‌اند User ی به این Loginء Map شده است یا خیر. اگر Userی در دیتابیسی به Login مورد نظر ما Map شده بودء بر اساس دسترسی‌هایی که برای User تعریف شده استء دسترسی Client ی که با این Login به Instance متصل شده است Set می شود.

-حال Orphaned User چیست؟ User رها شدهء User ی است که Login برای آن تعریف نشده یا به صورت اشتباه تعریف شده است(نمونه: وقتی شما Loginی را حذف می‌کنیدء User هایی که به آن Map شده‌اندء به عنوان Orphaned User به حساب می‌آیند. یکی از موارد دیگری که ممکن است به چنین موضوعی بر بخوریدء منتقل کردن دیتابیس از یک سرور به سرور دیگر است-اتفاقی که دیروز برای من افتاد و انگیزه‌ی نوشتن این مطلب شد).

چطور می‌توان Orphaned User ها را در دیتابیس پیدا کرد؟ از اسکریپت زیر استفاده کنید:


sp_change_users_login @Action=’Report’



دقت کنید که این اسکریپت در سطح دیتابیس است نه Instance.

توصیه می‌کنم هربار پس از انتقال دیتابیس بین دو Instance مختلف این اسکریپت را اجرا کنید و یا Orphaned User ها را دوباره به Login ی Map کنید یا آن‌ها را حذف کنید.

sp_change_users_login یک Stored Procedure سیستمی است. در مورد Stored Procedure ها در جلسات آینده صحبت خواهیم کرد.

-توضیحات تکمیلی در مورد sp_change_users_login

Thursday, August 21, 2008

SQL Server String Functions



Link @ MSDN

Friday, August 15, 2008

Trim Function

در SQL Server 2005 تابع Trim وجود ندارد.
2 راه برای Trim کامل وجود دارد.
یکی، همان طور که در کلاس مطرح شد، به شکل زیر است:


LTRIM(RTRIM(str))



راه دیگر تعریف تابع Trim است. برای تعریف تابع Trim در دیتابیس از script زیر استفاده کنید:


CREATE FUNCTION dbo.TRIM(@str VARCHAR(MAX))

RETURNS VARCHAR(MAX)

BEGIN
RETURN LTRIM(RTRIM(@str))
END

GO


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

در همین راستا، تابع REPLACE نیز یکی از توابع رشته ای مفید است.
این تابع در یک رشته مورد نظر شما، یک زیر رشته را با زیر رشته دیگر تعویض می کند.



REPLACE(main_str,search_str,replace_str)



main_str: رشته اصلی
search_str: زیر رشته ای که می خواهید تعویض شود
replace_str: زیر رشته ای که می خواهید search_str با آن تعویض شود.

مثال:



REPLACE('This is a test','is','XX')

result:

'ThXX XX a test'