четверг, 21 февраля 2008 г.

AnjLab

Свершилось, наконец-то мы нашли время и силы, с сделали сайт нашей команды - AnjLab.com. Все тексты - моих рук дело, если где-то заметите пропущенные ляпы - пишите, буду премного благодарен.



Нам результат нравиться, хотя он и не сильно похож на интернет-визитки небольших компаний, но и не было цели сделать его похожим. Не было цели сделать сайт, предназначенный только для потенциальных заказчиков (а то видел я один такой - сначала немного о том, какие они хорошие, а ниже, прямо на первой странице, расценки на разные виды разработок). А что же было:


  • Желание самовыразиться. Создать контент, который бы нравился нам самим, который можно было бы показывать всем друзьям-знакомым со словами "вот мы".

  • Желание для самих себя подвести некоторые итоги - что мы, где мы, зачем.

  • Желание поиграться с CMS Drupal, на которой работает сайт, пригодится в будущем. Кстати, Drupal оказался действительно мощной штукой, рекомендую.


Вот такой бэкграунд и такой сайт. Объявили внутри себя конкурс на лучгий логотип. Так что, то что сейчас на сайте, вероятно, не окончательная версия.

четверг, 7 февраля 2008 г.

Классная американская поговорка: «Доллар тому, кто придумал, десять тому, кто сделал, сто тому, кто продал». Отражает суть вещей…

среда, 6 февраля 2008 г.

Установка\обновление базы из командной строки

Если исзодники базы хранятся как набор скриптов (schema, procedures, functions, etc), то процедура инсталляции заключается в последовательном их запуске. Можно это сделать из командного файла, используя утилиты командной строки (osql для SQL Server). Файл будет выглядеть примерно так:


@echo off
set OSQLPASSWORD=yourpassword
set server=.\sqlexpress
set user=sa
svn up
for /f "tokens=*" %%a in ('dir /b triggers\*.sql') do osql -S %server% -U %user% -i triggers\%%a
for /f "tokens=*" %%a in ('dir /b procedures\*.sql') do osql -S %server% -U %user% -i procedures\%%a
for /f "tokens=*" %%a in ('dir /b functions\*.sql') do osql -S %server% -U %user% -i functions\%%a




Здесь предполагается что объекты разных типов находятся в разных каталогах. svn up берет последнюю версию из репозитория Subversion.

Создание индексов на поля, используемые в foreign keys в SQL Server

Рекомендуется индексировать поля, которые используется для построения отношений между таблицами (foreign keys). Однако, вручную следить за актуальностью набора индексов довольно муторно, ниже скрипт (для SQL Server 2005), который проверяет наличие индексов на все поля, задействованные в foreign keys и досоздает отсутствующие.


DECLARE ForeignKeys CURSOR FOR
select fk.name as fkname, so.name as tabname, c.name as colname
from sys.foreign_keys fk
inner join sys.objects so on so.object_id = fk.parent_object_id
inner join sys.foreign_key_columns fkc on fkc.constraint_object_id = fk.object_id
inner join sys.columns c on c.object_id = fkc.parent_object_id and c.column_id = fkc.parent_column_id

DECLARE @fkname nvarchar(255), @tabname nvarchar(255), @colname nvarchar(255), @sql nvarchar(max)

OPEN ForeignKeys
FETCH NEXT FROM ForeignKeys INTO @fkname, @tabname, @colname
WHILE @@FETCH_STATUS = 0
BEGIN
IF not exists (select * from sys.indexes where name = N'IX_' + @tabname + N'_' + @colname)
BEGIN
BEGIN TRY
SET @sql = N'CREATE NONCLUSTERED INDEX IX_'+ @tabname + N'_' + @colname + N' ON ' + @tabname + N'(' + @colname + N' ASC)'
EXEC sp_executesql @sql
print N'Index ' + N'IX_' + @tabname + N'_' + @colname + N' is successfully created'
END TRY
BEGIN CATCH
print N'Error while creating index: ' + N'IX_' + @tabname + N'_' + @colname
END CATCH
END
FETCH NEXT FROM ForeignKeys INTO @fkname, @tabname, @colname
END

CLOSE ForeignKeys
DEALLOCATE ForeignKeys