SQL Server SQL语句可以有多少个字符长?

SQL Server SQL语句可以有多少个字符长?,sql,sql-server-2008,Sql,Sql Server 2008,SQL Server中SQL语句的最大长度是多少?此长度是否取决于SQL Server的版本 例如,在 DECLARE @SQLStatement NVARCHAR(MAX) = N'Something' EXEC(@SQLStatement) @SQLStatement的长度允许为X个字符。什么是X?根据数据,它将是网络数据包大小的65536倍 至少自SQL Server 2005以来,这似乎是相同的SQL语句的长度应该尽可能短,同时保持人类的可理解性 由于解析SQL语句并将其编译为DB

SQL Server中SQL语句的最大长度是多少?此长度是否取决于SQL Server的版本

例如,在

DECLARE @SQLStatement NVARCHAR(MAX) = N'Something' 
EXEC(@SQLStatement) 

@SQLStatement
的长度允许为X个字符。什么是X?

根据数据,它将是网络数据包大小的65536倍


至少自SQL Server 2005以来,这似乎是相同的

SQL语句的长度应该尽可能短,同时保持人类的可理解性


由于解析SQL语句并将其编译为DB引擎的实际作业非常快,因此语句的长度对解析器来说并不重要。更重要的是,特别是对于手工构造的SQL语句,未来人类可以维护该语句。

如果变量定义为
NVARCHAR(MAX)
,那么它的大小可以是2GB(请记住,
NVARCHAR
对每个字符使用两个字节,压缩除外)。但是,如果您的SQL语句的长度接近此大小,那么您最不必担心的可能就是SQL语句的长度。

逐字逐句地从:

65536*网络数据包大小

不清楚的是,“网络数据包大小”是什么意思,但任何理智的人都会立即提出疑问


在这种情况下,正如预期的那样,网络数据包大小不是指物理大小,因为这将破坏端到端保证传输流协议(TCP)的抽象,而是指SQL Server用于通信的表格数据流协议上下文中的数据包大小。根据相同的文档,TDS数据包的默认大小是4KB

,这取决于SQL语句是什么。。。或者我不明白这个问题,我假设最大值?不要把上面的评论看得太严肃……人们认为这个问题很愚蠢,于是否决了这个问题,然后微软就不会对SQL语句施加长度限制。。哈问得好,Sohell Farahany。@Evan-是的,这个问题并不完全清楚,所以我想大多数人都不明白他问的是最大查询大小(至少我认为这是他要求的)@EricPetroleje,那么最大查询大小是多少?@Soheil-取决于你的网络数据包大小。对于以太网,1500字节是典型的,这将为您提供大于90MB的最大查询大小。因此,网络数据包的大小可能与以太网数据包的大小无关。根据MSDN文档,它是TDS包的大小(默认大小为4KB,由配置选项控制)。TDS数据包的大小可以大于底层协议中数据包的大小。请看:答案很好,但OP似乎有点语言障碍问题,实际上是想问SQL语句的最大长度是多少。我更新了问题以反映这一点,很抱歉让你看起来很疯狂。这是一个错误的说法。动态生成的查询有很多用例。”“人类的可理解性”是相当主观的,但我们可以假设你的意思在几分钟或更短的时间内就被理解了,这也是不必要的。我认为您的评论可能只考虑静态或接近静态的查询。维修性是一个很好的解释,但是有更多的上下文要考虑。不,不,我知道NVARCHAR(max)是2GB。我的意思是sql编译器,在运行2GB语句时没有任何问题?你试过了吗?同样,如果您的SQL语句接近这个大小,那么IMHO.65536*4096=268435456字节会有更大的问题(如果有人想要实际的数字)