نمایش نتایج 1 تا 5 از 5

نام تاپیک: کمک - اجرای دستور ALTER TABLE در یک تیبل با 7 میلیون رکورد

  1. #1
    کاربر دائمی آواتار arman_Delta2002
    تاریخ عضویت
    تیر 1387
    محل زندگی
    بابلسر
    سن
    37
    پست
    707

    کمک - اجرای دستور ALTER TABLE در یک تیبل با 7 میلیون رکورد

    سلام من چند سوال داشتم که مهمترینش اینه
    1- چرا زمانی که دستور ALTER TABLE رو روی یکی از تیبل های خیلی حجیم ام انجام میدم بعد حدود 4 دقیقه خطای بدون پاسخ بودن رو میده و کامل انجام نمشه این تیبل ام حدود 7 میلیون رکورد داره


    ALTER TABLE dbo.MaleTabel
    ALTER COLUMN MaleName nvarchar(255) NOT NULL
    GO

    ALTER TABLE dbo.MaleTabel
    ADD PRIMARY KEY ([MaleName])
    GO


    بعد 15 دقیقه این خطا رو داد

    Msg 515, Level 16, State 2, Line 2
    Cannot insert the value NULL into column 'MaleName', table 'MailDB.dbo.MaleTabel'; column does not allow nulls. UPDATE fails.
    The statement has been terminated.
    Msg 8111, Level 16, State 1, Line 2
    Cannot define PRIMARY KEY constraint on nullable column in table 'MaleTabel'.
    Msg 1750, Level 16, State 0, Line 2
    Could not create constraint. See previous errors.



    2- چرا وقتی که من چند تا تیبل خیلی بزرگ رو پاک کردم باز هم حجم بانکم حمونقدر است و فقط نام تیبل رو پاک کرده و داده های توشو پاک نکرده؟

    3- آیا میشه یک فیلد از نوع رشته ای رو به عنوان کلید خارجی تعریف کرد و این کار باعث بشه که داده های تکراری اون سطون از بین بره ؟
    آخرین ویرایش به وسیله arman_Delta2002 : پنج شنبه 22 تیر 1391 در 09:33 صبح

  2. #2

    نقل قول: کمک - اجرای دستور ALTER TABLE در یک تیبل با 7 میلیون رکورد

    سلام
    در مورد سئوال اول ... معمولا وقتی اطلاعات توی جدول زیاد باشه تغییر جدول زمانبر و سخت می شه ... اما خطایی که می ده مربوط به اینه که شما یه فیلدی رو داری not null می کنی ... اول مطمئن باش که توی رکوردهات هیجا این فیلد null نباشه ... مثلا اینو اجرا کن ...

    Select
    Count(*)From MaleTabel Where MaleName isnull

    این Query نباید مقداری برگردونه ...
    بعد شما اومدی این فیلد رو کلید اصلی کردی ... پس نباید مقدار تکراری داشته باشه ... با این Query می تونی امتحان کنی ...


    Select
    MaleName,Count(*)from MaleTabel groupby (MaleName)havingCount(*)>1


    اما در کل کار خوبی انجام نمیدی که یه فیلد رشته ایی رو داری کلید اصلی قرار می دی ... با این تعداد رکورد کلا منفجر می شه ...

    یکی از راه حل ها می تونه این باشه که شما یه جدول بساز مثل جدول قبلیت بدون اطلاعات بعد تغییرات رو روش اعمال کن ... بعد اطلاعات رو از جدول قبلی بریز تو جدول جدید ... بعد اسماشون رو عوض کن یا از Synonym استفاده کن ...

    2- حجم بانک شامل دو فایل هست ... mdf و ldf ... حجمه کدومشون زیاد شده ... ؟! اگه می خوای حجمی رو که یه Table به خودش اختصاص داده رو ببینی ... می تونی بری رو اسم جدول راست کلیک کنی Properties بعد هم storage رو انتخاب کنی ... شاید اونقدر که فکر می کردی جداولت حجم نداشتن ...

    برای دستور Shrink هم جستجو کن ...

    3 - این مورد رو کلا نفهمیدم ...

  3. #3
    کاربر دائمی آواتار arman_Delta2002
    تاریخ عضویت
    تیر 1387
    محل زندگی
    بابلسر
    سن
    37
    پست
    707

    نقل قول: کمک - اجرای دستور ALTER TABLE در یک تیبل با 7 میلیون رکورد

    حدف اصلی من از این کار اینه که ردیف های تکراری رو از بین ببرم واسه همین سعی کردم که کلیدش کنم هرچی مثال تو اینترنت بود واسه پاک کردن داده های تکراری مربوط کار با اعداد بود

  4. #4

    نقل قول: کمک - اجرای دستور ALTER TABLE در یک تیبل با 7 میلیون رکورد

    سلام.
    نیازی به اینکار نیست و خیلی راحت میتونید با کدی که در پست 2 نوشته شده داده های تکراری رو بدست بیارید.

  5. #5

    نقل قول: کمک - اجرای دستور ALTER TABLE در یک تیبل با 7 میلیون رکورد

    فرض کن برای اسم علی 3 تا رکورد داریم ... کدوم رکورد ها باید حذف بشن ؟؟ یعنی با چه الگوریتمی می خوای تشخیص بدی که کدوم رکورد قراره بمونه و بقیه باید حذف بشن ... ؟! آیا همه فیلدهای دیگه مربوط به این 3 تا رکورد یکی هست ؟!

تاپیک های مشابه

  1. دستور alter table
    نوشته شده توسط ha-sa-gh در بخش SQL Server
    پاسخ: 3
    آخرین پست: جمعه 08 خرداد 1388, 02:16 صبح
  2. سوال: مشکل این دستور sql چیه ALTER TABLE table1 RENAME tel to mobile
    نوشته شده توسط m_vb1386 در بخش Access
    پاسخ: 1
    آخرین پست: چهارشنبه 17 مهر 1387, 15:26 عصر
  3. تعیین کلید اصلی با دستور ALTER TABLE
    نوشته شده توسط emad4000 در بخش SQL Server
    پاسخ: 5
    آخرین پست: چهارشنبه 22 شهریور 1385, 10:29 صبح
  4. ip و اجرای دستور
    نوشته شده توسط SReza1 در بخش امنیت در شبکه
    پاسخ: 21
    آخرین پست: سه شنبه 28 بهمن 1382, 10:16 صبح
  5. مشکل در اجرای دستور INTERSECT
    نوشته شده توسط jirjirakk در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: سه شنبه 23 دی 1382, 02:54 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •