Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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的Debug.Assert_Sql Server_Sql Server 2005_Debugging - Fatal编程技术网

Sql server 相当于SQL Server的Debug.Assert

Sql server 相当于SQL Server的Debug.Assert,sql-server,sql-server-2005,debugging,Sql Server,Sql Server 2005,Debugging,我正在修改大量SQLServer2005脚本,以将我们的两个数据库合并在一起。脚本从一个.cmd文件运行,该文件调用sqlcmd以按顺序运行脚本。但是,我遇到了一两个脚本失败的问题 我想要一个快速的方法来查看一些脚本出错的状态——检查变量值,一些查询的结果,诸如此类的东西 如果我在.NET程序集上遇到这个问题,我会使用Debug.Assert来扩充代码,或者在我知道会发生故障的地方设置断点,这将暂停程序执行并允许我签出变量值 我想知道,SQL Server 2005中是否有类似的版本?我使用批处

我正在修改大量SQLServer2005脚本,以将我们的两个数据库合并在一起。脚本从一个.cmd文件运行,该文件调用sqlcmd以按顺序运行脚本。但是,我遇到了一两个脚本失败的问题

我想要一个快速的方法来查看一些脚本出错的状态——检查变量值,一些查询的结果,诸如此类的东西

如果我在.NET程序集上遇到这个问题,我会使用Debug.Assert来扩充代码,或者在我知道会发生故障的地方设置断点,这将暂停程序执行并允许我签出变量值


我想知道,SQL Server 2005中是否有类似的版本?

我使用批处理文件并检查如下错误代码:-

SQLCMD.EXE -b -l 30 -E -S <SERVER> -i "<SQLFILE>.sql">>"%LOG_FILE%"2>&1

IF ERRORLEVEL 1 (
    ECHO. Failed.
) ELSE (
    ECHO. Succeeded.
)

我从来没有设法使集成调试与SQL Server一起很好地工作过——我通常使用printf调试,使用or语句。RAISERROR可以执行一些基本的参数格式设置,将值吐出到messages窗口。例如,如果您有一个int类型的参数@Val1,您可以执行以下操作:

RAISERROR('Val1 = %i',10,1,@Val1) WITH NOWAIT
WITH NOWAIT选项使消息立即显示,而不是缓冲消息/输出的常规SQL行为。这将起作用:

-- Assert procedure equivalent to other languages.
-- raiserror() will cause sql execution to stop and throw execep in C# code that is running this statement.
-- Usage:
-- declare @shouldBeTrue bit
-- set @shouldBeTrue = case when 1=0 then 1 else 0 end
-- exec _AT3Assert @shouldBeTrue, 'failed'
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = '_AT3Assert' AND ROUTINE_SCHEMA = 'dbo' AND ROUTINE_TYPE = 'PROCEDURE')
 EXEC ('DROP PROCEDURE dbo._AT3Assert')
 GO
create procedure dbo._AT3Assert
    @shouldBeTrue bit,      
    @errorMsg nvarchar (max)
AS
    SET NOCOUNT ON;
    if @shouldBeTrue is null or @shouldBeTrue <> 1
    begin
        raiserror (@errorMsg, -- Message text.
               11, -- Severity.
               1 -- State.
               );
    end
GO

为什么要把钱放在一个执行官身上?