2011-10-26 34 views
5

Halfway thông qua một dự án SSIS lĩnh vực bảng nhất định thay đổi char(30)-nvarchar(30)SSIS nhận loại cột sai với kết nối OLEDB

Tuy nhiên, khi chạy các gói SSIS, một lỗi nêu cannot convert from unicode to non-unicode xuất hiện. Tôi đang cố chuyển dữ liệu trực tiếp từ nguồn cơ sở dữ liệu đến đích của nó.

Cả hai kết nối đều sử dụng cùng một lược đồ cơ sở dữ liệu, do đó sẽ không có chuyển đổi.

Khi kiểm tra kiểu dữ liệu cột bên ngoài, nó hiển thị D_STR, không còn là trường hợp nữa.

Tôi đã thử xóa cả nguồn và đích với hy vọng rằng nó sẽ xóa mọi loại dữ liệu được lưu trong bộ nhớ cache, nhưng nó không hoạt động.

Bất kỳ ý tưởng nào?

Trả lời

16

Âm thanh với tôi như siêu dữ liệu trong tác vụ luồng dữ liệu của bạn được lưu trong bộ nhớ cache và cần được làm mới để phản ánh loại mới.

Mở nguồn, chuyển đến cột và bỏ chọn cột, sau đó chọn cột. Nhấp vào ok. Siêu dữ liệu sẽ làm mới ngay bây giờ.

+0

Đó là nó. Tôi không thể tìm thấy một cách để thiết lập lại các siêu dữ liệu lưu trữ trong dòng chảy, nhưng điều đó đã làm các trick. Nó là khá xấu để phải làm điều đó mặc dù, kể từ khi người ta phải tái tạo ánh xạ trong các điểm đến: S – cfrag

+1

Hãy suy nghĩ của mỗi cột như một đường ống mà dữ liệu sẽ chảy qua. Vào thời gian thiết kế, bạn đã nói với ssis rằng bạn cần một đường ống có khả năng cho phép 30 byte chảy qua nó. Sau đó, tại thời gian chạy, bạn đã cố gắng nhồi nhét 60 byte thông qua một đường ống 30 byte. Bằng cách bỏ chọn cột, sau đó kiểm tra lại, bạn buộc ssis phải xem lại dữ liệu và thay thế 30 bằng một đường ống 60 byte. – brian

+3

Tôi hiểu nhu cầu về siêu dữ liệu. Những gì tôi không hiểu là thiếu một "refresh cột siêu dữ liệu" nút để buộc rằng "thay đổi kích cỡ". Thay vào đó người ta phải làm lại toàn bộ đường ống. – cfrag

1

nvarchar và nchar là unicode. Ngược lại, varchar và char là non-unicode.

http://msdn.microsoft.com/en-us/library/ms187752.aspx

Kết quả là nếu bạn đang di chuyển dữ liệu từ một kiểu dữ liệu khác bạn sẽ phải thực hiện một số chuyển đổi bổ sung (CAST hoặc CONVERT). Các tùy chọn khác là nhìn vào adapter của bạn như vậy char sẽ sử dụng SSIS DataType của DT-STR và nvarchar sẽ sử dụng SSIS DataType DT-WSTR

http://msdn.microsoft.com/en-us/library/ms141036.aspx

Mà không biết bao gói của bạn làm việc tôi không thể được nhiều hơn nữa cụ thể nhưng hy vọng điều này sẽ giúp bạn đi.

+0

Tôi đã không chuyển đổi dữ liệu. Các gói phần mềm là một đơn giản "chuyển từ bảng A đến bảng B" với các cột chính xác giống nhau trên cả hai bảng. Điều xảy ra là, tại một thời điểm nhất định, cả hai bảng đã thay đổi cột cụ thể đó, nhưng SSIS dường như không nhận thấy nó là – cfrag

Các vấn đề liên quan