الإرشادات التفصيلية: مقارنة الرسوم تخطيطية قاعدة بيانات و مشروع قاعدة بيانات

ينطبق هذا الموضوع على:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio 2010 Professional 

Visual Studio Express

الموضوع الذي ينطبق الموضوع الذي ينطبق الموضوع الذي لا ينطبق الموضوع الذي لا ينطبق

في ترتيب هو معاينة، يمكنك يقارن في المخطط من تشغيل قاعدة بيانات المشروع مع مخطط قاعدة بيانات باستخدام Visual Studio. استناداً إلى كيفية الفريق هو باستخدام مشروع قاعدة بيانات وقاعدة البيانات، ثم تريد نسخ تغييرات المخطط في الاتجاه واحد أو الآخر. قد تصادف السيناريوهات النموذجية التالية كـ تقدم الفريق الخاص بك من خلال دورة حياة التطوير databكـe:

  • **كان مشروع المصدر، و قاعدة بيانات هو الهدف.**يمكنك استخدام قاعدة بيانات مشروع إلى تطوير أو الاحتفاظ بقاعدة بيانات. بعد تغيير في مخطط مشروع، تقوم بنسخ التغييرات إلى قاعدة بيانات، التي هو التي تتم استضافتها تشغيل خادم تجهيز. لاحقاً، يمكن للفريق نشر قاعدة بيانات إلى خادم إنتاج.

    المقارنة التي تقوم بها في هذه معاينة بإنشاء البرنامج نصي للغة تعريف بيانات (DDL) من الاختلافات المخطط. يمكنك حينئذ استخدام هذا برنامج نصي ل يطبق بالكامل أو جزء من مشروع قاعدة بيانات إلى قاعدة بيانات. للحصول على مزيد من المعلومات، راجع ينشر التغييرات من مشروع إلى قاعدة بيانات.

  • **قاعدة البيانات المصدر هو و Project هو الهدف.**قد يتم العثور على خطأ في مخطط قاعدة بيانات الإنتاج، أو قد تصبح قديمة المخطط و تتطلب تحديثًا. قد يتطلب هذا الاكتشاف فريق العمل بتطبيق تحديث عاجل إلى قاعدة بيانات. إلى الاحتفاظ بمشروع متزامنة مع قاعدة البيانات، يمكنك بعد ذلك استيراد تحديث في إلى مشروع قاعدة بيانات. لمزيد من المعلومات، راجع كيفية القيام بما يلي: استيراد التحديثات من قاعدة بيانات قاعدة بيانات مشروع.

توضح هذه الإرشادات التفصيلية المهام التالية:

مرحلة الإعداد

  1. إنشاء مشروع قاعدة بيانات. يبدأ مشروع جديد فارغ.

  2. استيراد مخطط قاعدة بيانات من برنامج نصي.

  3. تكوين، إنشاء ونشر مشروع قاعدة بيانات إلى خادم قاعدة بيانات الخاصة بك. قاعدة البيانات و مشروع تحتوي رسوم تخطيطية مماثلة.

مرحلة الإنتاج

  1. إضافة جدول إلى مشروع قاعدة بيانات. قم بإضافة ثلاثة أعمدة جدول يسمى InternationalShippers.

  2. يقارن المخططات الثاني. في هذه المقارنة، تقوم بتعيينها مشروع قاعدة بيانات المصدر وقاعدة بيانات كالهدف. ولذلك، تظهر نتائج الجدول InternationalShippers كجدول جديد في مشروع قاعدة بيانات.

  3. ينشر التغييرات من مشروع إلى قاعدة بيانات. يمكنك ينشر جدول InternationalShippers جديد من مشروع قاعدة بيانات إلى قاعدة بيانات المنشورة. اتباع هذا إجراء، سيتم الكتابة فوق أجزاء من قاعدة بيانات المثال.

    ملاحظة

    يمكنك أيضا ينشر التغييرات من قاعدة بيانات إلى مشروع قاعدة بيانات. لمزيد من المعلومات، راجع كيفية القيام بما يلي: استيراد التحديثات من قاعدة بيانات قاعدة بيانات مشروع.

المتطلبات الأساسية

إلى اكتمال هذه معاينة، تحتاج التطبيقات والأذونات التالية:

  • SQL Server 2008

  • أذونات ل إنشاء وتحديث قواعد البيانات تشغيل خادم قاعدة بيانات الهدف

  • Visual Studio Premium أو Visual Studio Ultimate

