2008-09-04 79 views
8

Có ai biết cách thay đổi cột được tính toán mà không làm rơi cột trong SQL Server hay không. Tôi muốn ngừng sử dụng cột làm cột được tính toán và bắt đầu lưu trữ dữ liệu trực tiếp trong cột, nhưng muốn giữ lại các giá trị hiện tại.SQL Server Alter Cột được tính toán

Điều này có thể thực hiện được không?

Trả lời

9

Không mà tôi biết nhưng đây là một cái gì đó bạn có thể làm

thêm cột khác để bàn cập nhật cột với các giá trị của cột tính sau đó thả các cột tính

1

Ok, vì vậy hãy để tôi xem liệu tôi có trực tiếp hay không. Bạn muốn lấy một cột hiện đang được tính toán và tạo cột dữ liệu đơn giản. Thông thường điều này sẽ thả cột nhưng bạn muốn giữ dữ liệu trong cột.

  1. Tạo bảng mới với các cột khóa chính từ bảng nguồn và cột được tạo.
  2. Sao chép dữ liệu từ bảng nguồn của bạn vào bảng mới.
  3. Thay đổi cột trên bảng nguồn của bạn.
  4. Sao chép dữ liệu trở lại.

Không có vấn đề gì bạn làm tôi chắc chắn thay đổi cột sẽ thả nó. Cách này phức tạp hơn một chút nhưng không tệ và tiết kiệm dữ liệu của bạn.

[Chỉnh sửa: Câu trả lời của @ SqlMenace dễ dàng hơn nhiều. :) Lời nguyền bạn Menace !! :)]

1

Nếu bạn cần phải duy trì tên của cột (để không phá vỡ mã máy khách), bạn sẽ cần phải thả cột và thêm lại một cột được lưu trữ có cùng tên. Bạn có thể làm điều này mà không có thời gian chết bằng cách thực hiện các thay đổi (dọc theo các dòng của giải pháp SQLMenace) trong một giao dịch duy nhất. Dưới đây là một số mã giả:

 
begin transaction 
    drop computed colum X 
    add stored column X 
    populate column using the old formula 
commit transaction 
Các vấn đề liên quan