Поделиться через


Метод DetachDatabase (String, Boolean, Boolean)

Отсоединяет указанную базу данных от экземпляра SQL Server с параметром для обновления статистики перед отсоединением.

Пространство имен:  Microsoft.SqlServer.Management.Smo
Сборка:  Microsoft.SqlServer.Smo (в Microsoft.SqlServer.Smo.dll)

Синтаксис

'Декларация
Public Sub DetachDatabase ( _
    databaseName As String, _
    updateStatistics As Boolean, _
    removeFulltextIndexFile As Boolean _
)
'Применение
Dim instance As Server
Dim databaseName As String
Dim updateStatistics As Boolean
Dim removeFulltextIndexFile As Boolean

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

Параметры

  • databaseName
    Тип: System. . :: . .String
    Значение типа String, указывающее имя базы данных для отсоединения.
  • updateStatistics
    Тип: System. . :: . .Boolean
    Значение Boolean, указывающее, следует ли обновлять статистику по базе данных до ее отсоединения.
    При значении True статистика обновляется.
    При значении False статистика не обновляется.
  • removeFulltextIndexFile
    Тип: 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)