如果你有另一个选择: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