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

Ric*_*ACC 6 c# sql

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

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

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

我发现的另一个例子是创建了一个数据库,读取了该数据库的文件属性,一旦完成就删除了数据库.那太麻烦了.

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

Microsoft.SqlServer.Management.Smo.Server(ServerName).Settings.DefaultFile
Run Code Online (Sandbox Code Playgroud)

问题是这是返回空字符串,这没有帮助.

我还需要找出运行SQL服务的NT帐户,这样一旦我提取了该用户,我就可以在备份文件上授予该用户的读访问权限.

Ric*_*ACC 9

我发现的是

Microsoft.SqlServer.Management.Smo.Server(ServerName).Settings.DefaultFile
Run Code Online (Sandbox Code Playgroud)

仅在没有显式定义路径时才返回非null.只要指定的路径不是默认路径,则此函数会正确返回该路径.

因此,一个简单的解决方法是检查此函数是返回字符串,还是null.如果它返回一个字符串,那么使用它,但是如果它为null,则使用

Microsoft.SqlServer.Management.Smo.Server(ServerName).Information.RootDirectory + "\\DATA\\"
Run Code Online (Sandbox Code Playgroud)