Статьи

Это * должно * быть так просто

… опубликовано :

Когда речь заходит о базах данных, иногда нам просто приходится работать с тем, что у нас есть, и надеяться, что в будущем это станет лучше. Например, иногда вы можете использовать только Microsoft Access. Теперь Access не был предназначен для питания веб-сайтов. Он хорошо работает для небольших веб-сайтов, но быстро становится неуправляемым несколькими способами:

  • Когда доступ к базе данных Access осуществляется через веб-сайт, он блокируется, что делает практически невозможным перезапись, если вам необходимо загрузить изменения в базу данных.
  • Если пользователи взаимодействуют с вашим сайтом, вы должны быть уверены, что не потеряете данные при внесении структурных изменений в базу данных. Это означает внесение изменений на вашем компьютере разработчика, загрузку текущей версии с вашего веб-сайта и прочесывание базы данных, чтобы убедиться, что вы добавили и изменили все нужные столбцы и таблицы, затем убедитесь, что данные сохраняются, а затем нарушаете заблокируйте файл Access (обычно путем изменения DSN), затем загрузите новую базу данных … (Да, это грязно.)
  • База данных Access гораздо более ограничена по числу одновременных пользователей, которых она может поддерживать, и как только она достигнет определенного размера, вы увидите серьезные проблемы с производительностью.

Таким образом, в какой-то момент переход на реальный сервер базы данных станет необходимостью для многих быстро растущих сайтов. Для пользователей Access часто выбирают SQL Server, поскольку невероятно легко перемещать данные между Access и SQL Server, используя Data Transformation Services.

Теперь, на выходных, я оказался в положении необходимости переносить базу данных для сайта с Access на SQL Server. Это было проще, чем я думал. Вот все, что я должен был сделать:
[list = 1] [*] Создайте базы данных SQL Server: одну для тестирования, другую для производства. [*] Создание источников данных ODBC [*] Экспорт данных из Access в тестовую базу данных [*] Измените мою переменную DSN в моем файл application.cfm [*] Измените любые функции Now () в моих запросах на функции GetDate (). [*] Протестируйте код на поддомене сайта [*] Загрузить новый код [/ list] В общем, это может Это заняло два или три часа, потому что мне нужно было найти копию Enterprise Manager, которую я мог бы использовать с удаленным хостом. К счастью для тех из нас, кто постоянно обанкротился, вы можете загрузить пробную версию SQL Server и получить не истекающую версию Enterprise Manager. (См. Ссылку на ветку выше.) Как только я это получил, все остальное было просто. 🙂

Так что, действительно, единственное изменение уровня приложения, которое я должен был сделать, — это имя DSN и функция текущей даты в моих запросах. Функция текущей даты может быть решена несколькими способами:

1. Установив переменную с именем «NowFunction» (или как угодно), равную имени функции, необходимой для текущей базы данных:

[left]INSERT INTO myTable ( date_added ) VALUES ( #NowFunction# )[/left] [left]INSERT INTO myTable ( date_added ) VALUES ( #NowFunction# )[/left]

[left]INSERT INTO myTable ( date_added ) VALUES ( #NowFunction# )[/left] [left]INSERT INTO myTable ( date_added ) VALUES ( #NowFunction# )[/left]

2. Используя функцию ColdFusion Now () для вставки даты:

INSERT INTO myTable ( date_added ) VALUES ( #Now()# ) INSERT INTO myTable ( date_added ) VALUES ( #Now()# ) INSERT INTO myTable ( date_added ) VALUES ( #Now()# )

И всегда проверяйте все полностью в среде тестирования, прежде чем развертывать его. И это все, что я должен сказать. На данный момент…

(Примечание: вышеприведенные блоки кода не работают должным образом. Я сообщу парням из SP, чтобы они могли проверить это.)