c# - 在 C# 中使用 SQL 获取数据库的驱动器号

标签 c# sql-server smo

我试图找出服务器上数据库所在的驱动器。为了进一步详细说明,该服务器上有一个服务器“MyServer”和三个数据库。数据库 A 和 B 位于该服务器的“C:\”驱动器上,数据库 C 位于“D:\”驱动器上。我想知道如何使用连接字符串来尝试获取驱动器盘符,以便当用户从应用程序中选择数据库时,它会告诉他们该数据库位于哪个驱动器上。

目前我正在尝试以下方式并没有得到正确的回应:

Private void GetDriveLetter()
{
   string connectionString = String.Format(DatabaseInfo.CONNECTIONSTRING_TEMPLATE, dbName, server)
   try
   {
     using (SqlConnection cn = new SqlConnection(ConnectionString))
     {
       cn.Open();
       Server srv = new Server(new ServerConnection(cn));
       Database database = new Database(srv, dbName);
       txtDriveLetter.Text = database.PrimaryFilePath;
       cn.Close();
     }
    }
    catch (Exception ex)
    { 
      myException = ex.Message
    }
}

DatabaseInfo 只是一个我们用来读取 SQL Server 和数据库名称的类,而 myException 是一个将异常写入日志文件的函数。我遇到的问题是,无论我做什么,我都会收到一个异常,提示 PrimaryFilePath 从未设置。我是不是做错了什么/遗漏了什么,或者这不是解决这个问题的正确方法?

编辑:抱歉从未发布异常 要完成此操作,请设置属性 PrimaryFilePath。

最佳答案

您始终可以对 SQL Server 中的 sys 目录 View 运行查询:

SELECT * FROM sys.master_files

这将列出您的数据库、它的 id、它的逻辑名称以及文件在磁盘上的位置。

关于c# - 在 C# 中使用 SQL 获取数据库的驱动器号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642028/

相关文章:

java - JNI4Net C# 到 Java

c# - 使用 OLEDB 访问 Excel 2007 文件格式

sql - 为什么这个更新查询不起作用?

c# - 如何设置 CommandTimeout

c# - MEF 容器层次结构和 GetExports<T>

c# - 将 Outlook 电子邮件存储在 Microsoft SQL Server 数据库中

sql - 如何在 SQL 中使用其值的某个百分比更新表的字段?

sql-server - 使用 Restore-SqlDatabase cmdlet 时无法绑定(bind) RelocateFile

c# - 使用 ObjectList 时通过 SMO 传输数据失败

c# - 使用 Server.MapPath() 时如何从虚拟路径中排除 Controller 名称?