Как я могу написать сценарий базы данных MS SQL Server с надлежащим объектным упорядочиванием?

Разница между созданием объекта и созданием массива заключается в следующем:

  • нормальные классы имеют вызываемые конструкторы.
    • Скобки в new ArrayList<String>() указывают на вызов конструктора.
    • Даже если конструктор не имеет аргументов, круглые скобки должны присутствовать (так же, как в вызове метода без параметров).
  • классы массивов, с другой стороны, не имеют конструктора
    • Хотя массивы являются объектами, их классы создаются JVM и поэтому подлежат специальной обработке, которую другие классы не могут иметь
    • ]
    • Инициализация массива происходит как побочный эффект команд байт-кода anewarray, multianewarray и newarray.

То, что у классов массивов нет конструкторов, можно продемонстрировать, выполнив

System.out.println(int[].class.getConstructors().length);

, который возвращает 0.


В конце концов, это сводится к решениям, которые разработчики языков приняли более 20 лет назад, и на которые повлияло решение по проектированию из других существующих языков (например, C ++).

5
задан Ian Suttle 17 March 2009 в 08:28
поделиться

4 ответа

Мы используем это для создания сценариев дб, я должен был бы увеличить его снова, чтобы гарантировать, что это создает иждивенцев объектов сначала..., но у меня еще не было проблемы. http://www.red-gate.com/products/SQL_Compare/index.htm

2
ответ дан 14 December 2019 в 19:26
поделиться

Lecter имеет хороший подход. Можно связать эти сценарии с помощью powershell сценария (или другой язык)

запустите скрипт:

PS builddir:\> .\buildsql.ps1 -currentbuilddir "C:\Documents and Settings\sam\My Documents\svn\ticketing" -buildfile "sqlbuild.sql" -teardownfile
"teardown.sql"

сценарий powershell:

param($currentbuilddir,$buildfile1,$teardownfile)

new-psdrive -name builddir -PSProvider filesystem -Root (resolve-path $currentbuilddir)

cd builddir:

rm $buildfile1
rm $teardownfile


Get-item Scripts_Build_1* | ForEAch-object {cat $_ >> $buildfile1; "GO --SYSTEM INSERTED GO--------------" >> $buildfile1} 

Get-item Scripts_Build_3* | ForEAch-object {cat $_ >> $teardownfile; "GO --SYSTEM INSERTED GO------------" >> $teardownfile} 

Здесь, я удаляю файл типа "build" и разъединяю файлы - я на самом деле работал над применением sql собственное шифрование к базе данных, таким образом, разрушение не может быть применимым. У меня были все свои сценарии в одном каталоге, таким образом, Вам, возможно, придется изменить этот сценарий, чтобы сделать некоторую рекурсию, я буду думать.

0
ответ дан 14 December 2019 в 19:26
поделиться

Мой ответ будет немного сложным, и он работает, только если Вы пишете сценарий своей всей базы данных (т.е. сохраните все в сценариях SQL). То, что мы сделали в крупном проекте, было, организуют сценарии в следующую структуру:

  • _ddl: содержит изменения таблицы, такие как новые столбцы, индексы, отношения и т.д.
  • _fn: сохраненные функции
  • _prc: хранимые процедуры
  • _static: очевидно, "статические данные" или данные, которые должны быть в базе данных по развертыванию
  • _tab: таблицы (создают сценарии),
  • _trg: триггеры
  • _views: сценарии представления

Имена папок являются, конечно, нашим случайным выбором, можно всегда располагать вещи по-другому. После этого мы создали сценарий пакетной обработки для слияния всех тех файлов в единственном SQL в следующем порядке:

  • _tab
  • _ddl
  • _trg
  • _views
  • _fn
  • _prc
  • _static

Ключевой прием должен записать Ваши сценарии способом, они могут быть выполнены тысячу раз. Это означает: отбросьте свои процедуры перед созданием их проверьте, существует ли таблица прежде, чем создать его, проверьте, существует ли строка прежде, чем включить его статичный и т.д.

Это не прекрасно, но это сделало задание.

2
ответ дан 14 December 2019 в 19:26
поделиться

Можно попробовать Объект xSQL по http://www.xsqlsoftware.com/Product/Sql_Schema_Compare.aspx, который Он работал отлично для меня. Сценарий создается в правильном порядке каждый раз, когда это возможно (существуют случаи, где сгенерированный сценарий не может быть выполнен непосредственно, но в большинстве случаев это работает),

0
ответ дан 14 December 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: