【问题标题】:vb.net get result of sql statementvb.net 获取 sql 语句的结果
【发布时间】:2013-07-19 23:52:50
【问题描述】:

你好,看看下面的代码:

Try

con.ConnectionString = strCon

Dim strCommand as String = "RESTORE FILELISTONLY 
                        FROM DISK = 'C:\AdventureWorks.BAK'
                        WITH FILE = 1
                        GO"

Dim cm As New SqlClient.SqlCommand(strCommand, con)

con.Open()

cm.ExecuteNonQuery()

有谁知道如何获取我的数据库的逻辑文件列表,它不适用于 executereader。我想获取我的数据库备份文件的 mdf 和 ldf 文件名。

谢谢。

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    正如我之前所说 - GO不是 T-SQL 关键字 - 放弃它!

    其次,仅恢复文件头时不需要WITH FILE - 试试这个:

    Dim strCommand as String = "RESTORE FILELISTONLY 
                               FROM DISK = 'C:\AdventureWorks.BAK'"
    

    这将返回几条数据——因此您需要处理一个结果集,因此使用.ExecuteReader() 从查询中获取这些数据。

    试试这段代码(它是 C#,但应该很容易转换为 VB.NET):

    using System;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace GetPhysicalDbNames
    {
        class Program
        {
            static void Main(string[] args)
            {
                string stmt = @"RESTORE FILELISTONLY FROM DISK = 'D:\temp\AW2012.BAK'";
    
                using (SqlConnection conn = new SqlConnection("server=.;database=master;integrated Security=SSPI"))
                using (SqlCommand cmd = new SqlCommand(stmt, conn))
                {
                    DataTable tblInfo = new DataTable();
                    SqlDataAdapter dap = new SqlDataAdapter(cmd);
    
                    dap.Fill(tblInfo);
    
                    foreach (DataRow row in tblInfo.Rows)
                    {
                        Console.WriteLine("Logical name: {0}", row["LogicalName"]);
                        Console.WriteLine("Physical file name: {0}", row["PhysicalName"]);
                    }
                }
            }
        }
    }
    

    执行RESTORE 命令会返回一个结果集,其中包含LogicalNamePhysicalName 两列(这是.mdf.ldf 文件的实际完整物理文件名)

    【讨论】:

    • 我做到了,但我仍然无法获得 .mdf 和 .ldf 文件,知道如何获得这些文件吗?
    • 不起作用,它表示在没有数据存在时读取数据的尝试无效。 :(
    • 它现在可以工作了,非常感谢,你不知道我有多感激你,万分感谢 :)
    • @avi 如果它对您有用,请您将其标记为答案,以便当人们在他们的搜索结果中找到您的问题时,他们会知道它确实有答案..thnx
    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多