Tsql 在不插入变量的情况下创建max数据类型

Tsql 在不插入变量的情况下创建max数据类型,tsql,ssms,Tsql,Ssms,我想创建一个最大足够大的数据类型,我希望内存分配给这个新变量,而不需要在其中插入任何东西。我需要它来测试 我在想我可以用 varchar(max) 当然,var代表变量,若并没有插入任何值,那个么它将为我的varchar分配零内存。然后我想只使用charmax,但这似乎不适用于TSQL 有什么建议吗?在BaconBits建议之后,我使用了: char(7000) 似乎7000是tsql中字符的最高定义。允许的最大表行大小为8060字节,您还需要考虑7字节的内部开销 在问题的范围之外: 当我尝

我想创建一个最大足够大的数据类型,我希望内存分配给这个新变量,而不需要在其中插入任何东西。我需要它来测试

我在想我可以用

varchar(max)
当然,var代表变量,若并没有插入任何值,那个么它将为我的varchar分配零内存。然后我想只使用charmax,但这似乎不适用于TSQL


有什么建议吗?

在BaconBits建议之后,我使用了:

char(7000)
似乎7000是tsql中字符的最高定义。允许的最大表行大小为8060字节,您还需要考虑7字节的内部开销

在问题的范围之外:
当我尝试char7001时,它失败了,因为最小行大小为14810,包括7字节的内部开销,所以创建或更改表“myTest”失败。这超出了允许的最大表行大小8060字节。我认为编译器正在做一些它没有告诉我们的事情,因为7001字节加上7字节的开销并不比8060字节大。

char8000是SQL Server中允许使用的字符。但是,行长度限制为8060字节。可变长度字段可以绕过这一点。我不确定固定长度字段是否可以。我从来没有必要测试它。然而,如果你从来没有在充满空白的字段中得到准确的测试,我也不会感到惊讶。SQL Server有很多优化,其中可能包括字符字段的空格技巧。@BaconBits谢谢。我试试看。我有一个SSIS包,当它传输一定数量的列时失败。我认为这与行占用的内存有关。这就是为什么我需要一种简单的方法将特定数量的内存插入表中并测试包。表中还有其他字段吗?这将使其超过8k限制。不过,像CREATETABLE测试字段char8000 NOTNULL这样的东西应该可以正常工作。不知道为什么添加一个字符会使行大小增加这么多。@BaconBits是的,我在表中有另一个字段。它的名字是_char,类型是char1。出于好奇,我删除了name_char,然后尝试将我唯一的专栏改为char6000,这是我第一次使用它。然后我试着把它改成char7000,但没用。然后我试了一下char5000,它成功了。最后我又试了一次char6000,结果出错了。看起来它是动态的,但我不知道它是如何决定的,为什么会这样做那太奇怪了。我想知道这是否与表如何存储在磁盘上有关?也许是吧?老实说,我不知道。大概我想你没见过这样的事吧?没有。公平地说,我从来都不需要这么大的煤焦。我在SQLServer2008R2上用一个char8000字段创建了大约六个临时表,但从未出现过一个错误。我也很困惑,为什么你会收到一个抱怨,当行没有那么长的时候,行大小几乎是14k。我所能想到的就是磁盘与集群的对齐,或者如果您的服务器区域设置不是默认设置,则可能是不同的文本编码。