Можно ли записывать данные в виде операторов вставки из пакета служб SSIS? - PullRequest
3 голосов
/ 11 мая 2010

SQL Server 2008 предоставляет возможность сценария данных как операторов вставки с помощью параметра «Создать сценарии» в Management Studio. Возможно ли получить доступ к той же функциональности из пакета служб SSIS?

Вот что я пытаюсь сделать:

У меня есть запланированное задание, которое выполняется по ночам и выполняет сценарии для всей схемы и данных из базы данных SQL Server 2008. Затем он использует сценарий для создания базы данных mirror copy SQLCE 3.5. Для этого я использовал хранимую процедуру sp_generate_inserts Нараяны Вьяс Кондредди, но у нее проблемы с несколькими типами данных, а также с обработкой более 4000 столбцы (удержания из SQL Server 2000 дней).

Функция «Данные сценария» выглядит так, как будто она могла бы решить мои проблемы, если бы я только мог автоматизировать ее.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 11 мая 2010

Можно автоматизировать создание сценариев для всех данных таблицы в виде операторов вставки, используя метод SMO Scripter.EnumScript. Вот код, который я придумал.

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 не записывает данные в сценарий

2 голосов
/ 12 мая 2010

Используйте утилиту командной строки my Export2SqlCE , которая создает сценарии для данных и схемы в сценарии, совместимом с SQL Compact. SMO не поддерживает синтаксис SQL Compact и преобразование типов данных.

...