مرحلة الإعداد

قم بإنشاء قاعدة بيانات مشروع

إلى إنشاء مشروع قاعدة بيانات

  1. من القائمة File (ملف)، أشر إلى New (جديد)، ثم انقر فوق Project (مشروع).

    الـ مشروع جديد يفتح مربع الحوار.

  2. تحت المثبتة قوالب ، توسيع العقدة قاعدة بياناتثم ثم انقر فوق من SQL الخادم.

  3. في قائمة القوالب، انقر فوق مشروع قاعدة بيانات في SQL الخادم 2008.

  4. في الاسم، اكتب CompareProject، ومن ثم انقر فوق ‏‏موافق .

    CompareProject مشروع، الذي هو فارغ، قم بفتح ويظهر في من مستكشف الحلول.

استيراد مخطط قاعدة بيانات من برنامج نصي

إلى إنشاء برنامج نصي التي يمكن استيراد مخطط

  1. من قائمة ملف، أشر إلى جديد، ثم انقر فوق ملف.

    سوف يفتح مربع الحوار مشروع جديد .

  2. في lهوt فئات ، انقر فوق عام إذا أنه هو المميزة بالفعل.

  3. في القائمة قوالب ، انقر فوق ملف Sql، و ثم انقر فوق فتح.

    Transact-SQLفتح محرر.

  4. قم بنسخ التعليمة البرمجية التالية، ثم لصقه في Transact-SQLمحرر.

    PRINT N'Creating Sales...';
    GO
    CREATE SCHEMA [Sales]
        AUTHORIZATION [dbo];
    GO
    PRINT N'Creating Sales.Customer...';
    GO
    CREATE TABLE [Sales].[Customer] (
        [CustomerID]   INT IDENTITY (1, 1) NOT NULL,
        [CustomerName] NVARCHAR (40) NOT NULL,
        [YTDOrders] INT NOT NULL,
        [YTDSales] INT NOT NULL
    );
    GO
    PRINT N'Creating Sales.Orders...';
    GO
    CREATE TABLE [Sales].[Orders] (
        [CustomerID] INT NOT NULL,
        [OrderID] INT IDENTITY (1, 1) NOT NULL,
        [OrderDate] DATETIME NOT NULL,
        [FilledDate] DATETIME NULL,
        [Status] CHAR (1) NOT NULL,
        [Amount] INT NOT NULL
    );
    GO
    PRINT N'Creating Sales.Def_Customer_YTDOrders...';
    GO
    ALTER TABLE [Sales].[Customer]
        ADD CONSTRAINT [Def_Customer_YTDOrders] DEFAULT 0 FOR [YTDOrders];
    GO
    PRINT N'Creating Sales.Def_Customer_YTDSales...';
    GO
    ALTER TABLE [Sales].[Customer]
        ADD CONSTRAINT [Def_Customer_YTDSales] DEFAULT 0 FOR [YTDSales];
    GO
    PRINT N'Creating Sales.Def_Orders_OrderDate...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [Def_Orders_OrderDate] DEFAULT GetDate() FOR [OrderDate];
    GO
    PRINT N'Creating Sales.Def_Orders_Status...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [Def_Orders_Status] DEFAULT 'O' FOR [Status];
    GO
    PRINT N'Creating Sales.PK_Customer_CustID...';
    GO
    ALTER TABLE [Sales].[Customer]
        ADD CONSTRAINT [PK_Customer_CustID] PRIMARY KEY CLUSTERED ([CustomerID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
    GO
    PRINT N'Creating Sales.PK_Orders_OrderID...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [PK_Orders_OrderID] PRIMARY KEY CLUSTERED ([OrderID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
    GO
    PRINT N'Creating Sales.FK_Orders_Customer_CustID...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [FK_Orders_Customer_CustID] FOREIGN KEY ([CustomerID]) REFERENCES [Sales].[Customer] ([CustomerID]) ON DELETE NO ACTION ON UPDATE NO ACTION;
    GO
    PRINT N'Creating Sales.CK_Orders_FilledDate...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [CK_Orders_FilledDate] CHECK ((FilledDate >= OrderDate) AND (FilledDate < '01/01/2010'));
    GO
    PRINT N'Creating Sales.CK_Orders_OrderDate...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [CK_Orders_OrderDate] CHECK ((OrderDate > '01/01/2005') and (OrderDate < '01/01/2020'));
    GO
    PRINT N'Creating Sales.uspCancelOrder...';
    GO
    CREATE PROCEDURE [Sales].[uspCancelOrder]
    @OrderID INT
    AS
    BEGIN
    DECLARE @Delta INT, @CustomerID INT
    BEGIN TRANSACTION
        SELECT @Delta = [Amount], @CustomerID = [CustomerID]
         FROM [Sales].[Orders] WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Orders]
       SET [Status] = 'X'
    WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Customer]
       SET
       YTDOrders = YTDOrders - @Delta
        WHERE [CustomerID] = @CustomerID
    COMMIT TRANSACTION
    END
    GO
    PRINT N'Creating Sales.uspFillOrder...';
    GO
    CREATE PROCEDURE [Sales].[uspFillOrder]
    @OrderID INT, @FilledDate DATETIME
    AS
    BEGIN
    DECLARE @Delta INT, @CustomerID INT
    BEGIN TRANSACTION
        SELECT @Delta = [Amount], @CustomerID = [CustomerID]
         FROM [Sales].[Orders] WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Orders]
       SET [Status] = 'F',
           [FilledDate] = @FilledDate
    WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Customer]
       SET
       YTDSales = YTDSales - @Delta
        WHERE [CustomerID] = @CustomerID
    COMMIT TRANSACTION
    END
    GO
    PRINT N'Creating Sales.uspNewCustomer...';
    GO
    CREATE PROCEDURE [Sales].[uspNewCustomer]
    @CustomerName NVARCHAR (40)
    AS
    BEGIN
    INSERT INTO [Sales].[Customer] (CustomerName) VALUES (@CustomerName);
    SELECT SCOPE_IDENTITY()
    END
    GO
    PRINT N'Creating Sales.uspPlaceNewOrder...';
    GO
    CREATE PROCEDURE [Sales].[uspPlaceNewOrder]
    @CustomerID INT, @Amount INT, @OrderDate DATETIME, @Status CHAR (1)='O'
    AS
    BEGIN
    DECLARE @RC INT
    BEGIN TRANSACTION
    INSERT INTO [Sales].[Orders] (CustomerID, OrderDate, FilledDate, Status, Amount) 
         VALUES (@CustomerID, @OrderDate, NULL, @Status, @Amount)
    SELECT @RC = SCOPE_IDENTITY();
    UPDATE [Sales].[Customer]
       SET
       YTDOrders = YTDOrders + @Amount
        WHERE [CustomerID] = @CustomerID
    COMMIT TRANSACTION
    RETURN @RC
    END
    GO
    
  5. في قائمة ملف ، انقر فوق كـ حفظ SqlQuery_1.sql .

    حفظ ملف باسم صندوق حوار يفتح.

  6. في كائن اسم الكائن، نوع من SampleImportScript.sql.

    يمكنك حفظ ملف إلى أي الموقع تشغيل جهاز الكمبيوتر الخاص بك. دون beca موقع استخدم، يجب أن استخدم في إجراء التالي.

  7. انقر فوق حفظ.

  8. في قائمة ملف ، انقر فوق الحل إغلاق.

    القادمة التي تاريخ الإنشاء مشروع قاعدة بيانات واستيراد المخطط من وجود تاريخ الإنشاء d برنامج نصي.

