我正在编写一个 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/