我想提醒添加到我的日志中的视图的运行插入表时,有执行视图查询错误。当我单独运行视图时,会在SUBSTRING中输入无效的输入(错误的确切写法,我记不起来了)。当我运行它作为我的部分观点 - >表的存储过程,错误被忽略,那么我必须去挖掘问题的行,并在视图的代码的异常省略从结果该行(我知道,这听起来很糟糕,但是我正在从一个专门的Web应用程序中减少巨大的Web日志文件),但我离题了。TSQL错误校验码不工作
我已经试过了试图赶上错误两种不同的方法,并没有以这样的方式被触发插入指示错误的行中我的执行结果表(refresh_results)。我想我可能会错过一些根本性的东西 - 可能错误正在被封装。如果我无法检测到错误,注意错误的唯一方法是,如果有人注意到条目到表的数量少为给定的时间段内。
SELECT @TransactionName = 'tname';
BEGIN TRANSACTION @TransactionName;
BEGIN TRY
print 'tname ***In Try***';
if exists (select name from sysobjects where name='tablename')
begin
drop table tablename;
end
select * into tablename
from opendatasource('SQLNCLI', 'Data Source=DATABASE;UID=####;password=####').dbo.viewname;
COMMIT TRANSACTION @TransactionName;
END TRY
BEGIN CATCH
print 'tablename ***ERROR - check for SUBSTRING***';
begin transaction
set @result_table = 'tablename ***ERROR - check for SUBSTRING***'
select @result_time = getdate(),
@result_rows = count(logtime)
from tablename
insert INTO [dbo].[refresh_results] (result_time, result_table, result_rows)
values (@result_time, @result_table, @result_rows);
commit transaction
ROLLBACK TRANSACTION @TransactionName;
END CATCH
或
if exists (select name from sysobjects where name='tablename')
begin
drop table tablename;
end
select * into tablename
from opendatasource('SQLNCLI', 'Data Source=DATABASE;UID=####;password=####').dbo.viewname;
print '@@error'
print @@error
if @@error <> 0
Begin
print 'tablename ***ERROR - check for SUBSTRING***';
set @result_table = 'tablename ***ERROR - check for SUBSTRING***'
select @result_time = getdate(),
@result_rows = count(logtime)
from tablename
insert INTO [dbo].[refresh_results] (result_time, result_table, result_rows)
values (@result_time, @result_table, @result_rows);
End
供参考:这是习惯张贴样品时纂用户名和密码。 – HABO
亚克西,我节录一切,但那个... :) – MattInSD73