SQL 服务器存储过程的打印问题
Print issue of the SQL Server stored procedure
我有一个问题,如果从链接服务器调用存储过程,我将收到反向序列消息。如果有人知道根本原因或提供解决方案,我将不胜感激。提前致谢。
这是我的测试代码:
CREATE PROCEDURE [dbo].[TestSP]
AS
BEGIN
SET NOCOUNT ON;
PRINT '1'
PRINT '2'
PRINT '3'
END
这样称呼它:
EXEC [dbo].[TestSP] (call by local)
输出:
1
2
3
如果由另一个链接服务器执行,它将以相反的顺序显示输出。
例如,
EXEC [XXX.XXX.XXX.XXX].[dbo].[TestSP]
输出:
3
2
1
Print 是调试命令,不是功能命令。如果你想有一个一致的顺序顺序,你必须在第10级使用关键字NOWAIT的RAISERROR。
CREATE PROCEDURE [dbo].[TestSP]
AS
BEGIN
SET NOCOUNT ON;
RAISERROR('1', 10, 1) WITH NOWAIT;
RAISERROR('2', 10, 1) WITH NOWAIT;
RAISERROR('3', 10, 1) WITH NOWAIT;
END
我有一个问题,如果从链接服务器调用存储过程,我将收到反向序列消息。如果有人知道根本原因或提供解决方案,我将不胜感激。提前致谢。
这是我的测试代码:
CREATE PROCEDURE [dbo].[TestSP]
AS
BEGIN
SET NOCOUNT ON;
PRINT '1'
PRINT '2'
PRINT '3'
END
这样称呼它:
EXEC [dbo].[TestSP] (call by local)
输出:
1
2
3
如果由另一个链接服务器执行,它将以相反的顺序显示输出。
例如,
EXEC [XXX.XXX.XXX.XXX].[dbo].[TestSP]
输出:
3
2
1
Print 是调试命令,不是功能命令。如果你想有一个一致的顺序顺序,你必须在第10级使用关键字NOWAIT的RAISERROR。
CREATE PROCEDURE [dbo].[TestSP]
AS
BEGIN
SET NOCOUNT ON;
RAISERROR('1', 10, 1) WITH NOWAIT;
RAISERROR('2', 10, 1) WITH NOWAIT;
RAISERROR('3', 10, 1) WITH NOWAIT;
END