Sql server 如何获取默认错误消息和自定义错误消息
您好,我使用的是SQL SERVER 2008 R2数据中心版,我有一个存储过程,在这个存储过程中,我使用raiserror发出一条自定义错误消息。是否有一种方法也可以获取sql server的default错误消息。存储过程的代码如下所示Sql server 如何获取默认错误消息和自定义错误消息,sql-server,tsql,stored-procedures,sql-server-2008-r2,Sql Server,Tsql,Stored Procedures,Sql Server 2008 R2,您好,我使用的是SQL SERVER 2008 R2数据中心版,我有一个存储过程,在这个存储过程中,我使用raiserror发出一条自定义错误消息。是否有一种方法也可以获取sql server的default错误消息。存储过程的代码如下所示 CREATE Procedure usp_SomeName @StableName nvarchar(50) = NULL, @StableID INT = NULL OUTPUT, @StableDescription
CREATE Procedure usp_SomeName
@StableName nvarchar(50) = NULL,
@StableID INT = NULL OUTPUT,
@StableDescription ntext = NULL,
@Picture image = NULL,
@ReturnCode int = NULL OUTPUT,
@ReturnMessage nvarchar(100) = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
IF @StableName IS NULL
RAISERROR('Validation Failed: Stable name cannot be null', 16,1)
IF EXISTS (SELECT StableName from dem.TableName
WHERE StableName = @StableName)
RAISERROR('Validation Failed: Stable Name already Exists',16,1)
BEGIN TRANSACTION
INSERT INTO TableName(StableName, [Description], Picture)
VALUES (@StableName, @StableDescription, @Picture)
COMMIT TRANSACTION
SELECT @ReturnCode = 0 , @ReturnMessage = 'Sucess! New Stable Details has added.'
SELECT @StableID = SCOPE_IDENTITY()
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
ROLLBACK TRAN
SELECT @ReturnCode = ERROR_NUMBER(), @ReturnMessage = ERROR_MESSAGE()
SELECT @ReturnCode AS ReturnCode, @ReturnMessage AS ReturnMessage,
ERROR_LINE() AS ErrorLine,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState
END CATCH
SET NOCOUNT OFF;
END
GO
您可以使用try catch,当您引发错误时,批处理将转到catch,然后使用@error\u消息查看错误消息。在SQL Server 2012中,您可以使用THROW()。在那之前,我认为你运气不好……谢谢你的回复。还有一个问题,因为你提到了sql2012,我的公司正在讨论是否升级到SQL 2012,因为“我的老板”听了太多关于SQL 2012问题的故事,你认为他是对的还是他只是想节省一些钱?:)对新版本总是有恐惧和偏执。SQL Server 2012引入了更严格的许可,这可能会提高某些客户的成本,但只要您安装SP1和CU6,就不应该存在任何技术问题。许多人误解了成本问题。它们从每个处理器变为每个核心,但它们将成本降低了4倍(如果你不幸使用AMD,还可以享受更多折扣)。因此,对于那些拥有6+核心处理器的尖端服务器的人来说,这只会变得更加昂贵。对于那些四核的价格与以前差不多。下一次,当你的老板被说服购买许可证时,软件保障也是一件值得研究的事情。他是否期望数据中心版本比其他版本更便宜?