サーバー上でデータベースがどのドライブにあるかを調べようとしています。さらに詳しく説明すると、サーバー「MyServer」とそのサーバー上に 3 つのデータベースがあります。データベース 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 プロパティを設定します。