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


Передача данных

Класс Transfer является служебным классом, наделенным средствами для передачи объектов и данных.

Объекты схемы базы данных передаются при выполнении созданного скрипта на целевом сервере. Данные Table передаются с динамически созданным пакетом служб DTS.

Объект Transfer обладает всеми функциональными возможностями объектов Transfer в DMO и дополнительными функциональными возможностями SQL Server. Однако для передачи данных в SMO объект Transfer использует DTS. Кроме того, методы и свойства, необходимые для передачи данных, размещаются не на объекте Database, а на объекте Transfer. Перенос функциональных возможностей с экземпляров классов на вспомогательные классы согласуется с облегченной объектной моделью, поскольку код для выполнения конкретных задач загружается только по мере необходимости.

Объект Transfer не поддерживает передачи данных в базу данных-получатель, у которой CompatibilityLevel меньше, чем у версии экземпляра SQL Server.

В частности:

  • SQL Server 2005 и SQL Server 2008 не поддерживают передачу данных базам данных со свойством CompatibilityLevelVersion80;

  • SQL Server 2005 и SQL Server 2008 не поддерживают передачу данных базам данных, в которых выполняется SQL Server версии 7.0.

Примеры

Чтобы использовать какой-либо из представленных примеров кода, необходимо выбрать среду, шаблон и язык программирования, с помощью которых будет создаваться приложение. Дополнительные сведения см. в разделе «Как создать проект Visual Basic SMO в Visual Studio .NET» или «Как создать проект Visual C# SMO в Visual Studio .NET» в электронной документации по SQL Server.

Передача схемы и данных из одной базы данных в другую на языке Visual Basic

Этот пример кода показывает, как передавать схему и данные из одной базы данных в другую с помощью объекта 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()

Передача схемы и данных из одной базы данных в другую на языке Visual C#

Этот пример кода показывает, как передавать схему и данные из одной базы данных в другую с помощью объекта 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();
        } 

Передача схемы и данных из одной базы данных в другую в PowerShell

Этот пример кода показывает, как передавать схему и данные из одной базы данных в другую с помощью объекта 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()