当前位置: 首页 > news >正文

SQL Server 数据库中的几个常见的临界值

SQL Server 数据库中的几个常见的临界值
原文: 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错误

  

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

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

  

 

想起来再补充

 

posted on 2017-09-11 09:22 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/7503422.html

相关文章:

  • A Research Problem UVA - 10837 欧拉函数逆应用
  • 洛谷P2344 奶牛抗议
  • python归档:笔记转化
  • 理解JS中的call、apply、bind方法
  • Number Math
  • 初学JAVA的变量作用域
  • Inno Setup自定义安装界面脚本
  • Spring AOP简单的配置(注解和xml配置)
  • Swift,枚举
  • java操作Excel
  • 'NoneType' object is not iterable
  • AngularJS
  • C++ 清空队列(queue)的几种方法
  • MIME 类型(HttpContext.Response.ContentType)列表
  • 从微信官方获取微信公众号名片:https://open.weixin.qq.com/qr/code?username=haihongruanjian...
  • 【Linux系统编程】快速查找errno错误码信息
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • CentOS7 安装JDK
  • EventListener原理
  • gcc介绍及安装
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Linux CTF 逆向入门
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 动态魔术使用DBMS_SQL
  • 七牛云假注销小指南
  • 前端
  • 前端技术周刊 2019-02-11 Serverless
  • 前嗅ForeSpider教程:创建模板
  • 如何优雅地使用 Sublime Text
  • 使用agvtool更改app version/build
  • 网络应用优化——时延与带宽
  • 协程
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 国内开源镜像站点
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • # Maven错误Error executing Maven
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (4)STL算法之比较
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言)二分查找 超详细
  • (二)丶RabbitMQ的六大核心
  • ... 是什么 ?... 有什么用处?
  • .gitignore文件设置了忽略但不生效
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 反射 Reflect
  • .Net 知识杂记
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .Net多线程总结
  • .net分布式压力测试工具(Beetle.DT)
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @PreAuthorize注解
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解