DTS چیست؟
DTS یک ابزار با واسط گرافیکی کاربر جهت انتقال اطلاعات موردنیاز از یک محل به محل دیگر است.
با استفاده از این ابزار میتوان یک سری از اطلاعات موجود در سیستم را با استفاده از روشهای عادی کاری پایگاه داده مانند دستور SELECT انتخاب کرده و به یک یا چند مقصد مختلف فرستاد.
ویژگی دیگر این نوع انتقال اطلاعات این است که میتوان آن را با استفاده از روشهای مخصوص، زمانبندی (schedule) کرده تا به صورت اتوماتیک انجام شود.
ویژگی سوم آن این است که علاوه برامکان استفاده از زبان SQL برای استخراج اطلاعات یا پردازش قبل از انتقال آن، میتوان با استفاده از امکانات دیگری پردازش و انتقال اطلاعات را انجام داد.
البته واژه DTS در کل به یک سری ابزارها و سرویسهای مختلف اطلاق میشود که مهمترین ابزار یا قسمت آن همان
بستههای ( DTS (PACKAGE DTS بوده که کار مهم انتقال و پردازش زمانبندی شده اطلاعات را انجام میدهد.
بستههای DTS
این بستهها که مهمترین قسمت ابزارهای DTS میباشند، با استفاده امکاناتی که در آنها تعبیه شده است، قادرند وظیفه انتقال و پردازش اطلاعات را در قالب یک روتین که میتواند شامل مسیرهای متوالی یا موازی میباشد انجام دهند.
این روتین در قالب یک فایل ساختاریافته با فرمتهایی مثل فرمت برنامهها و ماژولهای ویژوال بیسیک یا فرمتهای دیگری نظیر فایلهای Meta ذخیره میشود و با استفاده از روشهایی قابل زمانبندی، ویرایش، تغییر و همچنین رمزگذاری میباشند.
یک بسته DTS در واقع شامل چند آیتم مرتبط به یکدیگر بوده که هر کدام یک وظیفه مشخص را انجام داده و نتیجه را به دیگری انتقال میدهند.
این آیتمها بهعنوان Task نامگذاری شده و در واقع محتویات یک بسته DTS را تشکیل میدهند.
هر کدام از Taskهای موجود در یک بسته DTS به صورت جداگانه توسط کاربر پیکربندی شده و وظیفه موردنظر مثل پردازش، کپیکردن و یا انتقال اطلاعات به آن انتساب داده میشود.
سپس با بهوجود آوردن ارتباط لازم میان Taskهای موجود، امکان عملی کردن فرآیند موردنظر میسر میشود.
یک Task میتواند یکی از انواع زیر باشد:
1- Importing / Exporting
این نوع Task قادر است اطلاعات را از جایی مثل یک جدول بانک اطلاعاتی SQL Server یا هر نوع دیگر مثل اکسس و یا یک فایل ساده Text بخواند و آن را در یک جدول بانک اطلاعاتی SQL Server وارد (Import) کند.
همچنین این Task میتواند عکس این عمل را انجام دهد.
یعنی اطلاعات یک جدول بانک اطلاعاتی یا قسمتی از آن اطلاعات را به فرمت اکسس، اکسل یا فایل متنی (Text) درآورد (Export) و آن را در مقصد موردنظر قرار دهد.
2- Transform
با استفاده از این نوع Task میتوان با نوشتن یک دستورالعملSELECT نتیجه حاصل از عمل پرسوجو برروی یک یا چند جدول بانک اطلاعاتی مبدا را به یک جدول موجود در بانک اطلاعاتی مقصد انتقال داد.
در این روش بانک اطلاعاتی مبدا و مقصد میتوانند جدا از هم و یا یکسان باشند.
3- Copy
این نوع Task میتواند هر موجودیتی در یک بانک اطلاعاتی مثل دیدها (view)، ایندکسها، لاگها، روتین و توابع، تریگرها و هر چیزی را به یک بانک اطلاعاتی دیگر منتقل کند.
4- Send/Receive Message
با این نوعTask میتوان بین بستههای مختلف DTS موجود در سیستم ارتباط برقرار کرده و بین آنها پیغام رد و بدل کرد.
همچنین با استفاده از آن میتوان یک بسته را در داخل یک بسته دیگر فراخوانی یا اجرا کرد.
بهعلاوه اینکه این نوع Task امکان ارسال Email را هم دارد.
5- Execute
با استفاده از این نوع Task میتوان یک سری دستورالعمل SQL یا حتی اسکریپتهای ActiveX و یا فایلهای Exe را اجرا کرد.
با استفاده از این نوع Task میتوان یک سری دستورالعمل SQL یا حتی اسکریپتهای ActiveX و یا فایلهای Exe را اجرا کرد.
Taskهای از پیش تعریف شده در SQL Server عبارتند از: 1-FTP : جهت دریافت یک یا چند فایل از یک سرور FTP به داخل بسته DTS 2- ActiveX Script: برای استفاده از قابلیتهای زبانهای اسکریپتی مثل ویژوال بیسیک یا جاوا در یک پردازش خاص.
3- Transform Data: جهت انتقال اطلاعات بین دو منبع اطلاعاتی.
4- Execute Process: جهت اجرای یک فایل Exe 5- Execute SQL: جهت اجرای یک سری دستورات SQL 6- Data Driven Query: برای ایجاد یک منبع انتقال اطلاعات با استفاده از دستورSELECT 7- Copy Object: اینTask میتواند کلیه موجودیتهای یک بانک اطلاعاتی را به بانک اطلاعاتی دیگر منتقل کند.
8- Send Mail: جهت ارسال ایمیل به یک مقصد مشخص 9- Bulk Insert: جهت ورود (Import) اطلاعات از یک فایل به یک جدول بانک اطلاعاتی 10- Execute Package: با استفاده از این Task میتوان یک بسته DTS دیگر را در داخل بسته DTS جاری لود و اجرا کرد.
11- Message Queve II: برای استفاده از امکانات پیغامدهی سرویس MSMQ ویندوز 2000 یا 2003 برای مبادله پیغام بین برنامهها و ایستگاههای مختلف 12- Transfer Error Massages: برای انتقال پیغامهای خطای موجود در جدول سیستمی sysmessages از یک بانک اطلاعاتی به بانک دیگر 13- Transfer DataBase: برای انتقال کل بدنه یک بانک اطلاعاتی با تمام محتوا، ساختار و اطلاعاتش از یک سرور به سرور دیگر.
ارتباط DTS مبدا و مقصد دادههای منتقل شده توسط Taskها، میتوانند از انواع فایلهای مختلف انتخاب شوند.
کلیه منابع اطلاعاتی که از OLEDB و یا ODBC پشتیبانی کنند مانند اوراکل، کلیه فرمتها برنامههای مشهوری که در ذخیره و پردازش اطلاعات کاربرد زیادی دارند مثل اکسل، فاکسپرو، پاراداکس، اکسس و امثال آن، فایلهای متنی و همچنین کلیه منابع اطلاعاتی که ساختاری به غیر از بانکهای رابطهای دارند مثل Exchange Server و بسیاری برنامههای دیگر، میتوانند از جمله این موارد باشند و در ساختن یک بسته DTS به عنوان مبدا یا مقصد بهکار روند.
DTS Work Flow مراحل زمانی و توالی اجرای قسمتهای مختلف یک بسته DTS را جریان کاری DTS مینامند.
در واقع با استفاده از این جریانهای کاری میتوان مشخص کرد که کدام Task باید زودتر اجرا شود و یا اینکه اجرای یک Task پیش نیاز اجرا شدن چه Task (های) دیگری است.
بدینوسیله اجرا شدن هر Task نسبت به Task دیگری دارای اولویت کمتر، بیشتر و یا حتی برابر میتواند باشد.
بدینمعنی که در برخی اوقات یک Task باید تا اتمام موفقیتآمیز یک Task دیگر صبر کند.
این مورد بیشتر در جایی کاربرد دارد که یک Task باید برروی خروجی و یا اطلاعات حاصل از نتیجه پردازش یک Task دیگر کار کند.
در برخی اوقات هم اگر عملکرد دو Task هیچ ربطی به یکدیگر نداشته باشند، میتوان زمان اجرای آن دو را به صورت موازی (Parallel) یعنی اجرای همزمان (در صورت امکان) درنظر گرفت.
در SQL Server سه نوع جریان کاری مختلف وجود دارد که به نامهای on completion ،on success ،on failure عبور از یک Task به Task دیگر را به ترتیب در صورت اتمام پردازش، پردازش موفقیتآمیز و پردازش غیرموفق Task مبدا، انجام میدهند.
به عنوان مثال: فرض کنید در یک سیستم اطلاعاتی توزیع شده (Distributed) بهصورت منظم و روزانه و در یک ساعت خاص باید به یک سایت FTP متصل شده، یک فایل با نام Imp.txt را که هر روز در سایت مذکور روزآمد update میشود را دریافت کرده، و آن را در جدول customers از پایگاه داده Northwind قرار دهیم.
فرض میکنیم این فایل متنی (Text) شامل لیست مشتریان جدیدی است که روزانه به سیستم فروش ما اضافه میشود.
بنابراین پس از قرار دادن مشتریان جدید در جدول مذکور باید یک دستور SQL را اجرا کنیم تا برای مشتریان تازه وارد شده در جدول customers یک حساب تفضیلی در جدول Accounts ایجاد کند.
از قرار معلوم در این مثال به یک DTS Connection جهت دسترسی به پایگاه داده Northwind، یک Task از نوع FTP ، یک Task دیگر از نوع Bulk Insert و نهایتاً یک Task از جنس Execute SQL نیازمندیم.
به همین منظور بر روی زبانه Data Transformation Services در Enterprise Manager کلیک کرده سپس بر روی آیتم Local Package کلیک سمت راست میکنیم و دستور New Package را انتخاب میکنیم تا پنجره ویژه طراحی بستههای DTS باز شود.
ابتدا یک Connection از جنس OLEDB را بر روی صفحه قرار داده و آن را به پایگاه داده Northwind متصل میکنیم.
(شکل 1) سپس از داخل لیست وظایف (Tasks)، یک شی از جنس FTP را برروی صفحه قرار داده و آدرس سایت موردنظر و مکان قرارگیری فایل دانلود شده را در محل Directory Path مشخص میکنیم، سپس به زبانه Files رفته و فایل یا فایلهایی را که قرار است دانلود شوند مشخص مینماییم که در این مثال یک فایل متنی با نام New Customer.txtرا که حاوی اطلاعات مشتریان جدید است انتخاب میکنیم.
(شکل2) در مرحله بعد یک شی از جنس BULK Insert را برروی صفحه طراحی قرار داده و قسمتهای Connection ،Table و Data file آن را به ترتیب با اتصال پایگاه ساخته شده، جدول مشتریان و مقصد فایل دانلود شدنی توسط FTP را پر میکنیم.
(شکل 3) در آخرین مرحله ایجاد اشیاء، اکنون نوبت به ایجاد یک شی Execute SQL جهت اجرای تابع از پیش ساخته شده است که برای کلیه مشتریان جدید جدول customers یک حساب در جدول Accounts باز میکند.
این شی را بر روی صفحه قرار داده و دستور SQL موردنظر را در محل SQL statement وارد میکنیم.
(شکل 4) پس از ایجاد تمام اشیاء موردنیاز، اکنون نوبت به ایجاد جریانهای کاری لازم (WorkFlows) بین آنها میرسد.
آنچه به نظر میرسد این است که ابتدا یک جریان کاری بین دو موجودیت FTP و BULK Insert ایجاد کنیم.
از آنجا که این جریان کاری باید فقط در صورت موفقیتآمیز بودن عملیات دریافت فایل توسط شی FTP منتقل شود، بنابراین برای ایجاد جریان کاری مذکور، با استفاده از حرکت ماوس هر دو شی مذکور را انتخاب کرده و سپس از منوی WorkFlow دستور on success را انتخاب میکنیم.
همین عمل را برای دو شی Bulk Insert و Execute SQL هم انجام میدهیم.
(شکل 5) اکنون بسته DTS آماده اجرا است.
این بسته میتواند هم به صورت دستی و از همین محل طراحی تست یا اجرا شود و هم میتواند برای اجرا در مقاطع زمانی خاص (مثلاً روزی یک بار) در ساعت مخصوص زمانبندی (schedule) شود تا به صورت خودکار و در زمان موردنیاز اجرا گردد.
بدینمنظور، پس از ساختن و ذخیره کردن بسته DTS مذکور، از محیط طراحی DTS خارج شده و برروی نام بسته موردنظر کلیک سمت راست میکنیم و دستور Schedule Package را انتخاب مینماییم.
در اینجا میتوانیم زمان و توالی اجرای اتوماتیک بسته DTS ساخته شده را تعریف کنیم.