Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何修改SQL Server错误消息_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 如何修改SQL Server错误消息

Sql server 如何修改SQL Server错误消息,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我已经在我的计算机上本地启动了SQL Server。现在,我正试图找到一种方法来修改在SSMS中收到的错误消息。您可以尝试捕获。如下所示: SET NOCOUNT ON CREATE TABLE #tmp(TestCol varchar(20)) INSERT INTO #tmp VALUES('test') BEGIN TRY INSERT INTO #tmp VALUES('testtesttesttesttesttest') END TRY BEGIN CATCH D

我已经在我的计算机上本地启动了SQL Server。现在,我正试图找到一种方法来修改在SSMS中收到的错误消息。

您可以尝试捕获。如下所示:

SET NOCOUNT ON

CREATE TABLE #tmp(TestCol varchar(20))
INSERT INTO #tmp VALUES('test')

BEGIN TRY
    INSERT INTO #tmp VALUES('testtesttesttesttesttest')
END TRY
BEGIN CATCH

    DECLARE @nErrorNum INT;

    SELECT  @nErrorNum = ERROR_NUMBER()

    IF @nErrorNum = 8152
    BEGIN
        RAISERROR('String is too long',10,1);
    END
    ELSE
       THROW

END CATCH

您无法修改系统消息,因此无需修改。您可以使用
sp_addmessage
添加新消息,但这也不是很有用,除非您计划本地化。如果需要生成自定义错误,可以在触发器中使用
RAISERROR
THROW
,但我很确定列截断检查在触发器之前,所以这不起作用。最后,如果您不喜欢此特定错误,请不要使用SSMS编辑您的表,而是使用一个可以检查这些内容的自定义前端。错误消息本身的文本可以通过
select*from sys.messages where message_id=8152
找到,但更改它不是一个选项。这是不允许的,即使是这样,想象一下将“字符串或二进制文件将被截断”的每个实例更改为“名称太长”会导致完全的混乱!消息本身就很模糊。如果愿意,请投票表决,这是目前的#1建议。将问题列添加到通用8152消息中是一个长期的SQL Server功能请求。幸运的是,在即将发布的SQL Server和SQL Azure数据库版本中,我们应该可以看到缓解。无论如何,最好的方法是使用匹配的列长度来完全避免错误。