SQL Server异常消息格式

时间:2015-03-26 10:45:08

标签: sql-server-2012

在此页Sql Server Errors 1-999上有一个SQL Server错误列表和相关的消息文本。

例如:

  

错误2627:违反%ls约束'%。* ls'。无法插入重复   密钥对象'%。* ls'。

此例外的一个例子是:

  

违反UNIQUE KEY约束   ' AK_AdvanceShipmentNotices_CustomerId_PurchaseOrderNumber&#39 ;.不能   在对象中插入重复键> dbo.AdvanceShipmentNotices'。该   重复键值为(4,1000)。

示例错误文本包含占位符:%ls和%。* ls。查看其余的错误示例,还有许多其他占位符,例如%d,%s,%S_DATE,%hs,%S_TS,%x等。

问题:这些占位符是在任何地方定义的,还是我只需要自己解决它们的意思?

其他示例错误:

  • 错误21:警告:%S_DATE发生致命错误%d。请注意错误和时间,并与系统管理员联系。

  • Err 103:以'%。* ls'开头的%S_MSG太长。最大长度为%d。

  • Err 262:%ls许可在数据库中被拒绝'%。* ls'。

  • Err 407:内部错误。文件%hs中的字符串例程,行%d因HRESULT 0x%x而失败。

  • Err 408:在ORDER BY列表中遇到一个常量表达式,位置为%i。

  • 错误479:无效的ROWS值或REPEATABLE种子"%I64d"表格#34;%。* ls"的TABLESAMPLE子句中。值或种子必须大于0.

  • 错误532:时间戳(更改为%S_TS)显示该行已被其他用户更新。

  • Err 552:CryptoAPI功能'%ls'失败。错误0x%x:%ls

  • Err 2627:违反%ls约束'%。* ls'。无法在对象'%。* ls'。

  • 中插入重复的密钥

1 个答案:

答案 0 :(得分:2)

T-SQL RAISERROR函数的文档提供了更多信息:

  

msg_str是一个带有可选嵌入式转换规范的字符串。每个转换规范定义如何格式化参数列表中的值并将其放入msg_str中转换规范位置的字段中。转换规范具有以下格式:

     

%[[flag] [width] [。精度] [{h | l}]]输入

标志

  

是用于确定替换值的间距和对齐的代码。

代码:

  • -:左对齐给定字段宽度内的参数值。
  • +:如果值是有符号类型,则在参数值前加上加号(+)或减号( - )。
  • 0:在输出前加零,直到达到最小宽度。当出现0和减号( - )时,忽略0。
  • #:当与o,x或X格式一起使用时,数字符号(#)标志分别以0,0x或0X为前缀任何非零值。当d,i或u以数字符号(#)标志开头时,该标志将被忽略。
  • (空白):如果值已签名且为正,则在输出值前加空格。包含加号(+)标志时会忽略此项。

宽度

  

是一个整数,用于定义参数值所在的字段的最小宽度。如果参数值的长度等于或大于width,则打印的值不带填充。如果该值小于width,则将该值填充为width指定的长度。   星号(*)表示宽度由参数列表中的关联参数指定,该参数必须是整数值。

精度

  

是从字符串值的参数值中获取的最大字符数。例如,如果字符串有五个字符且精度为3,则仅使用字符串值的前三个字符。   对于整数值,precision是打印的最小位数。   星号(*)表示精度由参数列表中的关联参数指定,该参数必须是整数值。

{h | l}输入

  

与字符类型d,i,o,s,x,X或u一起使用,并创建shortint(h)或longint(l)值。

类型规范

  • di:有符号整数
  • o:无符号八进制
  • s:String
  • u:无符号整数
  • xX:无符号十六进制

https://msdn.microsoft.com/en-us/library/ms178592.aspx