2013-08-20 3 views
2

Мне нужно создать данные для проверки предела типа изображения в SQL Server. Он способен хранить двоичные данные переменной длины от 0 до 2^31-1 (2 147 483 647) байтов. Я использую следующие непосредственно в SQL Server:Создание данных для столбца Image в SQL Server

INSERT INTO Employees (Id, Name, Photo) 
SELECT 10, 'John', BulkColumn FROM Openrowset(Bulk 'E:\photo.jpeg', Single_Blob) as EmployeePicture 

Мой вопрос, как я могу гарантировать, что максимальный размер (2,147,483,647 байт) вставляется в столбец? Я просто нашел изображение размером 2G и вставляю его в столбец? Есть ли другой способ сделать это?

Заранее спасибо.

+2

Почему вы сомневаетесь, что он не может удерживать определенный размер? http://technet.microsoft.com/en-us/library/ms172424.aspx –

+2

Типы текстовых, текстовых и графических данных будут удалены в будущей версии Microsoft SQL Server. Вместо этого вы должны использовать varbinary (max). – bummi

+0

@MitchWheat Это часть требования к граничным испытаниям. – plasticdoor66

ответ

0

Большинство пользователей JPEG полностью игнорируют байты после данных изображения. Следующий код будет обрабатывать достаточное количество байтов, чтобы сделать файл нужного размера. Я протестировал его, и полученное изображение открылось в средстве просмотра изображений Windows, paint.net и Photoshop. Вы должны иметь возможность создавать с ним тестовые файлы ...

long desiredSize = 200000; 
    byte[] buffer = new byte[1]; 
    string filename = @"c:\temp\sample.jpg"; 
    using (var fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite)) 
    { 
     fs.Seek(desiredSize - fs.Length - 1, SeekOrigin.End); 
     fs.Write(buffer, 0, 1); 
     fs.Close(); 
    } 
+0

@plasticdoor - Это работало для вас? Если нет, можете ли вы предоставить дополнительную информацию? – dazedandconfused

Смежные вопросы