VarBinary vs Image SQL Server Jenis Data untuk Menyimpan Data Biner?

91

Saya perlu menyimpan file biner ke Database SQL Server. Manakah Jenis Data yang lebih baik dari Varbinary dan Image?

Yoann. B
sumber

Jawaban:

143

Karena image sudah tidak digunakan lagi, Anda harus menggunakan varbinary.

per Microsoft (terima kasih untuk tautannya @Christopher)

Tipe data nteks, teks, dan gambar akan dihapus di versi Microsoft SQL Server mendatang. Hindari menggunakan tipe data ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakannya. Gunakan nvarchar (max), varchar (max), dan varbinary (max) sebagai gantinya.

Tipe data tetap dan panjang variabel untuk menyimpan karakter besar non-Unicode dan Unicode serta data biner. Data Unicode menggunakan kumpulan karakter UNICODE UCS-2.

cmsjr
sumber
1
@ cmsjr: mungkin karena seperti yang dikatakan Microsoft: "tipe data gambar akan dihapus di versi Microsoft SQL Server mendatang."
Ehsan
5
@Ehsan Saya hanya bisa berasumsi bahwa Anda tidak terbiasa dengan istilah deprecated. Secara umum, ketika Anda mengatakan sesuatu sudah usang, Anda mengatakan itu tidak boleh digunakan karena akan dihapus di masa mendatang. Jadi posting saya dan kutipan yang Anda posting di komentar Anda pada dasarnya memiliki arti yang sama.
cmsjr
Jangan khawatir, Anda mengemukakan poin yang bagus. Saya akan memperbarui frase.
cmsjr
Saya tidak akan menyebut ini sebagai jawaban "hanya tautan". Saya akan menyebutnya sebagai "jawaban yang ringkas dan benar untuk sebuah pertanyaan yang menyertakan beberapa tautan berguna bagi mereka yang cenderung untuk mempelajari lebih lanjut" jawaban.
cmsjr
2
Saya akan terus terang dan memberi tahu Anda bahwa saya enggan melakukan pengeditan karena Anda mendekatinya dengan nada menyinggung dan mengancam. Mungkin bukan niat Anda untuk bersikap kasar, tetapi tampaknya Anda bersikap begitu terhadap saya. Kekasaran sering kali membuat orang mengabaikan ide-ide bagus. Saya meningkatkan konten seperti yang Anda sarankan, tetapi saya juga akan meminta Anda untuk memikirkan cara menyajikan saran Anda.
cmsjr
14

varbinary(max) adalah cara terbaik (diperkenalkan di SQL Server 2005)

SQLMenace
sumber
9

Ada juga yang agak keren FileStream, diperkenalkan di SQL Server 2008.

Andrew Rollings
sumber
1
spiffy: pintar berpenampilan ?
Liam
1
'agak keren' memiliki arti yang agak lebih umum (daripada hanya 'keren') dalam bahasa sehari-hari ... Paling tepat menurut saya.
Bersyukur
Pertanyaan ini tentang format kolom dan FileStreamhanya perilaku penyimpanan. Filestream diimplementasikan dengan menggunakan varbinary(max)dan membuat perubahan pada instance sql server Anda.
paqogomez
6

https://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql

gambar

Data biner dengan panjang variabel dari 0 hingga 2 ^ 31-1 (2.147.483.647) byte. Masih didukung untuk menggunakan tipe data gambar, tetapi perhatikan:

https://docs.microsoft.com/en-us/sql/t-sql/data-types/binary-and-varbinary-transact-sql

varbinary [(n | max)]

Data biner dengan panjang variabel. n dapat berupa nilai dari 1 hingga 8.000. max menunjukkan bahwa ukuran penyimpanan maksimum adalah 2 ^ 31-1 byte. Ukuran penyimpanan adalah panjang sebenarnya dari data yang dimasukkan + 2 byte. Data yang dimasukkan bisa sepanjang 0 byte. Sinonim ANSI SQL untuk varbinary adalah variasi biner.

Jadi keduanya sama-sama ukurannya (2GB). Namun perhatikan:

https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016#features-not-supported-in-a-future-version- dari-sql-server

Meskipun akhir dari tipe data "gambar" masih belum ditentukan, Anda harus menggunakan padanan pembuktian "masa depan".

Tetapi Anda harus bertanya pada diri sendiri: mengapa menyimpan BLOBS di Kolom?

https://docs.microsoft.com/en-us/sql/relational-databases/blob/compare-options-for-storing-blobs-sql-server

Bernhard
sumber