【问题标题】:Permissions for Large Variables to Be Sent Via Stored Procedures (SQL Server)通过存储过程发送大型变量的权限 (SQL Server)
【发布时间】:2010-04-19 16:58:48
【问题描述】:

我想不出一种方法来允许通过调用存储过程一次接收超过 4000 个字节。我将图像存储在表格中,每个图像大约 15 - 20 KB,但是在获取它们并将它们显示到页面后,它们的大小始终为 3.91 KB(或 4000 字节)。

存储过程对一次可以发送多少数据有限制吗?我仔细检查了我的数据,我确实只收到了来自 varbinary(MAX) 字段的前 4000 个字符。

是否有允许一次超过 4k 字节的权限设置?

【问题讨论】:

    标签: php sql-server stored-procedures types varbinary


    【解决方案1】:

    你应该阅读Using Large-Value Data Types

    最大说明符扩展存储 varchar、nvarchar 的功能, 和 varbinary 数据类型。 varchar(max)、nvarchar(max) 和 varbinary(max) 统称为 大值数据类型。您可以使用 要存储的大值数据类型 到 2^31-1 字节的数据。

    大值数据类型类似 在行为上对他们的小 对应的,varchar,nvarchar 和 varbinary。

    如果您不能传递超过 4000 个字节,我会检查您的客户端应用程序,看看它是否限制或截断了您的数据。 SQL Server 一次可以占用超过 4000 个字节。

    编辑刚刚发现:

    EXECUTE (Transact-SQL)

    对字符串使用 EXECUTE

    在早期版本的 SQL Server 中, 字符串限制为 8,000 字节。这需要串联 用于动态执行的大字符串。 在 SQL Server 中,varchar(max) 和 nvarchar(max) 数据类型可以是 指定允许字符 字符串最大为 2 GB 数据。

    【讨论】:

    • 显示的图像是 4000 字节,但我认为 SP 实际上是 8,000 字节。我认为当以十六进制形式从数据库中提取它然后将其转换为图像时,我会丢失一半的字节,所以这更有意义。
    【解决方案2】:

    您需要使用不同的代码来访问 SQL Server 中的 BLOB。示例here

    【讨论】:

    • 我的班次马上就要结束了,所以明天早上我会检查一下,看看是否有帮助。我还应该提到我正在使用 PHP 来访问数据库。
    • 那么这篇文章可能对你没用,因为示例是针对 ado.net 的。查看访问 BLOB 以了解您访问数据的特定方法。
    【解决方案3】:

    在 SQL Server 2005 中有一种称为“图像”的数据类型。您应该使用该数据类型来存储大型二进制对象,尤其是图像。

    【讨论】:

    • ntext、text 和 image 数据类型将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。 改用 nvarchar(max)、varchar(max) 和 varbinary(max)。用于存储大型非 Unicode 和 Unicode 字符和二进制数据的固定和可变长度数据类型。 Unicode 数据使用 UNICODE UCS-2 字符集。 msdn.microsoft.com/en-us/library/ms187993.aspx
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多