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的保留天)。
脚本数据功能看起来可以解决我的问题,只要我能自动化它。
有什么建议吗?
答案 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论坛上讨论同样挑战的人:
答案 1 :(得分:2)
使用我的Export2SqlCE命令行实用程序,该实用程序在SQL Compact兼容脚本中编写数据和模式的脚本。 SMO不支持SQL Compact语法和数据类型转换。