如果有可用的另一种选择:c#.net。特别是Microsoft.SqlServer.Management.Smo命名空间。
我在一个SSIS包的脚本组件中使用类似于以下代码的代码。
var tableToTransfer = "someTable";
var transferringTableSchema = "dbo";
var srvSource = new Server("sourceServer");
var dbSource = srvSource.Databases["sourceDB"];
var srvDestination = new Server("destinationServer");
var dbDestination = srvDestination.Databases["destinationDB"];
var xfr =
new Transfer(dbSource) {
DestinationServer = srvDestination.Name,
DestinationDatabase = dbDestination.Name,
CopyAllObjects = false,
DestinationLoginSecure = true,
DropDestinationObjectsFirst = true,
CopyData = true
};
xfr.Options.ContinueScriptingOnError = false;
xfr.Options.WithDependencies = false;
xfr.ObjectList.Add(dbSource.Tables[tableToTransfer,transferringTableSchema]);
xfr.TransferData();
我认为我必须显式搜索并将Microsoft.SqlServer.Smo库添加到引用中。但是除此之外,这已经为我解决了。
更新:名称空间和库比我记得的要复杂。
对于库,添加对以下内容的引用:
- Microsoft.SqlServer.Smo.dll
- Microsoft.SqlServer.SmoExtended.dll
- Microsoft.SqlServer.ConnectionInfo.dll
- Microsoft.SqlServer.Management.Sdk.Sfc.dll
对于命名空间,添加:
- Microsoft.SqlServer.Management.Common
- Microsoft.SqlServer.Management.Smo