Không thể sử dụng các cột văn bản, ntext hoặc hình ảnh trong các bảng 'được chèn' và 'đã xóa'.Cách sử dụng các cột văn bản, ntext hoặc hình ảnh trong các bảng 'đã chèn' và 'đã xóa'
Điều gì sẽ là giải pháp trong trường hợp này? :(
Không thể sử dụng các cột văn bản, ntext hoặc hình ảnh trong các bảng 'được chèn' và 'đã xóa'.Cách sử dụng các cột văn bản, ntext hoặc hình ảnh trong các bảng 'đã chèn' và 'đã xóa'
Điều gì sẽ là giải pháp trong trường hợp này? :(
Tính đến SQL Server 2005, TEXT/NTEXT/IMAGE
đang bị phản đối -. Bạn nên sử dụng các kiểu dữ liệu (N)VARCHAR(MAX)
và VARBINARY(MAX)
thay
(N) VARCHAR (MAX) (xem MSDN docs here) và VARBINARY (MAX) cho phép lên đến 2 Gbyte dữ liệu
Từ các tài liệu MSDN:
nvarchar [(n | max)]
Variable-length Unicode dữ liệu ký tự. n có thể là một giá trị từ 1 đến 4000. tối đa cho biết dung lượng lưu trữ tối đa là 2^31-1 byte. (= 2 GB)
The (N) VARCHAR (MAX) các loại cũng cho phép tất cả các chức năng chuỗi T-SQL bình thường để làm việc trên chúng - một cái gì đó không phải là trường hợp với (N) TEXT ở tất cả .
Như MSDN article shows này, các loại thay thế được hỗ trợ trong trigger, quá:
SQL Server 2008 không cho phép văn bản, ntext, hoặc hình ảnh cột tài liệu tham khảo trong chèn và xóa bảng cho các trình kích hoạt SAU. Tuy nhiên, các loại dữ liệu này chỉ được bao gồm cho mục đích tương thích ngược cho . Việc lưu trữ ưa thích dành cho dữ liệu lớn là sử dụng varchar (max), nvarchar (max) và varbinary (max) dữ liệu loại. Cả hai SAU và thay vì gây hỗ trợ varchar (max), nvarchar (max), và varbinary (max) dữ liệu trong bảng chèn và xóa.
Đây là cách giải quyết:
SQL Trigger cannot do INSTEAD OF DELETE but is required for ntext, image columns
Về cơ bản bạn cần phải tham gia inserted
và/hoặc deleted
giả bảng vào bảng bên dưới và đọc dữ liệu NTEXT
, TEXT
hoặc IMAGE
từ cơ bản những cái bàn.
hi marc, tuy nhiên, tôi hread rằng NVARCHAR MAX chỉ là 4000 ký tự trong unicode ... im không chắc chắn về NTEXT. im làm việc trên năm 2008 và nó seam làm việc tốt – DucDigital
Có, NTEXT vẫn hỗ trợ trong năm 2008 - không chắc chắn về 2008 R2 mặc dù. Nó đang trên đường ra - thay thế nó ngay bây giờ. Sử dụng NVARCHAR (MAX), bạn cũng có thể sử dụng tất cả các hàm chuỗi bình thường trên trường của bạn - bạn không thể làm điều này trên NTEXT trong hầu hết các trường hợp. –
http://sqltips.wordpress.com/2007/05/28/use-varcharmaxnvarcharmax-instead-of-text-ntext/ tôi đã tìm thấy trang này. Cảm ơn bạn marc – DucDigital