Đây là cơ sở dữ liệu sql 2000 mà tôi đang làm việc.SQL 2000 'TRY CATCH như' Xử lý lỗi
Tôi có cái mà tôi gọi là bảng dàn dựng là một vùng dữ liệu thô của dữ liệu, vì vậy mọi thứ đều là ntext hoặc nvarchar (255).
tôi cần phải đúc/chuyển đổi tất cả các dữ liệu này vào các kiểu dữ liệu thích hợp (ví dụ int, số thập phân, nvarchar, vv)
Con đường tôi đã đi để làm điều này là để lặp qua tất cả hồ sơ sử dụng một trong khi vòng lặp và cố gắng một CAST trên mỗi cột trên một bản ghi duy nhất trong mỗi lần lặp, sau khi tôi truy cập một bản ghi cụ thể, tôi gắn cờ nó là trường bit (đã xử lý).
Nhưng làm cách nào tôi có thể ghi lại lỗi khi/nếu điều đó xảy ra nhưng cho phép vòng lặp while tiếp tục. Lúc đầu, tôi đã thực hiện điều này bằng cách sử dụng TRY CATCH trong một trường hợp SQL 2005 (để dự án đi) và tất cả đều hoạt động tốt, nhưng hôm nay tôi đã học được rằng cơ sở dữ liệu sản xuất dev & mà DBA quốc tế đã thiết lập một phiên bản SQL 2000 vì vậy tôi phải tuân theo.
EDIT: Tôi đang sử dụng gói SSIS để điền bảng dàn dựng. Tôi thấy rằng bây giờ tôi phải xem lại gói đó và thực hiện một thành phần kịch bản để xử lý các chuyển đổi. Thanks guys
EDIT: Tôi am làm điều này trên một kỷ lục của cơ sở hồ sơ, không phải là một chèn hàng loạt, vì vậy ý tưởng giao dịch có vẻ như nó sẽ là khả thi nhưng tôi không chắc chắn làm thế nào để bẫy @@ ERROR và cho phép quy trình được lưu trữ tiếp tục.
EDIT: Tôi thực sự thích Guy's approach, tôi sẽ triển khai theo cách này.