Server.DetachDatabase Server.DetachDatabase Server.DetachDatabase Method

Definition

Detaches a database from the instance of SQL Server.

Overloads

DetachDatabase(String, Boolean) DetachDatabase(String, Boolean) DetachDatabase(String, Boolean)

Detaches the specified database from the instance of SQL Server with the option to update statistics before the database is detached.

DetachDatabase(String, Boolean, Boolean) DetachDatabase(String, Boolean, Boolean) DetachDatabase(String, Boolean, Boolean)

Detaches the specified database from the instance of SQL Server with the option to update statistics before the database is detached.

Remarks

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.

DetachDatabase(String, Boolean) DetachDatabase(String, Boolean) DetachDatabase(String, Boolean)

Detaches the specified database from the instance of SQL Server with the option to update statistics before the database is detached.

public:
 void DetachDatabase(System::String ^ databaseName, bool updateStatistics);
public void DetachDatabase (string databaseName, bool updateStatistics);
Public Sub DetachDatabase (databaseName As String, updateStatistics As Boolean)
Parameters
databaseName
String String String

A String value that specifies the name of the database to be detached.

updateStatistics
Boolean Boolean Boolean

A Boolean value that specifies whether to update the statistics for the database before detaching it.

If True, statistics are updated.

If False, statistics are not updated.

Examples

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)  

Remarks

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.

See Also

DetachDatabase(String, Boolean, Boolean) DetachDatabase(String, Boolean, Boolean) DetachDatabase(String, Boolean, Boolean)

Detaches the specified database from the instance of SQL Server with the option to update statistics before the database is detached.

public:
 void DetachDatabase(System::String ^ databaseName, bool updateStatistics, bool removeFulltextIndexFile);
public void DetachDatabase (string databaseName, bool updateStatistics, bool removeFulltextIndexFile);
Public Sub DetachDatabase (databaseName As String, updateStatistics As Boolean, removeFulltextIndexFile As Boolean)
Parameters
databaseName
String String String

A String value that specifies the name of the database to be detached.

updateStatistics
Boolean Boolean Boolean

A Boolean value that specifies whether to update the statistics for the database before detaching it.

If True, statistics are updated.

If False, statistics are not updated.

removeFulltextIndexFile
Boolean Boolean Boolean

A Boolean value that specifies whether to remove a full-text index file before detaching the database.

If True, the full-text index file is removed.

If False, the full-text index file is not removed.

Examples

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)  

Remarks

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.

Applies to