问题2: ROLLBACK [TRAN[SACTION] [transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable] ]Argumentstransaction_nameIs the name assigned to the transaction on BEGIN TRANSACTION. transaction_name must conform to the rules for identifiers, but only the first 32 characters of the transaction name are used. When nesting transactions, transaction_name must be the name from the outermost BEGIN TRANSACTION statement.@tran_name_variableIs the name of a user-defined variable containing a valid transaction name. The variable must be declared with a char, varchar, nchar, or nvarchar data type.savepoint_nameIs savepoint_name from a SAVE TRANSACTION statement. savepoint_name must conform to the rules for identifiers. Use savepoint_name when a conditional rollback should affect only part of the transaction.@savepoint_variableIs name of a user-defined variable containing a valid savepoint name. The variable must be declared with a char, varchar, nchar, or nvarchar data type. 在可能出错的地方放置回滚点,然后判断@@ERROR来回滚到你需要回滚的地方祝好运啦
这样的一段存储过程: SET XACT_ABORT OFF BEGIN TRAN INSERT INTO Table1... if @@Error<>0 goto Ret INSERT INTO Table2... if @@Error<>0 goto Ret UPDATE Table3 SET.... if @@Error<>0 goto Ret COMMIT TRAN Select "Yes" return Ret: ROLLBACK TRAN Select "No" return如果某条Insert语句出现了错误,我应该得到"No",可是我得不到,在我得程序里(vb.net+Ado.NET )dataadapter.Fill到dataset里得时候却出现异常(用try捕获到的, 也是提示违反××规则)? 按理说,不管是提交还是回滚,我总能得到一个“yes” 或“no”,可怎么会出现异常呢?
--左连的对象浏览器(没有的话按F8)
--对象项中
--右键调试的存储过程
--调试
--输入参数(必须输入所有的参数,包括默认值/输出参数
--点击执行
--出现一个浮动工具条
--上面有单步执行,断点设置等
ROLLBACK [TRAN[SACTION] [transaction_name |
@tran_name_variable | savepoint_name | @savepoint_variable] ]Argumentstransaction_nameIs the name assigned to the transaction on BEGIN TRANSACTION. transaction_name must conform to the rules for identifiers, but only the first 32 characters of the transaction name are used. When nesting transactions, transaction_name must be the name from the outermost BEGIN TRANSACTION statement.@tran_name_variableIs the name of a user-defined variable containing a valid transaction name. The variable must be declared with a char, varchar, nchar, or nvarchar data type.savepoint_nameIs savepoint_name from a SAVE TRANSACTION statement. savepoint_name must conform to the rules for identifiers. Use savepoint_name when a conditional rollback should affect only part of the transaction.@savepoint_variableIs name of a user-defined variable containing a valid savepoint name. The variable must be declared with a char, varchar, nchar, or nvarchar data type.
在可能出错的地方放置回滚点,然后判断@@ERROR来回滚到你需要回滚的地方祝好运啦
开始->程序->MS SQLSERVER->事件探察器(SQL Profiler)-->文件-->新建-->跟踪就可以了。。然后数据库的调用情况就会显示出来查询分析器--工具--选项--在每项上都有一个全部重置的按纽--每项点了它后点应用.记录集会在下面的结果窗口中显示.如果没有显示,要在存储过程中加上显示的语句.
在查询分析器中找到存储过程->右键->调试也可
检查你的存储过程
【问题3:】
exec master..xp_cmdshell '要调用的文件名'
SQL 2000查询分析器
--左连的对象浏览器(没有的话按F8)
--对象项中
--右键调试的存储过程
--调试
--输入参数(必须输入所有的参数,包括默认值/输出参数
--点击执行
--出现一个浮动工具条
--上面有单步执行,断点设置等
可就是不能使用单步执行等,点击调试时出现下面的错误:
---------------------------
SQL 查询分析器
---------------------------
如果您用“本地系统帐户”登录而 SQL Server 配置为作为服务运行,则 SP 调试可能不会正常工作。可以打开 Event Viwer 以查看详细信息。要继续吗?
---------------------------
是(Y) 否(N) 取消
---------------------------另外用sp_cmdshell 的时候我的查询分析器就每响应了
如果您用“本地系统帐户”登录而 SQL Server 配置为作为服务运行,则 SP 调试可能不会正常工作。
则 SP 调试可能不会正常工作。
---------------------------
这句话的意思就是: 要在QA中调试存储过程, SQL Server 的服务
不能以本地系统帐户(SA)的方式启动,要用Administrator的身份登陆.
在 NT/2k 的服务属性里面修改登陆身份.
补充一点:
SQL7 缺省是不支持调试存储过程的,但是Visual Studio的安装盘
里面提供了一个插件,安装完毕后支持在VB/VC中单步调试存储过程.
SET XACT_ABORT OFF
BEGIN TRAN
INSERT INTO Table1...
if @@Error<>0 goto Ret
INSERT INTO Table2...
if @@Error<>0 goto Ret
UPDATE Table3 SET....
if @@Error<>0 goto Ret
COMMIT TRAN
Select "Yes"
return
Ret:
ROLLBACK TRAN
Select "No"
return如果某条Insert语句出现了错误,我应该得到"No",可是我得不到,在我得程序里(vb.net+Ado.NET )dataadapter.Fill到dataset里得时候却出现异常(用try捕获到的, 也是提示违反××规则)?
按理说,不管是提交还是回滚,我总能得到一个“yes” 或“no”,可怎么会出现异常呢?
已经足够调试了