是否可以将数据编写为SSIS包中的Insert语句?

时间:2010-05-11 15:18:44

标签: sql-server-2008 sql-server-ce ssis

SQL Server 2008提供了使用Management Studio中的Generate Scripts选项将数据编写为Insert语句的功能。是否可以从SSIS包中访问相同的功能?

这就是我想要完成的事情:

我有一个每晚运行的预定作业,并编写SQL Server 2008数据库中的所有架构和数据。然后,它使用该脚本创建mirror copy SQLCE 3.5数据库。我一直在使用 Narayana Vyas Kondreddi的 sp_generate_inserts存储过程来完成此任务,但它存在少量数据类型的问题,并且还存在处理超过4,000列的问题(来自SQL Server 2000的保留天)。

脚本数据功能看起来可以解决我的问题,只要我能自动化它。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

可以使用SMO的 Scripter.EnumScript 方法自动将所有表数据的脚本编写为Insert语句。这是我想出的代码。

Using conn As New SqlConnection(SqlServerConnectionString)
    Dim smoConn As New ServerConnection(conn)
    Dim smoServer As New Server(smoConn)
    Dim smoDatabase As Database = smoServer.Databases(smoConn.DatabaseName)
    Dim smoTables As SqlSmoObject() = New SqlSmoObject(2) {smoDatabase.Tables("Employee"), _
                                                           smoDatabase.Tables("Company"), _
                                                           smoDatabase.Tables("Job")}

    Dim smoScripter As New Scripter(smoServer)
    With smoScripter.Options
        .ScriptData = True
        .ScriptSchema = False
        .IncludeDatabaseContext = False
        .EnforceScriptingOptions = True
        .SchemaQualify = False
    End With

    Dim outputScript As New StringBuilder()
    For Each script As String In smoScripter.EnumScript(smoTables)
        outputScript.Append(script)
    Next

    Return outputScript.ToString()
End Using

有点太晚了,无法帮助我,我还找到了其他一些在MSDN论坛上讨论同样挑战的人:

ScriptData doesn't script data

答案 1 :(得分:2)

使用我的Export2SqlCE命令行实用程序,该实用程序在SQL Compact兼容脚本中编写数据和模式的脚本。 SMO不支持SQL Compact语法和数据类型转换。