gpt4 book ai didi

c# - 在 C# 应用程序中获取 Transact SQL 查询结果

转载 作者:行者123 更新时间:2023-11-30 23:10:10 25 4
gpt4 key购买 nike

我正在尝试编写一个 C# 应用程序,用于从放置在特定文件夹中的 .bak 文件恢复许多数据库。为此,我需要文件中的数据库逻辑名称。

所以我想执行以下查询:

RESTORE FILELISTONLY FROM DISK = N'C:\Folder\File'

问题是:我无法将此结果发送到我的应用程序,当我在 SQL Server Management Studio 中执行它时,它显示我想要的名称。

我尝试使用 SqlDataReader 中的 ExecuteReader 函数,但它没有返回任何数据。

谁能帮我弄清楚如何在 C# 应用程序中将恢复数据库、备份数据库等查询的结果获取到变量中?

提前致谢

最佳答案

命令 RESTORE FILELISTONLY 确实按照文档 RESTORE Statement - FILELISTONLY 返回结果集.我在测试我的代码时发现,您需要确保运行该应用程序的用户有权读取指定的文件和目录。否则你会遇到问题。

有关此的代码示例:

var command = @"RESTORE FILELISTONLY FROM DISK = N'F:\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\Scratch.bak'";

using (var sqlConnection = new SqlConnection("Server=localhost;Database=Scratch;Trusted_Connection=True;"))
using (var sqlCommand = new SqlCommand(command, sqlConnection))
{
sqlConnection.Open();
var sqlDataReader = sqlCommand.ExecuteReader();

while (sqlDataReader.Read())
{
Console.WriteLine($"Logical Name: {sqlDataReader["LogicalName"]}");
Console.WriteLine($"Physical Name: {sqlDataReader["PhysicalName"]}");
Console.WriteLine($"Type: {sqlDataReader["Type"]}");

}
}

您可能还会发现,在尝试进行 SQL Server 管理时,使用 SqlConnectionSqlCommand 对象可能比它们的值(value)更令人沮丧。我强烈建议使用 SQL Server 管理对象 (SMO)。当您使用 SQL Server 时,这实际上是 Management Studio 使用的。如果你对它感兴趣,我在 GitHub 上有一个例子。结帐GitHub: SMO Demo .

关于c# - 在 C# 应用程序中获取 Transact SQL 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45511826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com