Sql server 在SQL Server中为映像列创建数据

Sql server 在SQL Server中为映像列创建数据,sql-server,types,Sql Server,Types,我需要创建数据来测试SQL Server中图像数据类型的限制。它能够保存从0到2^31-1(2147483647)字节的可变长度二进制数据。我直接在SQL Server中使用以下内容: INSERT INTO Employees (Id, Name, Photo) SELECT 10, 'John', BulkColumn FROM Openrowset( Bulk 'E:\photo.jpeg', Single_Blob) as EmployeePicture 我的问题是,如何确保将最大大

我需要创建数据来测试SQL Server中图像数据类型的限制。它能够保存从0到2^31-1(2147483647)字节的可变长度二进制数据。我直接在SQL Server中使用以下内容:

INSERT INTO Employees (Id, Name, Photo) 
SELECT 10, 'John', BulkColumn FROM Openrowset( Bulk 'E:\photo.jpeg', Single_Blob) as EmployeePicture
我的问题是,如何确保将最大大小(2147483647字节)插入到列中?我是否只需找到一个大小为2G的图像并将其插入到列中?还有别的办法吗


提前感谢。

大多数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();
    }

为什么您怀疑它不能保持定义的大小?在未来版本的Microsoft SQL Server中,将删除ntext、text和image数据类型。您应该改用varbinary(max)。@MitchWheat这是边界测试要求的一部分。@plasticdoor66:如果不起作用,我认为Microsoft不会在文档中说2GB-1。您建议的是测试SQL Server,而不是您的代码或流程。这不是一个有用或现实的方法check@gbn-我一直在努力想如何准确表达这一点。我想在大小检查之后,OP可以继续检查此列中是否可以容纳每个高达2GB的有效文件,这需要一些时间。@plasticdoor-这对您有用吗?如果没有,你能提供更多信息吗?