به نام خدا
با سلام
در سدد هستیم که یک وب سایت خوب برای دوستای عزیز روبه راه کنیم تا با همت خودمون و یاری خدا بتونیم مطالب و برنامه های خواصی رو که در نظر داریم براتون پیاده سازی کنیم...
امیدواریم خوشتون بیاد...
فقط یه خورده فرصت میخوایم تا این سایت رو روبه راه کنیم....
با تشکر...
http://www.youjoomla.com/joomla-templates/yougrids-free-joomla-template-yjsg-powered.html
استفاده ازعملگرPIVOTبرای تبدیل مقادیر تک ستونی به چندستونی با کمک توابع تجمع
برخی موارد نیاز داریم که یک مقدار چند ستونی را به چند ستونی تبدیل کنیم. این مورد در ساخت گزارشات کاربرد زیادی دارد. به عنوان مثال فرض کنید یک کوئری آماده دارید که توسط آن لیستی از تمام شیفتهای افراد به همراه نام قسمتهای مربوطه در یک سازمان ارائه میشود. حال نیاز دارید بفهمید که هر کدام از قسمتهای سازمان در کدام شیفت، چند نفر کارمند دارد. عملا شما به یک جدول متقاطع نیاز دارید که ستونهای آن شامل نام قسمتهای مختلف سازمان و سطرهای آن نام شیفتهای مختلف میباشد.
ابتدا شما را با گرامر عبارت مورد نظر آشنا میکنم :
FROM table_source
-- جدول یا کوئری منبع
PIVOT (
aggregate_function ( value_column )
-- تابع تجمعی مورد نظر به همراه ستون مورد نظر
FOR pivot_column
-- ستونی که برای ساختن نام ستونها استفاده میشود
IN ( <column_list>)
-- مقادیری که از ستون بالا برای عملیات انتخاب میشود
) table_alias
-- نام مستعار جدول خروجی
گاهی اوقات پس از اینکه روی نام پایگاه داده کلیک راست را میزنیم و گزینه New Database Diagram را انتخاب میکنیم با خطای زیر مواجه میشویم.
Database diagram support objects cannot be installed because this database does not have a valid owner. To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects.
دلیل آن هم به خوبی درپیغام خطا نمایش داده شده است و آن هم این است که برای پایگاه داده مورد نظر شما یک owner به صورت مستقیم تعریف نشده است.
برای رفع این مشکل میتوانید از اسکریپت زیر استفاده کرده و عمل مورد نیاز برای رفع مشکل را انجام دهید.
ALTER AUTHORIZATION ON DATABASE::database_name TO valid_login
درست مانند :
ALTER AUTHORIZATION ON DATABASE::RamezaniDB TO sa
Catalog view ها اطلاعاتی را در خود نگهداری میکنند که موتور پایگاه داده SQL Server از آنها استفاده مینماید. استفاده از این view ها به کسانی توصیه میشود که به اطلاعاتی در رابطه با ساختار پایگاه داده خود نیاز دارند. این view ها عمومیترین واسط موجود برای به دست آوردن متادیتاهایی در رابطه با پایگاه داده میباشند. شما میتوانید توسط کوئریهای ساده به اطلاعات ارزشمندی به دست آورید. به عنوان مثال میتوانید ارتباط بین آبجکتهای موجود در پایگاه داده را با یک کوئری به دست آورید. یا مثلا میتوانید لیست نام تمام جداول موجود یا کلیدهای شناسه موجود در پایگاه داده را به سادگی به دست آورید. USE MyTable SELECT name FROM sys.objects WHERE type = 'P'
مثلا تکه کد زیر لیست تمام stored procedure های تعریف شده را به شما در خروجی خواهد داد :
به کمک کوئری زیر میتوانید نتایج یک فیلد در پایگاه داده را به صورت comma separated دریافت کنید. گفتم شاید این مورد به درد دوستان هم بخورد. لطفا به کد زیر دقت نمایید :
DECLARE @NameList nvarchar(Max)
SELECT @NameList = COALESCE(@NameList + ', ', '') +
ColumnName
FROM TableName
WHERE ID < 10
SELECT @NameList
در خیلی مواقع ملاحظه میشود که برای نمایش تعدادی از رکوردهای یک جدول در پایگاه داده کل مقادیر موجود درآن توسط یک دستور select به دست میآید و صفحهبندی خروجی به کنترلهای موجود سپرده میشود. اگر پایگاه داده ما دارای تعداد زیادی رکورد باشد آن موقع است که ما دچار مشکل میشویم. فرض کنید به طور همزمان ۵ نفر (که تعداد زیادی نیستند) از برنامه ما که شامل ۱۰۰۰۰۰ سطر داده میباشد استفاده کنند و در هر صفحه ما ۱۰ رکورد نمایش داده شود و صفحهبندی ما از نوع معقولی نباشد در این صورت به جای اینکه ما با ۵×۱۰ رکورد داده را بارگزاری کنیم، ۵×۱۰۰۰۰۰ رکورد یعنی ۵۰۰۰۰۰ رکورد را برای به دست آوردن ۵۰ رکورد بارگزاری میکنیم. در زیر روشی شرح داده میشود که سربار اضافه از روی برنامه و سرورهای مربوطه حذف شود. به stored procedure و توضیحات مربوط به آن توجه فرمایید :
CREATE PROCEDURE sp_PagedItems
(
@Page int,
@RecsPerPage int
)
AS
-- We don't want to return the # of rows inserted
-- into our temporary table, so turn NOCOUNT ON
SET NOCOUNT ON
۱. با راست کلیک روی بانک اطلاعاتی مورد نظر، گزینه 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 این صفحه را هم کلیک کنید تا صفحه بسته شود.
۱۳. پایان