إلى استيراد مخطط قاعدة بيانات من برنامج نصي

  1. تشغيل انقر قائمة مشروع من استيراد برنامج نصي لقاعدة البيانات.

  2. بعد قراءة صفحة الترحيب، انقر فوق التالي.

  3. انقر فوق استعراض، وانتقل إلى الموقع الذي قمت بتم الحفظه في SampleImportScript.sql ملف.

  4. انقر نقراً مزدوجاً فوق SampleImportScript.sql ملف، ثم انقر فوق إنهاء.

    برنامج نصي هو استيرادها، والكائنات التي تم تعريفها بحيث يتم إضافة برنامج نصي إلى قاعدة بيانات مشروع.

  5. مراجعة الملخص، و ثم انقر فوق إنهاء.

تكوين إنشاء ونشر مشروع قاعدة بيانات

هذه الإجراءات بإنشاء قاعدة بيانات المخطط الذي تم استيراده في بيئة تطوير معزولة (أو sوbox) حيث يمكنك تطوير و اختبار قاعدة البيانات.

إلى تكوين وبنية مشروع قاعدة بيانات

  1. في مستكشف الحل ، انقر فوق مشروع CompareProject.

  2. تشغيل انقر قائمة مشروع خصائص CompareProject.

    خصائص مقارنة مع مشروع مشروع تظهر.

  3. انقر فوق علامة تبويب نشر.

  4. في إجراء توزيع قائمة, انقر فوق إنشاء برنامج نصي لنشر (.sql) وتوزيع إلى قاعدة بيانات.

  5. في إعدادات قاعدة بيانات الهدف، انقر فوق تحرير.

  6. في صندوق الحوار خصائص الاتصال ، بتعيين خصائص اتصال قاعدة بيانات حيث تريد إلى العمل، ومن ثم انقر فوق ‏‏موافق .

    الاتصال بالهدف صندوق يعرض سلسلة الاتصال الصحيح.

    ملاحظة تنبيهتنبيه

    يجب إنشاء قاعدة بيانات تشغيل خادم اختبار، Development Server، أو تشغيل الكمبيوتر المحلي. يجب عدم استخدام إنتاج الخادم.

  7. في اسم قاعدة بيانات الهدف المربع، نوع CompareProjectDB.

  8. من القائمة ملف، انقر فوق حفظ الكل.

  9. من القائمة Build (إنشاء)، انقر فوق Build Solution (إنشاء الحل).

    برنامج نصي للنشر هو تم إنشاؤها استناداً إلى خصائص مشروع التي عينتها فقط. حالة الإنشاء يظهر في نافذة إخراج و الإنشاء: نجحت 1 أو up-إلى-date يظهر السطر الأخير.

