Чтение VARBINARY (MAX) из SQL Server в C#

мне нужно прочитать строку данных из SQL Server 2008. Тип одного из столбцов -VARBINARY(MAX). В C# я хочу использовать параметр out для его чтения (и данный сценарий в основном удовлетворяет потребностям).

но мне нужно указать размер переменной параметра для заполнения переменной C#. Здесь я предполагаю, что 8000 достаточно... Но кто знает:--3-->

database.AddOutParameter(command, "vbCertificate", DbType.Binary, 8000);

поэтому вопросы:

  1. каков размер MAX in number для SQL Server 2008?
  2. это нормально использовать параметр out для этого сценария?

3 ответов


как сказал @marc_s, я просто хочу что-то добавить.

существует два типа данных

бинарные [(n)]

двоичные данные фиксированной длины длиной n байт, где n-значение от 1 до 8000. Размер хранилища-n байт.

тип varbinary [ ( Н | Макс) ]

двоичные данные переменной длины. n может быть значением от 1 до 8000. Макс указывает, что максимальный размер хранилища равен 2^31-1 (равно int.MaxValue т. е. 2,147,483,647) байт. Размер хранилища-это фактическая длина введенных данных + 2 байта. Введенные данные могут иметь длину 0 байт.

Если вы указываете max, то ваша проблема должна быть с varbinary вместо binary


максимальный размер для VARBINARY(MAX) 2 ГБ данных - 2'147'483'648 байт.

в вашем случае, при определении его в C#, я бы рекомендовал использовать int.MaxValue как значение для предоставления.

и да, если вы хотите получить массив байтов обратно из таблицы SQL Server 2008, то вы можете определенно использовать


Я не видел явного размера нигде для Макса. Вы пробовали выполнить это с помощью DbType.Объект? Это определено в msdn как общий тип для любого типа, не определенного явно. Я попробую и посмотрю, сработает или нет. В противном случае я бы, вероятно, придерживался DbType.Двоичный, как вы выбрали.