Server.DetachDatabase メソッド (String, Boolean)

データベースがデタッチされる前に統計を更新するオプションを使用して、指定したデータベースを SQL Server のインスタンスからデタッチします。

名前空間:  Microsoft.SqlServer.Management.Smo
アセンブリ:  Microsoft.SqlServer.Smo (Microsoft.SqlServer.Smo.dll)

構文

'宣言
Public Sub DetachDatabase ( _
    databaseName As String, _
    updateStatistics As Boolean _
)
'使用
Dim instance As Server 
Dim databaseName As String 
Dim updateStatistics As Boolean

instance.DetachDatabase(databaseName, _
    updateStatistics)
public void DetachDatabase(
    string databaseName,
    bool updateStatistics
)
public:
void DetachDatabase(
    String^ databaseName, 
    bool updateStatistics
)
member DetachDatabase : 
        databaseName:string * 
        updateStatistics:bool -> unit
public function DetachDatabase(
    databaseName : String, 
    updateStatistics : boolean
)

パラメーター

  • databaseName
    型: System.String
    デタッチするデータベースの名前を示す String 値です。
  • updateStatistics
    型: System.Boolean
    デタッチする前にデータベースの統計を更新するかどうかを示す Boolean 値です。True の場合、統計が更新されます。False の場合、統計は更新されません。

説明

データベースのデータ ファイルおよびトランザクション ログ ファイルを、いったんデタッチして、SQL Server の同一または別のインスタンスに再度アタッチすることができます。 同一のコンピューターにある別の SQL Server のインスタンスにデータベースを変更する場合や、データベースを移動する場合は、データベースをデタッチしてアタッチすると便利です。

使用例

Visual Basic

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
Dim owner As String
Dim logstr as String
Dim datastr as String
owner = srv.Databases("AdventureWorks2012").Owner

'Detach the AdventureWorks2012 database.
srv.DetachDatabase("AdventureWorks2012", False, False)

'Display information about the detached database.
Dim d As DataTable
Datastr = "C:\Program Files\Microsoft SQL Server"
Datastr = datastr + "\MSSQL10_50\MSSQL\Data\AdventureWorks2012_Data.mdf"
Logstr = "C:\Program Files\Microsoft SQL Server"
Logstr = datastr + "\MSSQL10_50\MSSQL\Data\AdventureWorks2012_Log.ldf"
d = srv.DetachedDatabaseInfo(datastr)
Dim r As DataRow
Dim c As DataColumn
For Each r In d.Rows
    Console.WriteLine("==========================")
    For Each c In r.Table.Columns
        Console.WriteLine(c.ColumnName + " = " + r[c].ToString)
    Next
Next

'Check whether the file is a detached primary file.
Console.WriteLine(srv.IsDetachedPrimaryFile(datastr))

'Attach the database
Dim sc As StringCollection
sc = New StringCollection
sc.Add(datastr)
sc.Add(logstr)
srv.AttachDatabase("AdventureWorks2012", sc, owner, AttachOptions.None)

PowerShell

$srv = new-object Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database
$db = $srv.Databases.Item("AdventureWorks2012")
$owner = $db.Owner
$srv.DetachDatabase("AdventureWorks2012", $FALSE, $FALSE)
$datastr = "C:\Program Files\Microsoft SQL Server"
$datastr = $datastr + "\MSSQL10_50\MSSQL\Data\AdventureWorks2012_Data.mdf"
$logstr = "C:\Program Files\Microsoft SQL Server"
$logstr = $logstr + "\MSSQL10_50\MSSQL\Data\AdventureWorks2012_Log.ldf"
$d = $srv.DetachedDatabaseInfo($datastr)
foreach ($r in $d.Rows)
{
   Write-Host "=========================="
   Foreach ($c in $d.Columns)
   {
      Write-Host $c.ColumnName "=" $r[$c].ToString()
   }
}
Write-Host $srv.IsDetachedPrimaryFile($datastr)
$sc = new-object Systems.Collections.Specialized.StringCollection
$sc.Add($datastr)
$sc.Add($logstr)
$srv.AttachDatabase("AdventureWorks2012", $sc, $owner, [Microsoft.SqlServer.Management.Smo.AttachOptions]::None)

関連項目

参照

Server クラス

DetachDatabase オーバーロード

Microsoft.SqlServer.Management.Smo 名前空間

その他の技術情報

データベースのデタッチとアタッチ (SQL Server)

メソッドの呼び出し

サーバーの管理

[データベースのデタッチ] ([全般] ページ)