Можно ли автоматизировать SSMA для миграции баз данных Access на SQL Server 2005? - PullRequest
1 голос
/ 20 октября 2008

Мне нужно перенести базы данных Access в SQL Server 2005. Поскольку это нужно сделать изнутри установки, чтобы установка клиента была прозрачно перенесена в SQL Server 2005, мне интересно, возможно ли автоматизировать инструментарий SSMA из Microsoft.

Ответы [ 2 ]

1 голос
/ 10 декабря 2008

На самом деле SSMA имел интерфейс командной строки (специальный исполняемый файл консоли в папке установки SSMA). Это было доступно в какое-то время, но я не уверен, пробился ли он до последнего выпуска. Вы должны пропинговать поддержку SSMA о том, какие версии были и какие примеры их использования доступны. Я надеюсь, что это поможет вам.

1 голос
/ 20 октября 2008

Насколько мне известно, такая автоматизация недоступна. Но вы все еще можете сгенерировать код SQL, который создает базу данных (тот, который будет начинаться с предложения «CREATE DATABASE»), и запустить его через ваш пользовательский интерфейс на вашем сервере SQL.

Чтобы сгенерировать этот код, вы можете

  1. Создание базы данных доступа с помощью инструментария Access
  2. Создание соответствующего кода SQL «CREATE DATABASE» с помощью (например) SQL Server Management Studio (щелкните правой кнопкой мыши базу данных, выберите «база данных сценариев как CREATE». EMS SQL Studio предлагает очень хорошую альтернативу SQL Server Management Studio
  3. Сохраните код для дальнейшего использования

С помощью EMS Studio вы даже можете решить, обновляет ли этот код данные. Но я бы предпочел автоматизировать передачу данных с помощью кода: вы можете, например, просматривать таблицы (в правильном порядке, в зависимости от отношений), открывать наборы записей (один локальный, один SQL) и передавать данные, просматривая поля (вы делаете даже не нужно их называть) с кодом вроде:

(localRecordset links to local table. can be DAO or ADODB; Adjust code accordingly)
(sqlRecordset links to the SQL server. can be DAO or ADODB; Adjust code accordingly)

localRecordset.moveFirst

Do while not localRecordset.EOF
    sqlRecordset.addnew
    For each field in localrecordset.fields
        sqlRecordset.fields(field.name).value = field.value
    Next field
    sqlRecordset.update
    localRecordset.moveNext
Loop
...