Tôi đang làm việc này
SELECT * INTO table1 FROM Table0
Tôi nhận được một tràn số học trên cột datetime (lỗi chuyển đổi thành smalldatetime), tuy nhiên lược đồ đích được tạo có cột datetime chứ không phải cột smalldatetime ..
Tôi đang làm việc này
SELECT * INTO table1 FROM Table0
Tôi nhận được một tràn số học trên cột datetime (lỗi chuyển đổi thành smalldatetime), tuy nhiên lược đồ đích được tạo có cột datetime chứ không phải cột smalldatetime ..
Câu trả lời:
Tôi nghe có vẻ như bạn có một chuyển đổi ngầm định thành thời gian nhỏ, có thể trong một cột được tính toán. Nếu bạn nhìn vào Kế hoạch thực hiện ước tính, có thể bạn sẽ thấy các phép tính vô hướng tính toán trong đó. Nhấn F4 để xem các thuộc tính và bạn sẽ có thể thấy các tính toán đang được thực hiện, bao gồm mọi chuyển đổi ngầm đang được sử dụng.
Loại vấn đề này luôn là dấu hiệu của tham nhũng và có thể dễ dàng được gỡ lỗi với
DBCC CHECKTABLE(<tablename>) WITH DATA_PURITY;
DATA_PURITY
Gây ra KIỂM TRA DBCC để kiểm tra bảng cho các giá trị cột không hợp lệ hoặc nằm ngoài phạm vi. Ví dụ: DBCC CHECKTABLE phát hiện các cột có giá trị ngày và thời gian lớn hơn hoặc nhỏ hơn phạm vi chấp nhận được đối với loại dữ liệu thời gian; hoặc các cột kiểu dữ liệu thập phân hoặc gần đúng số với các giá trị tỷ lệ hoặc độ chính xác không hợp lệ.
CREATE TABLE T(Id int, X AS CAST('Fish' AS INT));INSERT INTO T DEFAULT VALUES;SELECT * INTO #T FROM T;DBCC CHECKTABLE(T) WITH DATA_PURITY;
SELECT *:) alter table t add [Thou Shall Not Use *] AS 1/0;.