C# SQL 将数据库还原到默认数据位置

标签 c# sql

我正在编写一个 C# 应用程序,它通过 FTP 下载压缩的数据库备份。然后应用程序需要提取备份并将其恢复到默认数据库位置。

我不知道运行应用程序的机器上将安装哪个版本的 SQL Server。因此,我需要根据实例名称(在配置文件中)找到默认位置。

我发现的示例都有一个他们读取的注册表项,但这不起作用,因为这假定只安装了一个 SQL 实例。

我发现的另一个示例创建了一个数据库,读取该数据库的文件属性,并在完成后删除该数据库。那太麻烦了。

我确实在 .NET 框架中找到了一些应该工作的东西,即:

Microsoft.SqlServer.Management.Smo.Server(ServerName).Settings.DefaultFile

问题是这会返回空字符串,这无济于事。

我还需要找出运行 SQL 服务的 NT 帐户,以便在我提取备份文件后授予该用户读取备份文件的权限。

最佳答案

我发现的是

Microsoft.SqlServer.Management.Smo.Server(ServerName).Settings.DefaultFile

只有在没有明确定义路径时才返回非空值。一旦您指定了一个非默认路径,此函数就会正确返回该路径。

因此,一个简单的解决方法是检查此函数是否返回字符串或 null。如果它返回一个字符串,则使用它,但如果它为空,则使用

Microsoft.SqlServer.Management.Smo.Server(ServerName).Information.RootDirectory + "\\DATA\\"

关于C# SQL 将数据库还原到默认数据位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63008/

相关文章:

c# - 添加 ViewModel 类将代码优先模型添加到数据库

MySQL连接三个表

mysql - 如果从顶部开始相同,如何隐藏/删除行中的数据

sql - SQL 中嵌套 NOT EXIST

c# - 事务必须在 SQL Server 的存储过程中吗?

c# - 如何在环境变量中正确存储连接字符串以供生产 ASP.Net Core MVC 应用程序检索

sql - 从连接行中选择不同的字段

mysql - SQL 查询以选择满足先决条件要求的主题

c# - 在 C# 中将 2 个本地字符串 [] 添加到单个数组中

c# - 带时间戳的对象修改设计模式