ssis,用“传输 SQL Server 对象任务 ”COPY一个表,表名是动态的,如何配置??

丹青 2008-07-09 02:18:55
SSIS 问题。用“传输 SQL Server 对象任务 ”由一个数据库到另一个数据库COPY一个表。表名是动态的,存储在变量中,而TablesList属性是个字符串集合,如何用表达式赋值呀??就是说,给任务一参数是“表的名称”,调用“传输 SQL Server 对象任务 ”就能实现COPY.大家多帮忙??多谢!
...全文
185 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
丹青 2008-07-21
  • 打赏
  • 举报
回复
我是直接引用的“传输 SQL Server 对象任务”类,用“脚本任务”写代码来实现的。把图形化编程代码化了,更灵活。多谢大家帮忙。

Imports System
Imports System.Data
Imports System.Math
Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.Data.OleDb

Public Class ScriptMain

Public Sub Main()

Dim dbSourceName As String = "BOSS_ETL_CONTROL"

Dim srvSource As Server
srvSource = New Server(".")
Dim srvTarget As Server
srvTarget = New Server("10.65.1.1")
Dim db As Database
db = srvSource.Databases(dbSourceName)
Dim xfr As Transfer
xfr = New Transfer(db)
'以下属性的设置可参考“传输 SQL Server 对象任务”的属性调置,都是对应的。
xfr.CopyAllTables = False
xfr.CopyAllStoredProcedures = False
xfr.CopyAllDatabaseTriggers = False
xfr.CopyAllDefaults = False
xfr.CopyAllObjects = False
xfr.CopyAllPartitionFunctions = False
xfr.CopyAllPartitionSchemes = False
xfr.CopyAllRoles = False
xfr.CopyAllRules = False
xfr.CopyAllSchemas = False
xfr.CopyAllSqlAssemblies = False
xfr.CopyAllSynonyms = False
xfr.CopyAllUserDefinedAggregates = False
xfr.CopyAllUserDefinedDataTypes = False
xfr.CopyAllUserDefinedFunctions = False
xfr.CopyAllUserDefinedTypes = False
xfr.CopyAllUsers = False
xfr.CopyAllViews = False
xfr.Options.WithDependencies = True
xfr.Options.ContinueScriptingOnError = True
xfr.Options.ClusteredIndexes = True
xfr.Options.Indexes = True
xfr.Options.DriAllKeys = True
xfr.Options.AllowSystemObjects = False
xfr.Options.PrimaryObject = True
xfr.Options.DriWithNoCheck = True
xfr.Options.NonClusteredIndexes = True
xfr.Options.OptimizerData = True
xfr.DestinationDatabase = "test"
xfr.DestinationServer = srvTarget.Name
xfr.DestinationLoginSecure = False
xfr.DestinationLogin = "test"
xfr.DestinationPassword = "test"
xfr.DropDestinationObjectsFirst = False

'-------------是否覆盖旧表-------------
xfr.Options.AppendToFile = True
xfr.CopySchema = False
'--------------------------
xfr.PrefetchObjects = False
Dim tableToTransfer As String
tableToTransfer = "Dispense_Task"

xfr.ObjectList.Add(db.Tables(tableToTransfer))
xfr.CopyData = True
xfr.TransferData()
Dts.TaskResult = Dts.Results.Success

End Sub

End Class
hery2002 2008-07-10
  • 打赏
  • 举报
回复
string类型,
使用TRIM( @[User::t]),
刚才测试了一下,
然后赋给TablesList
貌似可以的哇
hery2002 2008-07-10
  • 打赏
  • 举报
回复
And this blog,
Self Modifying Packages in SSIS?
http://www.sqljunkies.com/WebLog/knight_reign/archive/2005/12/31/17731.aspx
hery2002 2008-07-10
  • 打赏
  • 举报
回复
pls consult this subject:
TablesList Feed
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1409684&SiteID=1
丹青 2008-07-10
  • 打赏
  • 举报
回复
楼上不行的,保存时报错如下:
保存包时出现一般错误:出错:无法将属性“Tableslist"的表达式"TRIM(@[用户::TempTableName11])"的结果写入该属性。已计算该表达式,但但无法对该属性进行设置
不会你那儿试就行,我这儿就不行吧,说详细点,多谢
丹青 2008-07-09
  • 打赏
  • 举报
回复
多谢楼上,字符串类型肯定不行,我试了。sysname是指什么呀,能说有详细点吗?多谢。
hery2002 2008-07-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Cool_Sword 的回复:]
多谢楼上,变量是什么类型呀,我没有试通呀,
[/Quote]
sysname或者就是字符类型就可以了,
丹青 2008-07-09
  • 打赏
  • 举报
回复
多谢楼上,变量是什么类型呀,我没有试通呀,
hery2002 2008-07-09
  • 打赏
  • 举报
回复
全局变量,
传进去就行了.

6,128

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 新技术前沿
社区管理员
  • 新技术前沿社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