Tôi cần lưu trữ các tệp nhị phân vào Cơ sở dữ liệu SQL Server. Loại Dữ liệu nào tốt hơn ngoài Varbinary và Image?
Câu trả lời:
Vì hình ảnh không được chấp nhận, bạn nên sử dụng varbinary.
mỗi Microsoft (cảm ơn vì liên kết @Christopher)
Các kiểu dữ liệu ntext, văn bản và hình ảnh sẽ bị xóa trong phiên bản Microsoft SQL Server trong tương lai. Tránh sử dụng các loại dữ liệu này trong công việc phát triển mới và lên kế hoạch sửa đổi các ứng dụng hiện đang sử dụng chúng. Thay vào đó hãy sử dụng nvarchar (max), varchar (max) và varbinary (max).
Các kiểu dữ liệu có độ dài thay đổi và cố định để lưu trữ dữ liệu nhị phân và ký tự không phải Unicode và Unicode lớn. Dữ liệu Unicode sử dụng bộ ký tự UNICODE UCS-2.
Ngoài ra còn có một cấu trúc khá phức tạp FileStream
, được giới thiệu trong SQL Server 2008.
FileStream
chỉ là một hành vi lưu trữ. Filestream được thực hiện bằng cách sử dụng varbinary(max)
và thực hiện các thay đổi đối với phiên bản máy chủ sql của bạn.
https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql
hình ảnh
Dữ liệu nhị phân có độ dài thay đổi từ 0 đến 2 ^ 31-1 (2,147,483,647) byte. Nó vẫn được hỗ trợ để sử dụng kiểu dữ liệu hình ảnh, nhưng hãy lưu ý:
https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql
varbinary [(n | max)]
Dữ liệu nhị phân có độ dài thay đổi. n có thể là một giá trị từ 1 đến 8.000. max cho biết rằng kích thước lưu trữ tối đa là 2 ^ 31-1 byte. Kích thước lưu trữ là độ dài thực của dữ liệu được nhập + 2 byte. Dữ liệu được nhập có thể có độ dài 0 byte. Từ đồng nghĩa ANSI SQL cho varbinary là nhị phân khác nhau.
Vì vậy, cả hai đều có kích thước như nhau (2GB). Nhưng hãy lưu ý:
Mặc dù kết thúc của kiểu dữ liệu "hình ảnh" vẫn chưa được xác định, bạn nên sử dụng tương đương bằng chứng "tương lai".
Nhưng bạn phải tự hỏi: tại sao lại lưu trữ BLOBS trong một Cột?