2009-11-04 4 views
2

Я пытаюсь выполнить DBCC CHECK DB ('MyDB) с помощью ADO.Net, но как я могу получить текст, возвращаемый командой?Выполнение команды DBCC из ADO.Net

Я попытался следующие:

SqlCommand sqlCom = new SqlCommand("DBCC CHECKDB ('MyDB')", sqlCon); 
SqlParameter output = new SqlParameter(); 
output.Direction = System.Data.ParameterDirection.ReturnValue; 
sqlCom.Parameters.Add(output); 
int result = sqlCom.ExecuteNonQuery(); 
Console.WriteLine(output.Value); 

Но значение выходного параметра пусто.

ответ

2

Возможно, это может вам помочь: http://mspowershell.blogspot.com/2008/01/dbcc-check-through-adonetps.html.

EDIT: Ссылка получит вас на блоге, который содержит следующий сценарий:

$ScriptName = $myInvocation.MyCommand.Name 
[void][reflection.assembly]::LoadWithPartialName("System.Data.SqlClient") 
$ConnString = "Server=Servername\Instance;Integrated Security=SSPI;Database=DatabaseName;Application Name=$ScriptName" 
$MasterConn = new-object ('System.Data.SqlClient.SqlConnection') $ConnString 
$MasterCmd = new-object System.Data.SqlClient.SqlCommand 
$MasterCmd.Connection = $MasterConn 
$SqlDBCC = "DBCC CHECKDB(master) WITH TABLERESULTS" 
$MasterCmd.CommandText = $SqlDBCC 
$MasterConn.Open() 
$Rset = $MasterCmd.ExecuteReader() 
If ($Rset.HasRows -eq $true) { 
    While ($Rset.Read()) { 
     $line = $Rset["MessageText"] 
     If ($Rset["Level"] -gt 10) { 
      Write-Host $line -backgroundcolor Yellow -foregroundcolor Red 
     } else { 
      Write-Host $line 
     } 
    } 
    $Rset.Close() 
} 
$MasterConn.Close() 
+0

Спасибо, «С TABLERESULTS» ​​вся разница. – jaffa

+0

Это ответ «только для ссылок». Пожалуйста, добавьте важную часть к вашему ответу. Ссылки могут быстро сломаться ... –

+0

@StefanSteinegger Согласен! – Konamiman

Смежные вопросы