Share via


データの転送

Transfer クラスは、オブジェクトおよびデータを転送するツールを提供するユーティリティ クラスです。

データベース スキーマ内のオブジェクトは、生成されたスクリプトを対象サーバー上で実行することで転送されます。Table データは、動的に作成された DTS パッケージによって転送されます。

Transfer オブジェクトには、DMO の Transfer オブジェクトのすべての機能、および追加の SQL Server 機能が含まれています。ただし、SMO では、Transfer オブジェクトによるデータ転送には DTS が使用されます。また、データ転送を実行するために使用されるメソッドおよびプロパティは、Database オブジェクトではなく Transfer オブジェクトに存在します。インスタンス クラスからユーティリティ クラスに機能を移動することは、タスクのコードが必要時にのみ読み込まれることを意味するので、軽量化されたオブジェクト モデルに適合する概念です。

Transfer オブジェクトは、SQL Server インスタンスのバージョンより前の CompatibilityLevel を持つ対象データベースへのデータ転送はサポートしていません。

具体的な内容は次のとおりです。

  • SQL Server 2005 および SQL Server 2008 は、Version80CompatibilityLevel プロパティを使用したデータベースへのデータ転送はサポートしていません。

  • SQL Server 2005 および SQL Server 2008 は、SQL Server バージョン 7.0 を実行しているデータベースへのデータ転送はサポートしていません。

提供されているコード例を使用するには、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。詳細については、SQL Server オンライン ブックの「Visual Studio .NET で Visual Basic SMO プロジェクトを作成する方法」および「Visual Studio .NET で Visual C# SMO プロジェクトを作成する方法」を参照してください。

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()