zoukankan      html  css  js  c++  java
  • SQL Server 数据库中的几个常见的临界值

    本文出处:http://www.cnblogs.com/wy123/p/6709520.html 

    1,SQL语句或者存储过程的最大长度(SQL字符串容量)是多少?

      经常有人问,我的SQL语句是拼凑出来的,可能很长,如果太长了,是不是SQL Server支持不动了?
      SQL语句的或者存储过程的最大长度是65,536 * Network packet size,那么这个Network packet size是个什么鬼?
      参考如下截图,是网络包的大小,默认是4096个字节,也就是4kb,
      那么默认情况下,SQL语句的最大长度就是65,536 * 4kb = 255.996093MB,接近256MB了,
      因此正常情况下,可以不用顾忌“我的SQL语句太长了,是不是要撑爆SQL Server了”,但这并不代表我就支持以字符串的形式拼凑出来一个很长的SQL语句的做法。

      

      上述配置也可以从配置表中查询

      

    2,Print 关键字可以打印出来的字符串或者变量的最大字节数是8000

      print关键字在print字符串的时候,可以打印出来的字符串的最大长度是8000个字节,如果字符串或者变量的长度超过8000个字节,会被截断,
      这里的8000是字节数,而不是字符数,如果字符串是UNICODE字符,那么打印出来的字符的个数将会是4000,包括肉眼看不到的回车换行。
      因为有人在调试存储过程的时候,发现print出来的东西跟预期的不一致,也不要觉得奇怪!
      如截图,原始字符串的每行都是一样长的,print出来就被截断了,原因就在这里

     3,SELECT语句查询时候,显示在SSMS表格中的最大字符长度

      这个长度的默认设置时65535,也就是说如果是varchar(max)或者nvarchar(max),结果超出65535个字节的,显示的结果是会被截断的,
      但这并不证明查询结果是错误的,仅仅是没有将结果完全显示在SSMS的表格中而已。
      如果有长字段,在复制查询结果的时候要小心,直接复制很有可能复制的是一个残缺的结果。
      不过测试的时候,倒是跟这里的65535有一点差异。

      

    4,varchar(max)和nvarchar(max) varbinary(max)最大支持多大的存储容量

      varchar(max)和nvarchar(max)的最大存储容量都是2^31-1和字节,也就是差一个字节够2GB,
      一本纯文本的TXT电子书才多大,因此大多数情况下不用顾忌说我存储的字符串很长,varchar(max)到底行不行。
      但是nvarchar(max)存储的字符的最大个数要比varchar(max)少一倍,因为nvarchar(max)一个字符占两个字节。要弄清楚存储对象的编码类型。
      测试验证一下最大存储容量的问题

      

    5,CTE递归过程中支持的最大递归次数

      默认情况下最大递归次数是100,可以最大强制递归到32767次
      在默认情况下,比如如下的SQL递归99次,执行起来是没有问题的

      

      如下的SQL语句执行之后就会报错,超出了默认递归的最大次数

      

        如下是通过OPTION (MAXRECURSION 32767)的方式强制递归到最大的32767次

        

    6,SQL Server数据库中时间类型字段的范围

        与数值型的类型类似,时间类型也一样,每种类型都有一定的范围,不是任意一个类型的变量都可以随便赋值的。
      操作时间类型数据的时候,一不小心就出错了,原因是不同的时间类型有不同的取值范围,范围不对的时候也会out-of-range错误

      

      各种时间类型的取值范围以及占用的空间如下

      至于同一种类型,占用空间不同的原因是表示的精度不一样的时候,占用的空间不一样

      

     7,字符型变长字段的长度最大值(非max)的情况下:8000

      varchar(n)或者char(n)中,n的最大值是8000,如果是nvarchar(n)或者nchar(n),则最大值为4000
      一个表中所有的定长的字段长度不能超过8053个字节

    想起来再补充

  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    block的是发送信号的线程,又不是处理槽函数的线程
  • 原文地址:https://www.cnblogs.com/wy123/p/6709520.html
Copyright © 2011-2022 走看看