如何在c#中使用smo查找我的数据文件和日志文件的存储位置

时间:2009-06-17 10:30:53

标签: c# sql-server sql-server-2008 smo

有人可以告诉我如何在c#中找到使用SMO存储我的数据和日志文件的位置吗?

3 个答案:

答案 0 :(得分:4)

 public static void foo() {
     Microsoft.SqlServer.Management.Smo.Server server = new ServerConnection("<server name>");
     Microsoft.SqlServer.Management.Smo.Database db = server.Databases["<database name>"];
     Console.WriteLine(db.FileGroups[0].Files[0].FileName);
     Console.WriteLine(db.LogFiles[0].FileName);
  }

此示例假定您具有Server \ Database的足够权限,并且仅返回文件组中第一个db / log文件的完整路径\ filename。

FileGroups,Files和LogFiles是SMO集合,它们将包含一个或多个相应的项目。

答案 1 :(得分:0)

显然你可以“从FileGroups和Files集合中获取逻辑数据和日志文件的名称。”

请参阅link text

答案 2 :(得分:0)

$targetServerName = "localhost"
$targetDatabaseName = "dbname"

$targetServer = New-Object ("Microsoft.SqlServer.Management.Smo.Server")$targetServerName 
$database = $targetServer.Databases[$targetDatabaseName]

foreach ($fg in $database.FileGroups)
{
  foreach ($df in $fg.Files)
    {
    "Filegroup type : " + $fg.Name + " DataFiles : "  + $df.FileName

    }
}
foreach ($lf in $database.LogFiles)
{
   "Log file : " + $lf.FileName
}

这应该可以为您提供准确的路径。