我正在编写一个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.只要指定的路径不是默认路径,则此函数会正确返回该路径.
因此,一个简单的解决方法是检查此函数是返回字符串,还是null.如果它返回一个字符串,那么使用它,但是如果它为null,则使用
Microsoft.sqlServer.Management.Smo.Server(ServerName).information.RootDirectory + "\\DATA\\"