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이면 통계가 업데이트되지 않습니다.
주의
The data and transaction log files of a database can be detached and then reattached to the same or another instance of SQL Server. Detaching and attaching a database is useful if you want to change the database to a different instance of SQL Server on the same computer, or if you want to move the database.
예
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("AdventureWorks2008R2").Owner
'Detach the AdventureWorks2008R2 database.
srv.DetachDatabase("AdventureWorks2008R2", 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\AdventureWorks2008R2_Data.mdf"
Logstr = "C:\Program Files\Microsoft SQL Server"
Logstr = datastr + "\MSSQL10_50\MSSQL\Data\AdventureWorks2008R2_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("AdventureWorks2008R2", 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("AdventureWorks2008R2")
$owner = $db.Owner
$srv.DetachDatabase("AdventureWorks2008R2", $FALSE, $FALSE)
$datastr = "C:\Program Files\Microsoft SQL Server"
$datastr = $datastr + "\MSSQL10_50\MSSQL\Data\AdventureWorks2008R2_Data.mdf"
$logstr = "C:\Program Files\Microsoft SQL Server"
$logstr = $logstr + "\MSSQL10_50\MSSQL\Data\AdventureWorks2008R2_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("AdventureWorks2008R2", $sc, $owner, [Microsoft.SqlServer.Management.Smo.AttachOptions]::None)