【发布时间】:2015-07-20 18:12:30
【问题描述】:
如果我在这里遗漏了一些东西,我深表歉意,我仍在学习 .NET。
我有一个项目,我一直在做我正在恢复数据库和事务日志的项目。在每个事务日志之后,我都有一个 PRINT 语句来输出事务日志已被处理。
我一直在使用OnInfoMessage 函数从 SQL Server 中完成的操作中获取消息,但只是希望从中提取 PRINT 命令并将其显示在文本框/标签/RichTextBox 中一个随时更新的状态框。
我在 SQL Server 中的过程如下
....
WHILE @@FETCH_STATUS=0
BEGIN
SET @sql = 'RESTORE LOG FCS FROM DISK = ''C:\Databases\'+@fileName +''' WITH NORECOVERY';
EXEC (@sql);
PRINT '===' +@sql;
FETCH NEXT FROM cFile INTO @fileName
END
CLOSE cFile
DEALLOCATE cFile
在 VB.net 中,我能够将所有消息显示在日志文件中。
Private Shared Sub OnInfoMessage(ByVal sender As Object, ByVal e As System.Data.SqlClient.SqlInfoMessageEventArgs)
Using LogFile As IO.StreamWriter = New IO.StreamWriter("C:\SDBT\worklog.ft", True)
LogFile.WriteLine(e.Message)
End Using
End Sub
这反过来又给了我以下输出...
Processed 10392 pages for database 'FCS', file 'FCS' on file 1.
Processed 2 pages for database 'FCS', file 'FCS_log' on file 1.
RESTORE DATABASE successfully processed 10394 pages in 2.652 seconds (30.619 MB/sec).
Processed 0 pages for database 'FCS', file 'FCS' on file 1.
Processed 6 pages for database 'FCS', file 'FCS_log' on file 1.
RESTORE LOG successfully processed 6 pages in 0.061 seconds (0.720 MB/sec).
===RESTORE LOG FCS FROM DISK = 'C:\SDBT_TestDB\log_00001.trn' WITH NORECOVERY
Processed 0 pages for database 'FCS', file 'FCS' on file 1.
Processed 2 pages for database 'FCS', file 'FCS_log' on file 1.
RESTORE LOG successfully processed 2 pages in 0.058 seconds (0.252 MB/sec).
===RESTORE LOG FCS FROM DISK = 'C:\SDBT_TestDB\log_00002.trn' WITH NORECOVERY
理想情况下,我只想检索以“===”开头的行并将其输出给用户。
是否可以将 @sql 变量值从 SQL Server 获取到 VB.net,或者是否有一些我缺少的内置于 .NET 中的东西?
提前致谢!
【问题讨论】:
标签: sql-server vb.net