首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中引发错误连接

在Server中引发错误连接
EN

Database Administration用户
提问于 2019-10-11 20:02:25
回答 1查看 1.2K关注 0票数 3

步骤1:我在sys.messages中创建了一个自定义错误消息

代码语言:javascript
复制
EXEC sp_addmessage   
    @msgnum = 50001,   
    @severity = 10,  
    @msgtext =   
        N'Error 50001, severity 10, state 1 was raised, Please check mdf file.' ,  
    @lang = 'us_english',
    @replace='REPLACE';

步骤2:在作业内部,当满足条件时,我正在提高错误

代码语言:javascript
复制
RAISERROR(50001, 10,1,@freespacePct, @dbname,@drive) with LOG;

我希望在错误消息中看到FreespacePCt、数据库名和驱动器详细信息。

但是,当我看到引起的错误时,我只是看到了我在sp_addmessage中声明的内容。我如何记录其他细节?

我看到的信息:

错误50001,严重性10,状态1被引发,请检查mdf文件。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-10-11 20:25:19

您需要向@msgtext添加一些参数,以便Server知道您将数据放在何处。差不多是这样的:

代码语言:javascript
复制
EXEC sp_addmessage   
    @msgnum = 50001,   
    @severity = 10,  
    @msgtext =   
        N'Error 50001, severity 10, state 1 was raised, Please check mdf file. The freespace is %d percent for %s residing on %s' ,  
    @lang = 'us_english',
    @replace='REPLACE';

然后,你会把它.

代码语言:javascript
复制
declare @freespacePct int = 45
        ,@dbname sysname = 'MYDB'
        ,@drive varchar(16) = 'F:/'
RAISERROR(50001, 10,1,@freespacePct, @dbname,@drive) with LOG;

这将返回:

错误50001,严重性10,状态1被引发,请检查mdf文件。对于居住在F:/

%s用于字符串,%d用于有符号整数。您可以在RAISERROR 文档中找到所有类型规范。

代码语言:javascript
复制
Type specification  Represents
d or i              Signed integer
o                   Unsigned octal
s                   String
u                   Unsigned integer
x or X              Unsigned hexadecimal

这些类型规范基于C标准库中最初为printf函数定义的规范。RAISERROR消息字符串中使用的类型规范映射为Transact-SQL数据类型,而printf中使用的规范映射为C语言数据类型。当Transact-SQL没有类似于关联的C数据类型的数据类型时,RAISERROR不支持printf中使用的类型规范。例如,RAISERROR不支持指针的%p规范,因为Transact-SQL没有指针数据类型。

票数 6
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/250881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档