Server.AttachDatabase Server.AttachDatabase Server.AttachDatabase Method

Definition

Attaches an existing database that is made up of one or more files to the instance of SQL Server.

Overloads

AttachDatabase(String, StringCollection) AttachDatabase(String, StringCollection) AttachDatabase(String, StringCollection)

Attaches an existing database that is made up of one or more files to the instance of SQL Server with the specified name and using the specified data files.

AttachDatabase(String, StringCollection, AttachOptions) AttachDatabase(String, StringCollection, AttachOptions)

Attaches an existing database that is made up of one or more files to the instance of SQL Server that has the specified name and using the specified data files and attachment options.

AttachDatabase(String, StringCollection, String) AttachDatabase(String, StringCollection, String) AttachDatabase(String, StringCollection, String)

Attaches an existing database that is made up of one or more files to the instance of SQL Server with the specified name and using the specified data files.

AttachDatabase(String, StringCollection, String, AttachOptions) AttachDatabase(String, StringCollection, String, AttachOptions)

Attaches an existing database that is made up of one or more files to the instance of SQL Server by using the specified name, data files, and attachment options.

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.

AttachDatabase(String, StringCollection) AttachDatabase(String, StringCollection) AttachDatabase(String, StringCollection)

Attaches an existing database that is made up of one or more files to the instance of SQL Server with the specified name and using the specified data files.

public:
 void AttachDatabase(System::String ^ name, System::Collections::Specialized::StringCollection ^ files);
public void AttachDatabase (string name, System.Collections.Specialized.StringCollection files);
Public Sub AttachDatabase (name As String, files As StringCollection)
Parameters
name
String String String

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

files
StringCollection StringCollection StringCollection

A StringCollection object value that contains a list database files.

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 = logstr + "\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.

AttachDatabase(String, StringCollection, AttachOptions) AttachDatabase(String, StringCollection, AttachOptions)

Attaches an existing database that is made up of one or more files to the instance of SQL Server that has the specified name and using the specified data files and attachment options.

public:
 void AttachDatabase(System::String ^ name, System::Collections::Specialized::StringCollection ^ files, Microsoft::SqlServer::Management::Smo::AttachOptions attachOptions);
public void AttachDatabase (string name, System.Collections.Specialized.StringCollection files, Microsoft.SqlServer.Management.Smo.AttachOptions attachOptions);
Parameters
name
String String String

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

files
StringCollection StringCollection StringCollection

A StringCollection object value that contains a list database files.

attachOptions
AttachOptions AttachOptions AttachOptions

A AttachOptions object value that contains the attachment options.

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.

AttachDatabase(String, StringCollection, String) AttachDatabase(String, StringCollection, String) AttachDatabase(String, StringCollection, String)

Attaches an existing database that is made up of one or more files to the instance of SQL Server with the specified name and using the specified data files.

public:
 void AttachDatabase(System::String ^ name, System::Collections::Specialized::StringCollection ^ files, System::String ^ owner);
public void AttachDatabase (string name, System.Collections.Specialized.StringCollection files, string owner);
Public Sub AttachDatabase (name As String, files As StringCollection, owner As String)
Parameters
name
String String String

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

files
StringCollection StringCollection StringCollection

A StringCollection object value that contains a list database files.

owner
String String String

A String value that specifies the new owner of the database.

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.

Use this overload to specify the owner of the database after it is attached.

AttachDatabase(String, StringCollection, String, AttachOptions) AttachDatabase(String, StringCollection, String, AttachOptions)

Attaches an existing database that is made up of one or more files to the instance of SQL Server by using the specified name, data files, and attachment options.

public:
 void AttachDatabase(System::String ^ name, System::Collections::Specialized::StringCollection ^ files, System::String ^ owner, Microsoft::SqlServer::Management::Smo::AttachOptions attachOptions);
public void AttachDatabase (string name, System.Collections.Specialized.StringCollection files, string owner, Microsoft.SqlServer.Management.Smo.AttachOptions attachOptions);
Parameters
name
String String String

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

files
StringCollection StringCollection StringCollection

A StringCollection object value that contains a list database files.

owner
String String String

A String value that specifies the new owner of the database.

attachOptions
AttachOptions AttachOptions AttachOptions

A AttachOptions object value that contains the attachment options.

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.

Use this overload to specify the owner of the database after it is attached.

Applies to