إلى نشر مشروع قاعدة بيانات

  1. في مستكشف الحل ، انقر فوق مشروع CompareProject.

  2. من قائمة بنية ، انقر فوق نشر CompareProject.

    كـ بديل، يمكنك أيضا زر الماوس الأيمن فوق مشروع في من مستكشف الحلول وانقر فوق التوزيع.

    ملاحظة تنبيهتنبيه

    يجب تشغيل هذا توزيع مقابل اختبار الخادم، تطوير الخادم، أو على كمبيوتر محلي. يجب عدم استخدام خادم الإنتاج الخاص بك.

    مشروع قاعدة بيانات هو نشر إلى قاعدة بيانات جديدة. حالة توزيع يظهر في الإطار إخراج ، و تم بنجاح نشر يظهر السطر أخير.

مرحلة الإنتاج

إضافة جدول لقاعدة بيانات مشروع

لإضافة جدول إلى مشروع

  1. في قائمة عرض ، انقر فوق عرض مخطط قاعدة بيانات.

    طريقة عرض المخطط بفتح و يطريقة عرض المخطط للمشروع CompareProject.

  2. في عرض مخطط، المتوقعة و عقده CompareProject، و المتوقعة و العقدة المخططات.

  3. يمين-انقر فوق المبيعات، وأشر إلى إضافة، وانقر فوق الجدول.

    يفتح صندوق الحوار إضافة عنصر جديد?-CompareProject.

  4. Underقوالب, انقر جدول.

  5. في الاسم، اكتب InternationalShippers، و ثم انقر فوق إضافة.

    جدول A التي هو باسم InternationalShippers هو تمت الإضافة إلى مشروع CompareProject. جدول يظهر تعريف في Transact-SQLالمحرر.

  6. قم بتغيير برنامج SQL نصي في InternationalShippers.جدول.sql للعبارات التالية:

    CREATE TABLE [Sales].[InternationalShippers]
    (
    [ShipperID] [int] NOT NULL IDENTITY(1,1),
    [CompanyName] [nvarchar] (40) NOT NULL,
    [Region] [nvarchar] (40) NOT NULL,
    [Phone] [nvarchar] (24) NULL
    ) ON [PRIMARY]
    
  7. انقر فوق حفظ InternationalShippers.جدول.sql.

  8. في عرض مخطط، انقر نقراً مزدوجاً فوق الجدول InternationalShippers، و انقر فوق عرض ملف في "مستكشف الحلول".

    في مستكشف الحل ، InternationalShippers.sql ملف يتم تمييز.

  9. اضغط F4.

    يظهر الإطار خصائص وقم بعرض خصائص الملف InternationalShippers.جدول.sql. Build Actionتعيين خاصية إلى بنية ، مما يشير إلى أنه ملف تحتوي على التعريف لكائن قاعدة بيانات ويجب أن تكون موزع والتحقق من صحتها.

