在此页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'。
答案 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)值。
类型规范
d
或i
:有符号整数o
:无符号八进制s
:String u
:无符号整数x
或X
:无符号十六进制