View Full Version : DTSWizard 2005
hamed_bostan
سه شنبه 14 فروردین 1386, 21:44 عصر
با سلام
چطور میشه توی sql server 2005 management studio در زمان export دیتابیس یا در لحطه استفاده از DTS wizard.exe همین sqlserver 2005 وقتی export میکنیم کل دیتابیس با اطلاعاتش و کلید هاش و ... رو complete بفرستیم روی net مثل sqlserver 2000 .
توی 2005 تنها من تونستم اول برم script دیتابیس رو اجرا کنم تا table ها رو بسازه با همه object ها و بعد اطلاعات رو export کنم . لپ کلام چرا 2005 سومین option در export 2000 رو نداره؟؟؟ممنون
AminSobati
چهارشنبه 15 فروردین 1386, 00:50 صبح
در SSIS از طریق Transfer SQL Server Objects Task انجام بدین
hamed_bostan
چهارشنبه 15 فروردین 1386, 08:44 صبح
ممنون از راهنمایی تون . ممکنه یه خورده بیشتر توضیح بدین؟ SSIS کجا هست؟ ایا باید نصبش کنم؟ باید دانلودش کنم؟
reza_rad
چهارشنبه 15 فروردین 1386, 08:54 صبح
ممنون از راهنمایی تون . ممکنه یه خورده بیشتر توضیح بدین؟ SSIS کجا هست؟ ایا باید نصبش کنم؟ باید دانلودش کنم؟
SSIS همون Sql server integration service هست
Integration service یکی از سرویس هایی هست که با sql server 2005 نصب میشه
برای ایجاد و تغییر SSIS ها می تونید از Sql Server Business Intelligence Service استفاده کنید
برای اینکار ویژوال استودیو رو باز کنید و new project کنید
گزینه business intelligence projects رو انتخاب کنید و بعد Integration service projects
و ...
پ.ن: دارم یه آموزش SSIS آماده می کنم که به احتمال زیاد همین امروز به یه جاهایی میرسه و میزارمش توی تالار Sql Server
hamed_bostan
چهارشنبه 15 فروردین 1386, 09:58 صبح
من توی پروژه هام چیزی به این نام ندارم . SQLSERVER 2005 هم نصبه .
چیکار کنم؟
reza_rad
چهارشنبه 15 فروردین 1386, 10:00 صبح
من توی پروژه هام چیزی به این نام ندارم . SQLSERVER 2005 هم نصبه .
چیکار کنم؟
منظورت به نام business intelligence projects هست یا integration service project ?
کدوم رو نداری؟
iman_22a
چهارشنبه 15 فروردین 1386, 14:45 عصر
من توی پروژه هام چیزی به این نام ندارم . SQLSERVER 2005 هم نصبه .
چیکار کنم؟
توی Management Studio 2005 توی لیست Server Type باید Integration Services باشه حتی اگر موقع نصب Sql Server 2005 اونو تیک نزده باشید
hamed_bostan
چهارشنبه 15 فروردین 1386, 15:51 عصر
منظورت به نام business intelligence projects هست یا integration service project ?
کدوم رو نداری؟
business intelligence projects این رو که تو ی لیست پروژه هام ندارم . در قسمت server type هم فقط database engine مشخص شده و قابل تغییر نیست.read only هستش combobox.
reza_rad
چهارشنبه 15 فروردین 1386, 17:57 عصر
یعنی این قسمت رو نمی بینید؟
http://barnamenevis.org/forum/attachment.php?attachmentid=7691&d=1175671037
Visual Studio تون چه ورژنیه؟
hamed_bostan
چهارشنبه 15 فروردین 1386, 20:07 عصر
با سلام . نه ندارمش . ویژوال استودیوم هم 2005 هستش.
ضمنا
در SSIS از طریق Transfer SQL Server Objects Task انجام بدین
من امروز sql server 2005 enterprise ,edition اون رو نصب کردم و حالا داخل management studio یه گزینه به نام integerated services دارم خوب حالا چطور باید از Transfer SQL Server Objects Task استفاده کنم؟
ممنون از لطفتون
hamed_bostan
چهارشنبه 15 فروردین 1386, 20:35 عصر
سلام
پیداش کردم
یه پروژه با این نام ساختم
رفتم داخل قسمت control flow و اونجا transfare sql server objects رو انداختم .آدرس سرور مبدا و مقصد و نام دیتابیس ها رو هم گرفت و تنظیمات اینکه چی ها رو copy کنه و نکنه رو هم انجام دادم و پرویه رو build کردم یه فایل package.dtsx اجرایی بهم داد. اجراش کردم بدون اینکه کار دیگه ای انجام بدم این پیغام رو داد:
hamed_bostan
چهارشنبه 15 فروردین 1386, 20:36 عصر
راهی که رفتم درسته؟ و این ایراد رو چیکار کنم؟
ممنون از راهنمایی هاتون
reza_rad
پنج شنبه 16 فروردین 1386, 10:36 صبح
راهی که رفتم درسته؟
بله درسته. گرچه من تابحال از این راه نرفتم ولی راه درستیه.
و این ایراد رو چیکار کنم؟
از ارور تون اینجور پیداست که دارید Null value جایی وارد می کنید که نمیشه! چک کنید باز تنظیمات رو ....
ضمنا می تونید با DataFlow Task اول امتحان کنید ببینید می تونید کارهای transfer ساده رو انجام بدید. مثلا از یه جدول مبدا دیتاها رو به جدول تو مقصد بریزید و ....
hamed_bostan
پنج شنبه 16 فروردین 1386, 13:17 عصر
رضا جان سلام
با یه table هم تست کردم اما ایراد مشابه رو میده . table من پر هست و ضمنا کلید داره و کلیدش هم identity هست . وضمنا یه چیز رو نمی دونم از dataflow task چطوری استفاده کنم؟ مصل همین قبلی؟
و یه مورد دیه من وقتی این فایل package.dtsx رو ساختم وقتی اجرا میکنم یه پمجره باز میشه که داخلش میشه تنظیماتی انجام داد و بعد execute کرد یا بدون تغییر اونها دست نخورده execute کنم؟
ممنون از توجهت
reza_rad
پنج شنبه 16 فروردین 1386, 23:36 عصر
سلام:)
با یه table هم تست کردم اما ایراد مشابه رو میده . table من پر هست و ضمنا کلید داره و کلیدش هم identity هست . وضمنا یه چیز رو نمی دونم از dataflow task چطوری استفاده کنم؟ مصل همین قبلی؟
data flow task هم مثله همونه خیلی راحت سورس و destination رو مشخص می کنی بعدش هم جدول ها رو و ...
اینو تست کن ببین شاید مشکلت از جای دیگه باشه.
و یه مورد دیه من وقتی این فایل package.dtsx رو ساختم وقتی اجرا میکنم یه پمجره باز میشه که داخلش میشه تنظیماتی انجام داد و بعد execute کرد یا بدون تغییر اونها دست نخورده execute کنم؟
چه پنجره ای ؟ می تونی عکسشو بذاری ؟
hamed_bostan
پنج شنبه 16 فروردین 1386, 23:49 عصر
اینم اون حالت اجرایی برنامه package.dtsx
ضمنا م[شه بابت dataflowtask [ه خورده توض[ح بد[ن ؟
چطور ازش استفادهکنم؟
چه کنترلی بندازم توش؟
ممنون
reza_rad
جمعه 17 فروردین 1386, 00:05 صبح
نه نیازی نیست چیزی رو اینجا تنظیم کنی.
در مورد مثال:
به این عکس نگاه کن:
http://barnamenevis.org/forum/attachment.php?attachmentid=7693&d=1175671037
توش data flow task رو می بینی
بندازش روی صفحه و بعد روش دوبار کلیک کن
بعدش باید دیتابیس مبدا و مقصد رو مشخص کنی و ... البته اگه کانکشنی هم به دیتابیس ها توی اون PACKAGE نداشته باشی ویزارد ایجاد کانکشن هم میاد قبلش...
در کل راحته... Try it :)
به اینجا ها هم نگاهی بنداز:
http://msdn2.microsoft.com/en-us/library/ms137842.aspx
http://msdn2.microsoft.com/en-us/library/ms365298.aspx
به زودی در ادامه تاپیک آموزش integration service یه مثال از این میذارم ولی با همین توضیحات هم کارت راه میفته:)
hamed_bostan
جمعه 17 فروردین 1386, 00:33 صبح
مطمعناکه کارم واقعا راه افتاد .ممنون خیلی لطف کردی.
فقط یه چیز دیگه و اون اینکه تمام این ها فقط جداول و view ها رو export می کنن . چطور می تونم یکباره کل دیتابیس رو بفرستم بالا . ضمنا وقتی اینطور عمل می کنم جداول کلید هاشون رو از دست می دن و هیچکدوم خاصیت identity شون رو هم حتی حفظ نمی کنن
reza_rad
جمعه 17 فروردین 1386, 10:31 صبح
خواهش می کنم:)
فقط یه چیز دیگه و اون اینکه تمام این ها فقط جداول و view ها رو export می کنن . چطور می تونم یکباره کل دیتابیس رو بفرستم بالا . ضمنا وقتی اینطور عمل می کنم جداول کلید هاشون رو از دست می دن و هیچکدوم خاصیت identity شون رو هم حتی حفظ نمی کنن
حالا باید برای این کار از همون Transfer Database Task استفاده کنی خیلی راحت تر از data flow task هست کار کردن باهاش.
http://msdn2.microsoft.com/en-us/library/ms189371.aspx
dataflowtask معمولا برای وقت هایی بکار میره که شما یکبار جداولی رو که لازم داری توی مقصد ایجاد کنی با ایندکس ها، کلید ها و .... . و از اون به بعد هر وقت لازم باشه فقط دیتا ها رو از مبدا بیاری.
hamed_bostan
شنبه 18 فروردین 1386, 13:51 عصر
با سلام
من هی این ایراد رو دریافت می کنم . table هام هم موردی نداره
SSIS package "Package.dtsx" starting.
Error: 0xC002F325 at TSSOT, Transfer SQL Server Objects Task: Execution failed with the following error: "Cannot apply value null to property Login: Value cannot be null..".
Task failed: TSSOT
Warning: 0x80019002 at Package: The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
SSIS package "Package.dtsx" finished: Failure.
کانکشن هام رو هم تست کردم ولی مشکلی ندارن
reza_rad
یک شنبه 19 فروردین 1386, 15:08 عصر
داری روی یه سرور دیگه دیتابیس رو منتقل می کنی یا روی همون سرور؟
من چون روی دو تا سرور نمی تونم تست کنم این قضیه رو نمی تونم عملی ببینم چه مشکلی ایجاد می کنه.
البته اگه این راه هم جواب نداد راههای دیگه ای پیدا میشه واسه ی اینکار که اگه نشد بگو تا اونها رو امتحان کنیم.
hamed_bostan
یک شنبه 19 فروردین 1386, 17:57 عصر
دیتابیس مبدا کامپیوتر خودمه و کامپیوتر مقصد سرور روی هاست هست . از روش export عادی sqlserver می تونم به هاست کانکت بشم ولی در استفاده از transfare sql objects این ایراد رو می گیره .
ممنون می شم یه راهی واسه انتقال کامل دیتابیس روی سرور نشونم بدین
ممنون
reza_rad
یک شنبه 19 فروردین 1386, 18:44 عصر
دیتابیس مبدا کامپیوتر خودمه و کامپیوتر مقصد سرور روی هاست هست . از روش export عادی sqlserver می تونم به هاست کانکت بشم ولی در استفاده از transfare sql objects این ایراد رو می گیره .
من چند جا خوندم میگن این یه باگ هست توی Transfer database objects حتی توی forum های مایکروسافت. ولی شاید رفع شده باشه و ...
بهرحال...
ممنون می شم یه راهی واسه انتقال کامل دیتابیس روی سرور نشونم بدین
ممنون
می تونی مثلا از دیتابیست backup بگیری و روی سرور اونجا Restore کنی.
اینجوری کل دیتابیس با ساختار کامل میاد اونجا.
البته باید بعدش Login ها رو هم حتما دوباره به user های دیتابیست map کنی.
hamed_bostan
یک شنبه 19 فروردین 1386, 19:41 عصر
من چند جا خوندم میگن این یه باگ هست توی Transfer database objects حتی توی forum های مایکروسافت. ولی شاید رفع شده باشه و ...
اره منم تو جستجو هام هر جایی بگین دیدم و راه حل پیشنهادی این بود که دیتابس رو از 2000 به 2005 تبدیل کنیم ولی من این کارم کردم به انواع مختلف و باز جواب نداد .
می تونی مثلا از دیتابیست backup بگیری و روی سرور اونجا Restore کنی.
اینجوری کل دیتابیس با ساختار کامل میاد اونجا.
البته باید بعدش Login ها رو هم حتما دوباره به user های دیتابیست map کنی.مشکل در اینجاست که هاست اجازه restore کردن backup رو نمی ده و تنها راهش اینه که backuop رو براشون بفرستی بکی restore کنن که هر بار که نمی شه این کار رو کرد .
البته من اومدم یه کاری کردم و اون اینکه ابتدا script دیتابیس رو روی سرور اجرا کردم و دیتا بیس رو ساختم و بعد از طریق export wizard و از طریق گزینه copy all tables and views اطلاعات رو export کردم .البته روی تمام table ها edit رو زدم و enable identity insert رو تیک زدم .
یه بار با warnning این کار رو می کنه و مشکلی نداره و درست کار می کنه یه بار هم تو table اکسپرت کردن error می ده و کار نمی کنه .
من چه وکنم؟؟؟
ضمنا ممنون رضا جان که پیگیری می کنی دوست عزیز قول میدم دیگه بهنت نگم بهروز :گیج::قلب::قهقهه:
reza_rad
یک شنبه 19 فروردین 1386, 20:17 عصر
مشکل در اینجاست که هاست اجازه restore کردن backup رو نمی ده و تنها راهش اینه که backuop رو براشون بفرستی بکی restore کنن که هر بار که نمی شه این کار رو کرد .
البته من اومدم یه کاری کردم و اون اینکه ابتدا script دیتابیس رو روی سرور اجرا کردم و دیتا بیس رو ساختم و بعد از طریق export wizard و از طریق گزینه copy all tables and views اطلاعات رو export کردم .البته روی تمام table ها edit رو زدم و enable identity insert رو تیک زدم .
یه بار با warnning این کار رو می کنه و مشکلی نداره و درست کار می کنه یه بار هم تو table اکسپرت کردن error می ده و کار نمی کنه .
اگه قرار هست اینکار مداوم انجام بشه... یعنی مدام دیتابیست قرار باشه فرستاده بشه روی host یک راه موجود اینه:
اگه ساختار دیتابیس ها و مشخصاتشون تغییر نمی کنه و فقط دیتا هست که تغییر می کنه. می تونی یکبار که دیتابیس رو با ساختار کامل جداول و کلیدها و ایندکس ها ایجاد کردی برای دفعات بعد فقط دیتا رو بفرستی بالا مثلا با همین DataFlow Task . ولی زمان میبره این کار . چون جدول به جدول باید بریزی و این طول می کشه. ولی راهی که به نظر من میرسه اینه!
اما سوالی که برای من پیش اومده الان اینه:
چرا مستقیما با دیتابیس مقصد روی host کار نمی کنی؟ فقط به خاطر بالا بردن سرعت؟ یا دلیل دیگه ای داره؟
ضمنا ممنون رضا جان که پیگیری می کنی دوست عزیز قول میدم دیگه بهنت نگم بهروز
;)
hamed_bostan
یک شنبه 19 فروردین 1386, 22:41 عصر
[quote=reza_rad;325464اما سوالی که برای من پیش اومده الان اینه:
چرا مستقیما با دیتابیس مقصد روی host کار نمی کنی؟ فقط به خاطر بالا بردن سرعت؟ یا دلیل دیگه ای داره؟
[/quote]
نمی دونم منظورت رو درست متوجه شدم یا نه. سوال شما اینه که چرا مستقیم روی اینترنت دیتا بیسم رو نمی سازم و اونجا باهاش کار نمی کنم؟
اگر منظورت اینه من یه دیتا بیس دارم که عجم عظیمی دیتا باید توش وارد می شد. واسه همین یه win app نوشتیم ادیم به تعدادی اپراتور و اطلاعات وارد کردن . حدود 37000 رکورد توی یه جدول اصلی . ضمنا تعدادی از رکورد ها که توی جدول های دیگه relation دازه و forioun key محضوب میشه واسه اون table ها بینابینشون اطلاعات پاک شده و شماره رکورد ها ترتیبش به هم خورده واگر در دیتا بیس به همین شکل موجود با همین کد ها insert نشه integrity سیستم می ره رو هوا . کد 8 یه دفعه می شه 1 در صورتی که تو جدولی که واسه اش forioun key هست همون 8 باقی مونده .
اگر هم منظورت چیز دیگه ای هست یکو یاد بگیرم
ممنون
reza_rad
دوشنبه 20 فروردین 1386, 08:56 صبح
اگر منظورت اینه من یه دیتا بیس دارم که عجم عظیمی دیتا باید توش وارد می شد. واسه همین یه win app نوشتیم ادیم به تعدادی اپراتور و اطلاعات وارد کردن . حدود 37000 رکورد توی یه جدول اصلی . ضمنا تعدادی از رکورد ها که توی جدول های دیگه relation دازه و forioun key محضوب میشه واسه اون table ها بینابینشون اطلاعات پاک شده و شماره رکورد ها ترتیبش به هم خورده واگر در دیتا بیس به همین شکل موجود با همین کد ها insert نشه integrity سیستم می ره رو هوا . کد 8 یه دفعه می شه 1 در صورتی که تو جدولی که واسه اش forioun key هست همون 8 باقی مونده .
اگه با همون DataFlow Task کار کنی و قبل از انتقال اطلاعات هر جدول داده های جدول رو روی سرور پاک کنی با همون کلید ها وارد دیتابیس میشه و Integrity مشکلی پیدا نمی کنه.
hamed_bostan
دوشنبه 20 فروردین 1386, 16:05 عصر
پس فعلا transfare sql objects رو بی خیال شم اره؟
reza_rad
سه شنبه 21 فروردین 1386, 07:34 صبح
پس فعلا transfare sql objects رو بی خیال شم اره؟
اینجوری که میگی هی گیر میده
و با توجه به جستجوهایی که من کردم و میگن باگ داره فکر کنم بهتره با این روش کار نکنی.
hamed_bostan
سه شنبه 21 فروردین 1386, 07:56 صبح
راستی
بان تفاسیر
ایا وقتی می خوام از transfare sql object استفاده کنم فقط باید خودشو بندازم تو صفحه یا نه باید قبلش transfare login و ... هم بندازم؟
ممنون
reza_rad
سه شنبه 21 فروردین 1386, 08:02 صبح
ایا وقتی می خوام از transfare sql object استفاده کنم فقط باید خودشو بندازم تو صفحه یا نه باید قبلش transfare login و ... هم بندازم؟
ممنون
معمولا باید بزاری
مثل وقت هایی که از دیتابیس backup میگیری و restore می کنی. چون لاگین ها با این روش منتقل نمیشن باید لاگین ها رو هم منتقل کنی.
البته اگه لاگین ها تغییر نمی کنن می تونی یکبار ایجادشون کنی و دفعات بعد فقط به user ها Map شون کنی. می تونی برای این کار کوئری بزنی و از استوردپروسیجر sp_charge_users_login استفاده کنی.
hamed_bostan
سه شنبه 21 فروردین 1386, 08:09 صبح
چون لاگین ها با این روش منتقل نمیشن باید لاگین ها رو هم منتقل کنی.
میشه یه مقدار بابت جابجایی لاگین ها توضیح بدین ؟
البته اگه لاگین ها تغییر نمی کنن می تونی یکبار ایجادشون کنی و دفعات بعد فقط به user ها Map شون کنی. می تونی برای این کار کوئری بزنی و از استوردپروسیجر sp_charge_users_login استفاده کنی.
این stored procedure توی 2005 هستش؟
reza_rad
سه شنبه 21 فروردین 1386, 08:41 صبح
میشه یه مقدار بابت جابجایی لاگین ها توضیح بدین ؟
توی sqlserver اعم از 2000 یا 2005 یه قسمتی توی Manager اش داره به نام Logins .
اونجا تعدادی لاگین تعریف میشن.
حالا برای هر دیتابیس هم قسمتی داریم به اسم users معمولا توی security هست.
اینجا تعدادی user تعریف میشن که به اون دیتابیس قراره دسترسی داده بشن.
حالا باید این user ها به اون لاگین ها map بشن تا بتونن کار کنن.
وقتی شما یه دیتابیس رو کامل منتقل می کنی مسلما user ها هم باهاش فرستاده میشن ولی ارتباط بین user ها و لاگین ها دوباره باید برقرار بشه.
متوجه شدی یا بیشتر توضیح بدم؟
این stored procedure توی 2005 هستش؟
فرقی نمی کنه 200 و 2005
توی دیتابیس master
hamed_bostan
چهارشنبه 22 فروردین 1386, 08:34 صبح
و سوال اخرم:
اگر جداول رو توی دیتا بیس با اجرای اسگریپت بسازم و کلید ها و فیلد های کلیدی که identity هم هستند ساخته بشن و بعد از طریق export import و گزینه copy tables and views این اطلاعاتم رو کپی کنم و برای هر جدول گزینه identity inset رو تیک بزنم ایا درست میشه و کلید هام با همون مقادیر که بوده وارد میشه یا نه از اول ردیف می خوره؟
اطلا این enable identity insert چیه؟
ممنون
reza_rad
چهارشنبه 22 فروردین 1386, 09:56 صبح
اگر جداول رو توی دیتا بیس با اجرای اسگریپت بسازم و کلید ها و فیلد های کلیدی که identity هم هستند ساخته بشن و بعد از طریق export import و گزینه copy tables and views این اطلاعاتم رو کپی کنم و برای هر جدول گزینه identity inset رو تیک بزنم ایا درست میشه و کلید هام با همون مقادیر که بوده وارد میشه یا نه از اول ردیف می خوره؟
اطلا این enable identity insert چیه؟
بله میشه.
البته باید حواست باشه تیک Optimize for many tables رو نزنی.
ضمن اینکه پیشنهاد می کنم قبل از اینکه دیتا ها رو transfer کنی یکبار جدول رو توی مقصد خالی کنی اول. خودش گزینه ای برای اینکار داره.
به اینجا نگاه کن:
http://msdn2.microsoft.com/en-us/library/ms189660.aspx
بخصوص این دو قسمتش:
Options
Source
Identifies the selected source table, view, or query.
Destination
Identifies the selected destination table, view, or query.
Create destination table/file
Specify whether to create the destination table if it does not already exist.
Delete rows in destination table/file
Specify whether to clear the data from an existing table before loading new data.
Append rows to destination table/file
Specify whether to append the new data to the data already present in an existing table.
Edit SQL
Use the default statement in the Create Table SQL Statement dialog box, or modify it for your purposes. If you modify this statement, you must also make associated changes to table mapping.
Drop and re-create destination table
Choose this option to overwrite the destination table.
Enable identity insert
Choose this option to allow existing identity values in the source data to be inserted into an identity column in the destination table. By default, the destination identity column does not allow this.
hamed_bostan
چهارشنبه 22 فروردین 1386, 10:20 صبح
ضمن اینکه پیشنهاد می کنم قبل از اینکه دیتا ها رو transfer کنی یکبار جدول رو توی مقصد خالی کنی اول. خودش گزینه ای برای اینکار داره.
واقعیت من اصلا اطن تیکه رو متوجه نشدم. یعنی چی تو مقصد خالی کنم؟
reza_rad
چهارشنبه 22 فروردین 1386, 10:24 صبح
واقعیت من اصلا اطن تیکه رو متوجه نشدم. یعنی چی تو مقصد خالی کنم؟
یعنی اون جدولی که توی دیتابیست روی هاست داری، اگه توش دیتا داره اول پاک کنی .و بعد دوباره همه دیتاها رو از دیتابیس پایین منتقل کنی به بالا.
البته این کار رو لازم نیست دستی انجام بدی. به خاطر همین گفتم این گزینه مهمه:
Delete rows in destination table/file
Specify whether to clear the data from an existing table before loading new data.
توی option این گزینه رو تیک بزن . خودش اینکارو برات انجام میده.
hamed_bostan
چهارشنبه 22 فروردین 1386, 10:49 صبح
متوجه شدم . نه من وقتی با اسکریپت دیتابیس رو می سازم چیزی توش نیست .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.