我正在编写一个C#应用程序,该程序通过FTP下载压缩的数据库备份。然后,应用程序需要提取备份并将其还原到默认数据库位置。
我不知道将在运行该应用程序的计算机上安装哪个版本的SQL Server。因此,我需要根据实例名称(在配置文件中)找到默认位置。
我发现所有示例均具有读取的注册表项,但这将不起作用,因为这假定仅安装了一个SQL实例。
我发现的另一个示例创建了一个数据库,读取了该数据库的文件属性,并在完成后删除了该数据库。那太麻烦了。
我确实在.NET框架中找到了应该起作用的东西,即:
Microsoft.SqlServer.Management.Smo.Server(ServerName).Settings.DefaultFile 问题在于这将返回空字符串,这无济于事。
我还需要找出运行SQL服务的NT帐户,以便一旦提取了该文件,便可以授予该用户对该备份文件的读取权限。
问题来源于stack overflow
我发现的是
Microsoft.SqlServer.Management.Smo.Server(ServerName).Settings.DefaultFile 仅当没有明确定义的路径时,才返回非空值。一旦指定的路径不是默认路径,此函数将正确返回该路径。
因此,一种简单的解决方法是检查此函数是否返回字符串或null。如果返回字符串,则使用该字符串,但如果为null,则使用
Microsoft.SqlServer.Management.Smo.Server(ServerName).Information.RootDirectory + "\DATA\"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。