从RESTORE LABELONLY操作中检索值

时间:2017-01-06 12:19:45

标签: c# sql sql-server sql-server-2012

我想检索以下查询的结果值:

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;
                }
            }
        }
    }

但是......总是空的!

SQL Server Management Studio中的查询结果为:

enter image description here

我想要的是如何检索MediaSetID字段?

2 个答案:

答案 0 :(得分:2)

MSDN说明了RESTORE LABELONLY操作:

  

结果集

     

RESTORE LABELONLY的结果集由一行组成   这个信息。

     

MediaName nvarchar(128)媒体名称。

...

因此,您必须使用ExecuteReader方法并处理返回的reader中的列(或将其加载到DataTable并执行相同操作)。

答案 1 :(得分:1)

你应该使用ExecuteReader()而不是像下面那样,因为你的命令返回非标量值。你可能得到空字符串导致RESTORE命令的第一列值按照你发布的SSMS结果图像NULL

sqlCom.ExecuteReader()