يقارن انتشار رسوم تخطيطية

إلى يقارن المخططات الثاني

  1. في قائمة بيانات ، أشر إلى يقارن مخطط ، و انقر يقارن بمخطط جديد.

  2. يتم فتح صندوق الحوار جديد مخطط للمقارنة.

  3. مخطط الهدف، انقر فوق قاعدة بيانات وتحديد اتصال إلى قاعدة بيانات منشورة سابقا في هذه معاينة، وانقر فوق ‏‏موافق .

    مخطط قاعدة بيانات هو باليقارن مع مخطط المشروع تم تغييرها، وتظهر النتائج في الإطار يقارن بالمخطط. في CompareProject عمود، [المبيعات]. يظهر الجدول [InternationalShippers]. حالة الجدول جديد، و إجراء تحديث الخاص به هو إنشاء. إذا قمت بنشر التغييرات الآن، جدول قد تم إنشاؤه في قاعدة بيانات الهدف. للحصول على مزيد من المعلومات، راجع إجراء التالي.

إلى مراجعة وتجاهل الاختلافات المتوقعة

  1. في قائمة نتائج المقارنة، قم بالتمرير إلى العقدة ملفات SQL.

    قاعدة بيانات الهدف، يظهر صفين بحالة من مفقود في القائمة: صف واحد للملف مجموعة الملفات وصف واحد يسجل الملف.

  2. انقر فوق العمود إجراء تحديث لكل صف لتغيير الإجراء إلى من 'تخطي'.

    عندما تقوم بتحديث مخطط قاعدة بيانات، عادة ما لم تكن تريد إلى تغيير الملف مجموعة الملفات أو ملف السجل المرتبطة بقاعدة البيانات الهدف. بتغيير إجراء إلى 'تخطي'، سيتم متابعة قاعدة بيانات الهدف إلى استخدم الملفات الحالي الخاصة به.

    بعد ذلك، يمكنك اختيار تحديث قاعدة بيانات الهدف إلى مطابقة قاعدة بيانات المصدر.

ينشر التغييرات من مشروع إلى قاعدة البيانات

لنشر التغييرات إلى قاعدة بيانات الهدف

  • في يقارن مخطط نافذة، انقر فوق كتابة التحديثات.

    ملاحظة

    قد يتم معطّل الزر كتابة التحديثات إذا كان مشروع يحتوي على واحد أو المزيد الأخطاء. في حالة حدوث ذلك، تظهر رسالة في شريط المعلومات يقارن مخطط.

    يتم تنفيذ الإجراءات التي تم سردها في الإطار يقارن مخطط ، التي تضمين عملية إنشاء جدول InternationalShippers،. هذا المزامنة بتغيير مخطط قاعدة بيانات إلى يتطابق مع قاعدة بيانات المشروع. عند عملية التحديث هو كاملة، المخططات مقارنة مرة أخرى، ويتم تحديث نتائج.

    مخطط الهدف أثناء هو يتم محدثه، يمكنك إلغاء الأمر تشغيل بواسطة فتح قائمة بيانات ، الإشارة إلى يقارن بالمخطط، ثم النقر فوق إيقاف الكتابة إلى الهدف.

    ملاحظة تنبيهتنبيه

    لأنه لا يمكن إجراء بعض التغييرات المخطط ضمن نطاق المعاملة، فقد يتم فقدان بيانات إذا كنت إلغاء الأمر عملية تحديث. على سبيل المثال، جدول في قاعدة بيانات الهدف قد يكون تم إسقاط تحضيرا ل re-creation الخاص به. إذا قمت بإلغاء تحديث في هذه اللحظة، فقد تفقد الجدول. في حالة حدوث هذا النوع من فقدان بيانات، يجب يقارن المخططات مرة أخرى.

راجع أيضًا:

المهام

كيفية القيام بما يلي: Compare Database Schemas

كيفية القيام بما يلي: Compare the Data of Two Databases

المبادئ

يقارن و مزامنة رسوم تخطيطية قاعدة بيانات

يقارن و مزامنة البيانات في واحد أو جداول إضافية مع البيانات في قواعد بيانات مرجعية