我正在编写一个C#应用程序,它通过FTP下载压缩数据库备份.然后,应用程序需要提取备份并将其还原到默认数据库位置.
我不知道在运行应用程序的机器上将安装哪个版本的SQL Server.因此,我需要根据实例名称(在配置文件中)找到默认位置.
我发现的示例都有一个他们读取的注册表项,但这不起作用,因为这假定只安装了一个SQL实例.
我发现的另一个例子是创建了一个数据库,读取了该数据库的文件属性,一旦完成就删除了数据库.那太麻烦了.
我确实在.NET框架中找到了应该工作的东西,即:
Microsoft.SqlServer.Management.Smo.Server(ServerName).Settings.DefaultFileRun Code Online (Sandbox Code Playgroud)
问题是这是返回空字符串,这没有帮助.
我还需要找出运行SQL服务的NT帐户,这样一旦我提取了该用户,我就可以在备份文件上授予该用户的读访问权限.
我发现的是
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)
| 归档时间: |
|
| 查看次数: |
6670 次 |
| 最近记录: |