Sql server 2012 SQL Server异常消息格式

Sql server 2012 SQL Server异常消息格式,sql-server-2012,Sql Server 2012,在此页面上有SQL Server错误和相关消息文本的列表 例如: 错误2627:违反了%ls约束'%1!'。无法插入重复项 对象'%1!'中的键 这种例外情况的一个例子是: 违反唯一密钥约束 “AK_AdvanceShipmentNotices_CustomerId_PurchaseOrderNumber”。不能 在对象“dbo.AdvanceShipmentNotices”中插入重复密钥。这个 重复的键值为(41000) 示例错误文本包含占位符:%ls和%.*ls。查看其余的错误示例,还有许多

在此页面上有SQL Server错误和相关消息文本的列表

例如:

错误2627:违反了%ls约束'%1!'。无法插入重复项 对象'%1!'中的键

这种例外情况的一个例子是:

违反唯一密钥约束 “AK_AdvanceShipmentNotices_CustomerId_PurchaseOrderNumber”。不能 在对象“dbo.AdvanceShipmentNotices”中插入重复密钥。这个 重复的键值为(41000)

示例错误文本包含占位符:%ls和%.*ls。查看其余的错误示例,还有许多其他占位符,例如%d、%s、%s\u日期、%hs、%s\t、%x等

问题:这些占位符是在任何地方定义的,还是我只需要自己弄清楚它们都是什么意思

其他示例错误:

  • 错误21:警告:在%S\u日期发生致命错误%d。请记下错误和时间,并与系统管理员联系

  • 错误103:以'%1!'开头的%1!'消息太长。最大长度为%d

  • 错误262:%ls在数据库'%1!'中的权限被拒绝

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

  • 错误408:在ORDER BY列表的位置%i中遇到常量表达式

  • 错误479:表“%ls”的TABLESAMPLE子句中的行值或可重复种子“%I64d”无效。值或种子必须大于0

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

  • 错误552:CryptoAPI函数“%ls”失败。错误0x%x:%ls

  • 错误2627:违反了%ls约束'%1!'。无法在对象'%1!'中插入重复的键


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

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

%[[flag][width][.precision][{h|l}]]类型

确定替换值的间距和对齐方式的代码

代码:

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

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

精密度

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

{h|l}型

与字符类型d、i、o、s、x、x或u一起使用,并创建短整型(h)或长整型(l)值

类型规格

  • d
    i
    :带符号整数
  • o
    :无符号八进制
  • s
    :字符串
  • u
    :无符号整数
  • x
    x
    :无符号十六进制

谢谢。这正是我想要的。(对于''%1!''的含义,我仍然有点困惑。根据文档,'*'表示精度是由参数列表中的关联参数指定的,它必须是整数值)。在上面的示例中,它不是。另外,'1'表示'longint'-这如何应用于's',字符串?)。不管怎样,我想我已经得到我需要的了。再次感谢!