问题标签 [varcharmax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1052 浏览

sql-server - MS SQL Server EncryptByKey - 字符串或二进制数据将被截断

理论上varchar(max)varbinary(max)列应该能够存储多达 2GB 的数据,但我不能存储 5000 个字符长的 unicode 字符串。

我查看了有关此主题的其他问题,他们都建议检查列大小。我已经这样做了,并看到所有相关列都声明为最大大小。

与类似问题的主要区别在于,在存储时我正在使用加密数据EncryptByKey,我认为这是我正在寻找的瓶颈。从 MSDN 我知道返回类型的EncryptByKey最大大小为 8000 字节,并且不清楚 @cleartext参数的最大大小是多少,但我怀疑它是相同的。

以下代码给了我错误:

[22001][8152] 字符串或二进制数据将被截断。

如何加密和存储大字符串(大约 5k Unicode 字符)?

0 投票
0 回答
828 浏览

sql-server - 将 Oracle CLOB 列转换为 Microsoft SQL varchar max

我的当前项目已被要求将我们现有的 Oracle 数据库转换为 Microsoft SQL 数据库。

我对大多数数据都没有问题,但我遇到了特定列的问题。

我有一个带有 CLOB 列和大约 10,000,000 个条目的表。

我尝试使用更新查询生成脚本:

最后,我生成了大约 100GB 的脚本来执行。

我尝试使用 sqlcmd 执行这​​些脚本:

此解决方案有效,但需要无限时间:5 分钟内仅更新 14 个条目 ==> 大约需要 8 年才能完成。

是否有另一种解决方案可以帮助我将这些 CLOB 值从 Oracle 添加到 Microsoft SQL varchar(max) 列中?

先感谢您。

0 投票
2 回答
1886 浏览

rest - SSMS 和 sp_OAMethod:是否存在大于 VARCHAR(8000) 的数据类型?

通过 SSMS 调用 REST 服务确实不是一个好主意。

顺便说一句,自从微软创建了存储过程 sp_OAMethod甚至 Red Gate 的 Phil Factor向我们展示了如何使用它,我想试一试。

我想将 OpenStreetMap 中的一些数据直接导入 MSSQL,所以我从这里复制了一个很好的查询,并根据我的意愿对其进行了调整。

在此示例中,我将返回Nelson的所有电影院:

很好很简单,我可以在 Postman 和 SSMS 中看到 REST 调用响应:

在此处输入图像描述

当我尝试从奥克兰这样的大城市检索所有电影院时,问题就开始了:

REST 调用正在检索更多数据,而变量@Response AS VARCHAR(8000)无法保存所有数据:

在此处输入图像描述

当然,我尝试使用DECLARE @Response AS VARCHAR(MAX),但这也无济于事。

不应该VARCHAR(MAX)保存65,535 个字符2GB的数据吗?

我应该改用什么?

有没有办法拆分数据并稍后连接?

编辑:我想我越来越近了:我可以以这种方式使用 OPENJSON ,但我仍然不知道如何构造查询......任何帮助将不胜感激

0 投票
4 回答
647 浏览

sql-server - 如何在 VARCHAR(MAX) 中的 SQL Server 中的两个已知字符串之间选择可变长度字符串,其中某些列没有适用的字符串

使用 SQL Server 2012,我需要从这个示例中获取

提取列看起来像:

这段代码让我非常接近我正在寻找的结果,但有时会错误地修剪名称。

我不知道该怎么感谢你才足够!

0 投票
2 回答
1270 浏览

sql-server - 休眠模式验证 | MS SQL varchar(最大值) | 微软 SQL 2008

JPA/Hibernate 和现有的 MS-SQL 2008 数据库存在问题,该数据库具有定义为“varchar(max)”的列的表。

关于 varchar(n|max)附加堆栈线程的 MS Docs - 查看答案

从 MS SQL 2008 Server 复制的列定义: 屏幕截图

hbm2java 生成的实体:

使用的库:

  • Tomcat 8.5

  • 休眠 5.2.17.Final

  • hibernate.validator 6.0.9.Final

  • hibernate.validator.cdi 6.0.9.Final

  • hibernate.jpa.2.1.api 1.0.2.Final

情况1:

本地开发者机器 = OK

测试服务器 (catalina loghost...log) =

Schema-validation:在表 [Log] 的 [FehlerLevel] 列中遇到错误的列类型;找到 [text (Types#LONGVARCHAR)],但期望 [varchar(255) (Types#VARCHAR)]

案例二:

本地开发者机器 = OK

测试服务器 (catalina loghost...log) =

Schema-validation:在表 [Log] 的 [FehlerLevel] 列中遇到错误的列类型;找到 [text (Types#LONGVARCHAR)],但期望 [varchar(255) (Types#VARCHAR)]

案例3:

更改了实体,添加了@Lob

从(如案例2)开始:

本地开发者机器(控制台输出)=

Schema-validation:在表 [Log] 的 [FehlerLevel] 列中遇到错误的列类型;找到 [varchar (Types#VARCHAR)],但期待 [text (Types#CLOB)]

测试服务器 = 好的

__________现在它在测试服务器上运行,但不在我的本地机器上。

案例4:

带有 @Lob 和 2008 方言的实体(如案例 1)::

本地开发者机器 = OK

测试服务器 (catalina loghost...log) =

Schema-validation:在表 [Log] 的 [FehlerLevel] 列中遇到错误的列类型;找到 [text (Types#LONGVARCHAR)],但期待 [varchar(max) (Types#CLOB)]

__________现在它再次在我的本地机器上运行,但又不在 testserver 上

这里发生了什么?

我的问题的解决方案是什么?

所有库都将打包在 war 文件中,并在服务器上的“app\WEB-INF\lib”文件夹中可用。我们的 tomcat 管理员告诉我他们没有限制,所以应用程序可以使用他们自己的库。这意味着我的本地机器和服务器之间应该没有区别。我们已经检查过,两者都使用相同的数据库。

而且......有人可以解释一下模式验证所做的/包含的内容吗?涉及哪些库(hibernate、db-driver 等)?

验证失败时消息的差异:
found [varchar (Types#VARCHAR)] --- local machine - (case 3)
found [text (Types#LONGVARCHAR)] --- testserver - (case 1, 2, 4)

那么为什么会有不同的“发现”呢?从谁那里“找到”这个信息?

0 投票
1 回答
780 浏览

ms-access-2010 - Ms Access 和 SQL Server nvarchar(max) 限制为 4000 个字符

我有一个 Access 2010 应用程序,它有一个链接到 SQL Server 2014 的表。我有一个表Messages,它有几列,其中一列是nvarchar(max).

尝试通过 MS Access 表单将长度超过 4000 个字符的文本保存到该列时,会导致错误(运行时错误 3146,ODBC--调用失败)。

但是,当我通过 SQL Server 中的 T-SQL 将 4000 多个字符的文本插入该列时,它可以正常工作。我试过了varchar(max)nvarchar(max)还是有同样的问题。

0 投票
2 回答
809 浏览

c# - SSIS 脚本组件 DT_TEXT 换行符未正确存储在表中

我需要将在 SSIS 包数据流脚本组件中创建的大文本存储到数据类型为 varchar(max) 的目标列。因此,我将其用作输出列文本流 [DT_TEXT]。在 C# 脚本中,我调用了该方法

所有信息都存储在表中,但不考虑换行符。

我尝试了不同的编码,如 ASCII、UTF8。我也尝试在每一行的末尾添加,\r\n结果没有变化。

结果:

这是第一行。这是第二行。这是第三行。  

线条之间有很大的空间,但不是我期望看到的换行符。

有谁知道如何解决这个问题?

0 投票
0 回答
45 浏览

sql-server - VARCHAR(MAX)不容纳完整的字符串

我有一个varchar(max)定义,但它正在截断字符串。

我已经搜索了解决方案,发现分配或附加到字符串的所有新值都应该转换为,varchar(max)但它仍然没有帮助。

这是我的代码:

你可以看到我已经VARCHAR(MAX)在所有级别上进行了强制转换,只是为了让它工作,但它仍然没有工作。

当我尝试打印字符串的长度时print len(@tr),它返回这个奇怪的数字76788,它甚至不等于 的8000字符VARCHAR(MAX),没有得到这个数字的逻辑。

请帮忙!

0 投票
1 回答
345 浏览

sql - “字符串或二进制数据将被截断。” 对于 NVARCHAR 但不是 LIKE 操作中的 VARCHAR

在 SQL Server 中,nvarchar占用的空间是 的两倍varchar,其页前指针限制为 4000 与varchar的 8000 相比。

那么,为什么下面的like比较会String or binary data would be truncated.出错......

......而铸造成一个更大varchar的不是吗?

事实上,当 top live明确声明其大小限制约为 2GB时,为什么会出现截断错误?nvarchar(max)

0 投票
1 回答
49 浏览

sql-server - MSSQL varchar(max) 50 秒插入一条记录

嗨,我有一个字段表,我需要将文本/json/xml 存储到其中。如果我只插入一条长度约为 20MByte 的记录,则需要大约 50 秒。表是这样定义的

可以做些什么来优化这一点。我希望能即时插入