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

StackOverflow https://stackoverflow.com/questions/3016913

سؤال

أنا أختبر ميزات مشروع قاعدة البيانات الجديدة في Visual Studio 2010 وأريد تغيير اسم العمود في جدول. لقد غيرت الاسم في برنامج Create ونشره مقابل قاعدة البيانات. قام البرنامج النصي الذي تم إنشاؤه بإسقاط العمود وأضاف عمودًا جديدًا بالاسم الصحيح ، ولكن تم فقد جميع البيانات.

هل هناك إعداد لن يسقط بيانات العمود؟

أنا أبحث عن حل "datadude" لهذه القضية. (إذا كان هناك واحد)

PRINT N'Altering [dbo].[Users]...';

GO
ALTER TABLE [dbo].[Users] DROP COLUMN [TestX];

GO
ALTER TABLE [dbo].[Users]
    ADD [Testn] NVARCHAR (50) NULL;

GO

شكرا لك كيث

هل كانت مفيدة؟

المحلول

استخدم عرض المخطط من خلال النقر على عرض -> عرض مخطط قاعدة البيانات

قم بتوسيع الجداول والأعمدة.

انقر بزر الماوس الأيمن على العمود وانقر فوق Refactor -> إعادة تسمية ...

قم بتغيير الاسم في حقل الاسم الجديد مع مربع تغييرات المعاينة.

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

داخل مشروع قاعدة البيانات يتم إنشاء ملف RefactorLog يعرض تغيير الاسم.

عندما يتم نشر المخطط الجديد مقابل قاعدة البيانات الحالية ، يبدو أن Datadude ينظر إلى ملف refactorlog وجدول dbo._refactorlog لتحديد إعادة المعالجة ضد قاعدة البيانات.

فيما يلي الرمز الذي تم إنشاؤه باستخدام هذا الإجراء ، تغيير اسم العمود الذي تمت الإشارة إليه أيضًا في إجراء مخزن:

EXECUTE sp_rename @objname = N'[dbo].[Users].[TestF]', @newname = N'TestG', @objtype = N'COLUMN';

GO
PRINT N'Altering [dbo].[ListUsers]...';

GO
ALTER PROCEDURE [dbo].[ListUsers]

AS
    SELECT [ID], [FirstName], [LastName], [TestG]
    FROM Users
RETURN 0
GO

كيث

نصائح أخرى

إذا كان الجدول صغيرًا ، فيمكنك إنشاء جدول جديد يحتوي على الأعمدة الصحيحة ، ثم إدراجه من الجدول القديم إلى الجدول الجديد ، وتغيير الأعمدة كما تذهب.

إذا كان الجدول كبيرًا ، ولا يمكنك شراء الوقت أو ذاكرة الوصول العشوائي أو الجهد لنسخ الجدول بأكمله ، يمكنكalter table add new_column من ثمupdate table set new_column=old_column من ثمalter table drop column old_column.

بناء الجملة بالطبع مبسط.

إن الطريقة التي تتعامل بها مشاريع قاعدة بيانات Visual Studio تتعامل مع المخططات التي تثير هذا النوع من الارتباك. من الصعب للغاية على VS معرفة ما إذا كنت ببساطة إعادة تسمية عمود (ويجب أن تحافظ على البيانات) أو إزالة العمود وإضافة عمود مختلف. عملت شركتي لفترة طويلة على منتج التحكم في مخطط قاعدة البيانات والذي كان لديه كل هذه المشكلات نفسها.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top