Sql server 迁移后问题(SQL Server 2008至2016)

Sql server 迁移后问题(SQL Server 2008至2016),sql-server,sql-server-2008,tsql,sql-server-2016,Sql Server,Sql Server 2008,Tsql,Sql Server 2016,我们已将SQL Serer 2008数据库迁移到SQL Server 2016,该数据库现在处于脱机状态,无法访问。这个错误开始出现 引发了错误51001,严重性16,状态1,但在sys.messages中未找到具有该错误号的消息。如果错误大于50000,请确保使用sp_addmessage添加用户定义的消息 因此,我不知道原始DBA或开发人员是否在旧版本中添加了自定义消息。如果自定义错误存储在用户定义的表中,而不是存储在sys.messages中,那么“2008”版本是否可以原谅此错误?如果出

我们已将SQL Serer 2008数据库迁移到SQL Server 2016,该数据库现在处于脱机状态,无法访问。这个错误开始出现

引发了错误51001,严重性16,状态1,但在sys.messages中未找到具有该错误号的消息。如果错误大于50000,请确保使用sp_addmessage添加用户定义的消息

因此,我不知道原始DBA或开发人员是否在旧版本中添加了自定义消息。如果自定义错误存储在用户定义的表中,而不是存储在sys.messages中,那么“2008”版本是否可以原谅此错误?如果出现异常,则会查询此表并使用自定义消息。我希望我能说清楚

在这里的代码,错误发生在kine与此代码

SET @XML = (SELECT [dbo].[fn_BuildXMLBody](@XML, @sErrMsg, @ID,'5100100401001'))



CREATE PROCEDURE [dbo].[sp_ESI_AddLanguageTypeDev]
@vLang      VARCHAR(2)  --Required Parameter

AS
BEGIN

SET NOCOUNT ON

DECLARE 
@iRetVal    INT,
@sProcName  VARCHAR(100),
@sErrMsg    VARCHAR(500),
@iCount INT,
@vErr       VARCHAR(5)  --Indicates if errors have occurred.

DECLARE 
@XML        varchar(7960),  
@XMLHeader  VARCHAR(20),
@XMLFooter  VARCHAR(20),
@ID     int

DECLARE @intEq_ID INT 

SET @XMLHeader = (SELECT [dbo].[fn_BuildXMLHeader]())
SET @ID = '51001'
SET @sProcName = 'sp_ESI_AddLanguageType'

SET @vErr = 'False'
SET @vLang = RTRIM(LTRIM(@vLang))

IF exists (SELECT Lang
        FROM    dbo.Language
        WHERE Lang = @vLang)
    BEGIN
        SET @vErr = 'True'
        SET @sErrMsg = (SELECT [dbo].[fn_GetValidationErrorMessage]('5100100401001'))   
        SET @XML = (SELECT [dbo].[fn_BuildXMLBody](@XML, @sErrMsg, @ID,'5100100401001'))
    END
ELSE
    BEGIN
        INSERT INTO dbo.Language(
                Lang )
        VALUES(@vLang)

        SELECT @intEq_ID = (SELECT IDENT_CURRENT('dbo.Language'))

        IF @@ERROR <> 0 
            BEGIN
                SET @vErr = 'True'
                SET @sErrMsg = (SELECT [dbo].[fn_GetValidationErrorMessage]('5100100404001'))   
                SET @XML = (SELECT [dbo].[fn_BuildXMLBody](@XML, @sErrMsg, @ID,'5100100404001'))
            END
    END

IF @vErr = 'True'
    BEGIN
        SET @XMLFooter = (SELECT [dbo].[fn_BuildXMLFooter]())   
        SET @XML = (@XMLHeader + @XML + @XMLFooter)
        -- output the xml as a single parameter
        SELECT @XML = LTRIM(RTRIM(@XML))
        --RAISERROR @ID @XML
        RAISERROR (@ID,
        16, 1, @XML);
        RETURN -1
    END
ELSE    
    BEGIN
        SELECT @intEq_ID as RETURN_CODE
        RETURN @intEq_ID
        RETURN 0
    END
 END
 GO

您是否需要检索2008年的实际自定义错误消息?为什么不使用sp_addmessage添加一个新的呢?我们可以这样做,我只是想知道SQL2016中是否有系统更改导致这突然成为一个问题。我们在“2008”中没有关于这是一个问题的报告。@Risho此功能没有变化。它在旧系统中工作,因为有人将消息添加到服务器实例中,而您的迁移过程没有这样做。