Transferir datos
La clase Transfer es una clase de utilidad que proporciona herramientas para transferir objetos y datos.
Los objetos del esquema de la base de datos se transfieren ejecutando un script generado en el servidor de destino. Los datos Table se transfieren con un paquete DTS creado dinámicamente.
El objeto Transfer contiene toda la funcionalidad de los objetos Transfer en DMO y funcionalidad SQL Server adicional. Sin embargo, en SMO, el objeto Transfer utiliza DTS para transferir datos. Además, los métodos y propiedades que se utilizan para realizar transferencias de datos residen en el objeto Transfer en lugar del objeto Database. Mover la funcionalidad de las clases de instancia a las clases de utilidad es coherente con un modelo de objetos más ligero porque el código para las tareas concretas solamente se carga cuando se requiere.
El objeto Transfer no admite transferencias de datos a una base de datos de destino que tenga CompatibilityLevel menor que la versión de la instancia de SQL Server.
Específicamente,
SQL Server 2005 y SQL Server 2008 no admiten la transferencia de datos a bases de datos cuya propiedad CompatibilityLevel sea Version80.
SQL Server 2005 y SQL Server 2008 no admiten la transferencia de datos a bases de datos que ejecuten SQL Server versión 7.0.
Ejemplo
Para utilizar cualquier ejemplo de código que se proporcione, deberá elegir el entorno de programación, la plantilla de programación y el lenguaje de programación en los que crear su aplicación. Para obtener más información, vea "Cómo crear un proyecto de Visual Basic SMO en Visual Studio .NET" o "Cómo crear un proyecto de Visual C# SMO en Visual Studio .NET" en los Libros en pantalla de SQL Server.
Transferir esquemas y datos de una base de datos a otra en Visual Basic
En este ejemplo de código se muestra cómo transferir esquemas y datos de una base de datos a otra utilizando el objeto Transfer.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks2008R2 database
Dim db As Database
db = srv.Databases("AdventureWorks2008R2")
'Create a new database that is to be destination database.
Dim dbCopy As Database
dbCopy = New Database(srv, "AdventureWorks2008R2Copy")
dbCopy.Create()
'Define a Transfer object and set the required options and properties.
Dim xfr As Transfer
xfr = New Transfer(db)
xfr.CopyAllTables = True
xfr.Options.WithDependencies = True
xfr.Options.ContinueScriptingOnError = True
xfr.DestinationDatabase = "AdventureWorks2008R2Copy"
xfr.DestinationServer = srv.Name
xfr.DestinationLoginSecure = True
xfr.CopySchema = True
'Script the transfer. Alternatively perform immediate data transfer with TransferData method.
xfr.ScriptTransfer()
Transferir esquemas y datos de una base de datos a otra en Visual C#
En este ejemplo de código se muestra cómo transferir esquemas y datos de una base de datos a otra utilizando el objeto Transfer.
{
Server srv;
srv = new Server();
//Reference the AdventureWorks2008R2 database
Database db;
db = srv.Databases["AdventureWorks2008R2"];
//Create a new database that is to be destination database.
Database dbCopy;
dbCopy = new Database(srv, "AdventureWorks2008R2Copy");
dbCopy.Create();
//Define a Transfer object and set the required options and properties.
Transfer xfr;
xfr = new Transfer(db);
xfr.CopyAllTables = true;
xfr.Options.WithDependencies = true;
xfr.Options.ContinueScriptingOnError = true;
xfr.DestinationDatabase = "AdventureWorks2008R2Copy";
xfr.DestinationServer = srv.Name;
xfr.DestinationLoginSecure = true;
xfr.CopySchema = true;
//Script the transfer. Alternatively perform immediate data transfer
// with TransferData method.
xfr.ScriptTransfer();
}
Transferir esquemas y datos de una base de datos a otra en PowerShell
En este ejemplo de código se muestra cómo transferir esquemas y datos de una base de datos a otra utilizando el objeto Transfer.
#Connect to the local, default instance of SQL Server.
#Get a server object which corresponds to the default instance
$srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server
#Reference the AdventureWorks2008R2 database.
$db = $srv.Databases["AdventureWorks2008R2"]
#Create a database to hold the copy of AdventureWorks
$dbCopy = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Database -argumentlist $srv, "AdventureWorksCopy"
$dbCopy.Create()
#Define a Transfer object and set the required options and properties.
$xfr = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Transfer -argumentlist $db
#Set this objects properties
$xfr.CopyAllTables = $true
$xfr.Options.WithDependencies = $true
$xfr.Options.ContinueScriptingOnError = $true
$xfr.DestinationDatabase = "AdventureWorksCopy"
$xfr.DestinationServer = $srv.Name
$xfr.DestinationLoginSecure = $true
$xfr.CopySchema = $true
"Scripting Data Transfer"
#Script the transfer. Alternatively perform immediate data transfer with TransferData method.
$xfr.ScriptTransfer()