PDA

View Full Version : گرفتن اسکریپ از پایگاه داده و اجرا در سیستم دیگر بدون از دست رفتن اطلاعات



negar.rafie
جمعه 23 آبان 1393, 09:48 صبح
سلام
فرض کنید در سیستم شماره 1 پایگاه داده ای را ایجاد کرده ایم و در سیستم شماره 2 نصب کرده و در ان اطلاعات ذخیره کرده ایم
حال یک سری تغییرات در پایگاه داده داده ایم (در سیستم شماره 1) حالا میخوایم این تغییرات را در سیستم شماره 2 اعمال کنیم ولی اطلاعات ذخیره شده از دست نروند
میشه راهنمایی کنید

sajadsobh
جمعه 23 آبان 1393, 10:48 صبح
با اسکریپت اطلاعات انتقال داده نمیشه. باید بک آپ بگیرید و در سیستم دوم Restore کنید.

negar.rafie
جمعه 23 آبان 1393, 10:54 صبح
متوجه نشدید
من فقط میخوام تغییرات را اعمال کنم
مثلا در یک جدول به دیتابیس اضافه شده حالا میخوام در سیستم مقصد(شماره 2) هم این جدول را اضافه کنم بدون از دادن اطلاعات

sajadsobh
جمعه 23 آبان 1393, 11:08 صبح
من حرف خودمو پس میگیرم با اسکریپت هم داده ها منتقل میشه.
خب موقع گرفتن اسکریپت از جدول مربوطه schema and data رو انتخاب کنید.

negar.rafie
جمعه 23 آبان 1393, 11:09 صبح
من میخوام در کل پایگاه داده تغییرات ایجاد کنم و باید از کل پایگاه داده اسکریپت بگیرم
میشه راهنمایی کنید

sajadsobh
جمعه 23 آبان 1393, 11:18 صبح
125615

125616

125617



امیدوارم مفید بوده باشه.

sajadsobh
جمعه 23 آبان 1393, 11:25 صبح
شما هر تغییری رو که نیاز دارید انجام بدین و بعد از اون جداولی که خواستید اسکریپت بگیرید.
ولی خب بک آپ هم میشه گرفت و در سیستم دوم دیتابیس جدید رو که تغییر کرده restore کنید.

sajadsobh
جمعه 23 آبان 1393, 11:28 صبح
الان مشکل شما با بک آپ گیری چیه؟! توی سیستم اول دیتابیس رو تغییر میدید و میخواین که توی سیستم دوم هم همین دیتابیس رو داشته باشید. عاقلانه ترین کار اینه که دیتابیس قبلی رو از سیستم دوم پاک کرده و دیتابیس جدید رو restore کنید. حالا اگه کسی نظر دیگه ای داره بگه ما هم یاد بگیریم.:لبخندساده:

sajadsobh
جمعه 23 آبان 1393, 11:30 صبح
البته اگه اطلاعات دیتابیس سیستم شماره 1 و 2 با هم فرق میکنه حق با شماست. اینجا دیگه بک آپ گیری فایده نداره.

negar.rafie
جمعه 23 آبان 1393, 11:33 صبح
sql شما ورژنش چنده؟
مال من فرق داره
ولی من اسکریپت گرفتن شد این

USE [db]
GO
/****** Object: Table [dbo].[tbltest] Script Date: 11/14/2014 12:06:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tbltest](
[Name] [nvarchar](50) NULL,
[Family] [nvarchar](50) NULL,
[age] [nchar](10) NULL
) ON [PRIMARY]
GO

یعنی فیلد age را اضافه کردم حالا در سیستم شماره 2این فیلدداخل جدولش نیست و میخوایم با اجرای این اسکریپت اضافه کنیم
حالا چطوری این اسکریپت را اضافه کنیم؟

sajadsobh
جمعه 23 آبان 1393, 12:48 عصر
الان این فیلد age مقدار هم توش داره؟!
اگه نه که با دستور alter table می تونید یه فیلد جدید به جدول اضافه کنید.
بعدشم من از ورژن 2008 R2 استفاده میکنم.

negar.rafie
جمعه 23 آبان 1393, 15:15 عصر
خیر نداره
حالا چطوری این اسکریپت را در سیستم شماره 2 اجرا کنم؟

حمیدرضاصادقیان
جمعه 23 آبان 1393, 16:05 عصر
سلام.
لطفا اگر درمورد موضوعی اطلاعات ندارید یا سوال رو متوجه نشدید اشتباه راهنمایی نکنید.

درمورد سوال شما باید عرض کنم که با استفاده از دستورات DDL که شامل Create,Alter,Drop هست میتونید تغییرات رو بر روی دیتابیس جدید اعمال کنید.
بعضی از ابزارها به شما این امکان رو میدهند که دو تا دیتابیس رو باهم مقایسه کنید و تغییرات ساختاری رو در قالب Script به شما تحویل می دهند.
یکی از این ابزارها که پولی هم هست همون ابزار Redgate هست که شما میتونید ازش استفاده کنید.
ابزار دیگه ای که رایگانه و مقداری نیاز به آموزش داره استفاده از Database Project هست که در Visual Studio هست.کل دیتابیس شما رو به صورت Script در میاره و در قالب یک پروژه ایجاد میکنه.
هر تغییراتی که اینجا بدید رو به راحتی میتونید Script تغییرات رو ایجاد کنید و در دیتابیس مقصد اعمال کنید.
همچنین با این روش میتونید دیتابیس خودتون رو به Source Control مثل TFS اضافه کنیدو از قابلیتهای اون استفاده کنید.
این لینک (http://msdn.microsoft.com/en-us/library/aa833404(v=vs.100).aspx) و این لینک (http://msdn.microsoft.com/en-us/library/vstudio/xee70aty(v=vs.110).aspx) اطلاعات خوبی رو در این زمینه در اختیارتون میذاره.
مورد دیگه اینه که دیتابیس رو به عنوان Data tier Application در SQL Server ، اول Register کنید و بعد با استفاده از DacPak ها این تغییرات رو نگهداری کنید.
در این زمینه میتونید از این لینک (http://msdn.microsoft.com/en-us/library/dd631853(v=sql.10).aspx) و این لینک (http://technet.microsoft.com/en-us/library/ee240739(v=sql.105).aspx) استفاده کنید.

امیدوارم در این زمینه دیگه ابهامی وجود نداشته باشه.

موفق باشید./

negar.rafie
جمعه 23 آبان 1393, 17:23 عصر
خیلی ممنون
ولی من نمیدونم باید چکار کنم
خیلی تخصصی توضیح دادید

حمیدرضاصادقیان
جمعه 23 آبان 1393, 20:54 عصر
ببینید من راه حل هارو کامل بهتون توضیح دادم لینک آشنایی و نحوه کار باهاشون هم بهتون دادم.
باید خودتون دست به کار بشید.اون لینکها رو مطالعه کنید.
یکی از راحتترین راهها اینه که یک فایل SQL درست کنید و هر تغییری که در دیتابیس میدین خودتون در این فایل با استفاده از دستورات DDL بنویسید. و در نهایت در سیستم مقصد با استفاده از دستورات SQLCMD اونو اجرا کنید.یا با استفاده از Management Studio فایل رو باز کرده و روی دیتابیس مقصد اونو اجرا میکنید.
ولی پیشنهاد من اینه که سعی کنید کاری رو به صورت صحیح از ابتدا انجام بدید و کاملا با مهندسی نرم افزار پیش برید که بعدا در جاهای پیچیده دچار بحران نشید.
روشهای اینکار هم بهتون پیشنهاد دادم و لینکهاش رو براتون ارسال کردم.