2017-01-06 49 views
1

我想要檢索得到的以下查詢的值值:檢索從RESTORE LABELONLY操作

RESTORE LABELONLY FROM DISK = 'C:\folder\db-backup.bak'; 

做一些搜索我試過後:

string connection = @"data source=.\SQLExpress;initial catalog=DB;persist security info=False;user id=sa;password=12356;MultipleActiveResultSets=True;App=EntityFramework"; 
ExecuteSQL(connection , @"RESTORE LABELONLY FROM DISK = 'C:\folder\db-backup.bak'"); 

而且,的ExecuteSQL是:

private void ExecuteSQL(string ConnString, string sqlText) 
    { 
     string result = ""; 
     using (SqlConnection sqlCon = new SqlConnection(ConnString)) 
     { 
      sqlCon.Open(); 
      using (SqlCommand sqlCom = sqlCon.CreateCommand()) 
      { 
       sqlCom.CommandType = CommandType.Text; 
       sqlCom.CommandText = sqlText; 
       sqlCom.CommandTimeout = 0; 
       try 
       { 
        string str = Convert.ToString(sqlCom.ExecuteScalar()); 
       } 
       catch (Exception e) 
       { 
        result = e.Message; 
       } 
      } 
     } 
    } 

但是.. str總是空的!

在SQL Server Management Studio中查詢的結果是:

enter image description here

我要的是我怎麼能檢索MediaSetID場?

回答

2

MSDN說,有關的RESTORE LABELONLY操作:

結果集

結果從RESTORE LABELONLY由單行 此信息的設置。

MediaName nvarchar(128)媒體的名稱。

...

所以,你必須使用ExecuteReader方法和過程,在返回的reader列(或加載到DataTable,做同樣的)。

+0

@Eugebe Podskal非常感謝你的幫助 –

1

您應該使用ExecuteReader()而不是像下面那樣,因爲您的所述命令返回非標量值。你可能得到空字符串導致RESTORE命令的第一列的值是NULL按照您發佈SSMS導致圖像

sqlCom.ExecuteReader()