среда, 18 июля 2012 г.

Мониторинг зеркалирования (Mirroring)


Мониторинг зеркалирования(Mirroring) и оповещения о проблемах с ним возможно реализовать несколькими способами.

вторник, 17 июля 2012 г.

VBS: Создание папки пользователя и предоставление прав


Необходимо было автоматизировать создание папки пользователя на сетевом ресурсе и  предоставить права на запись. Ниже предоставлен скрипт создания папки пользователя на сетевом каталоге и предоставление прав ни  запись.

среда, 27 июня 2012 г.

Размер всех баз данных MS SQL сервера

   Использование sp_spaceused на экземпляре MS SQL Server-е, когда на сервере находится довольно много баз данных не очень удобно, и получается не информативно, да и иногда хочется получить результат одной строкой, чтобы, например, результат записать в таблицу.

четверг, 21 июня 2012 г.

Step by step: Настройка репликации транзакций


Репликация - это механизм распространения данных из основной базы данных(издатель) к базам данным- подписчикам. MS SQL Server имеем несколько видов репликаций, одна из них репликация транзакций, которую и будем настраивать .

суббота, 9 июня 2012 г.

Step By Step: Настройка зеркального отображения БД в MS SQL Server (Mirroring)

Один из способов сделать вашу базу данных более доступной, а так же сохранить данные, является технология зеркалирование (Mirroring).

Данная технология появилась в MS SQL 2005 версии и была продолжена в MS SQL 2008, MS SQL2008R2, доступна в редакция Standart и Enterprise, в качестве свидетеля могут выступать редакции Express и Workgroup.
Ниже описывается метод без свидетеля и в домене Windows, экземпляры MS SQL Server работают под доменной учетной записью.


среда, 30 мая 2012 г.

VBS: скрипт для управления файлами резервных копий

   Согласно плану по резервному копированию одним  или двумя файлами  резервной копии не отделаться, нужно несколько копий, с запасом , а еще нужно следить , чтобы этих файлов было приемленное колличество, т.к место все таки ограниченно. А еще , к примеру в Mysql, делая резервные копии, например, с помощью Mysql Administrator нужно старые копии удалять.
Для этих целей я написал .vbs  скрипт, который решает несколько проблем:
1) Удаляет старые резервные копии файлов по дате
2) Следит и не удалит, при достижение минимального колличества файлов резервной копий
3) В одном скрипте можно описать все нужные каталоги сервера  для удаления старых файлов
4)В каталоге с резерными копиями могут находится и другие файлы, скрипт их не затронет

вторник, 15 мая 2012 г.

Запуск xp_cmdshell с правами без sysadmin


Чтобы запускать хранимую процедуру xp_cmdshell, нужно иметь разрешения CONTROL  SERVER на сервер, т.е быть в роли sysadmins. Пользователям MS SQL Server-а, которые не входят в данную роль, предоставить права  на выполнение данной процедуры  будет мало только дать права на выполнение данной процедуры, но и нужно создать учетную запись-посредник для процедуры xp_cmdshell.

четверг, 19 апреля 2012 г.

Узнать права у логина на объекты MS SQL сервера

  Как-то дали учетной записи права на выборку из некоторых таблиц БД, учетная запись уже была в БД, но, как оказалось, эта учетная запись уже имела выборку на все таблицы БД, но откуда они шли  из графической оболочки Management Studio не сразу смогли вычислить – смотрел права на таблицы, на роль db_datareader и другие объекты, но как оказалось, права шли с прав на БД, а в графическом интерфейсе Management Studio просто забыли их посмотреть, в конце концов вычислил их через функции безопасности  ms sql server-а и решил законспектировать данный пункт, чтобы лучше запомнить.

  Итак, узнать права  учетной записи можно несколькими способами, приведу их примеры:

вторник, 3 апреля 2012 г.

Off Topic: О работе MS SQL в кластере

    Сейчас нахожусь в поиске работы, приходиться ходить по собеседованиям.
Как на одном собеседование сказали, что вот у них есть система OLTP  на базе MS SQL Server-а, система бронирования билетов, они хотя получить от администратора , советы как увеличить производительность, как пример, организовав кластер MS SQL. Что я могу сказать?! Думаю, сначало нужно изучить теорию, как работает MS SQL в кластере, прежде чем такое говорить .
Кластер MS SQL это не средство увеличения производительности, а средство повышения отказоустойчивости. В кластере экземпляр файлов БД  один, и с ним может работать только один инстанс ms sql-я, независимо от сколько нод в вашем кластере.

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

вторник, 27 марта 2012 г.

Оператор DML MERGE в MS SQL SERVER 2008

На днях все таки применил оператор DML  MERGE, довольно сложный для первоначального понимания, но удобен и есть свои преимущества, если его освоить.
Данный оператор был введен в MS SQL  с версии 2008  в дополнение к сущеcтвующим инструкциям DML. Вкратце, его назначение - это применение нескольких инструкций на основание нескольких операторов сравнения, более подробно в первоисточнике -http://msdn.microsoft.com/ru-ru/library/bb510625.aspx

Попробую его описать на моем примере, т.к довольно трудно его понять сразу:

merge  dbo.INCAS_GRAF as t
using (select a.recid,a.ID,t.graf
 from dbo.temp_graf t inner join ATM a on t.idterminal=a.ID
 )  as s
 on (t.ParentLink_RecID=s.recid)
when matched
 then update set       t.Graf=s.graf,t.LastModDateTime=getdate(),t.LastModBy='admin'
when not matched by target
 then  insert (RecId,LastModDateTime,LastModBy,CreatedDateTime,CreatedBy,ParentLink_RecID,GRAF)
 values(NEWID(),GETDATE(),'admin',Getdate(),'admin',s.recid,s.graf);

что он делает по шагам:
1) merge  dbo.INCAS_GRAF as t -устанавливает, с какой таблицой будут действия(update, insert, delete), в BOL  описана как таблица TARGET, т.е цель
2) (select a.recid,a.ID,t.graf
 from dbo.temp_graf t inner join ATM a on t.idterminal=a.ID
 ) - устанавливает 2-ю таблицу - SOURCE
3) (t.ParentLink_RecID=s.recid) - устанавливает связь двух таблиц
4)when matched   -описание действий при совадение строк, в моем случае это UPDATE
5)when not matched by target   -описание действий со строками которых нет в TARGET,   но есть в SOURCE, точнее в том случае если есть строки, которых нет в TARGET.  В моем примере, это вставка новых строк в таблицу TARGET.

Вот и все, при выполнения данного запроса, если проанализировать план его выполнения, то он будет намного приятным, если мы бы выполняли данные операции отдельно, что довольно хорошо отразится на операциях с I\O.
Еще полезное, возможность применения аргумента OUTPUT, что позволяет нам получить все данные, которые были изменены\вставлены.

Enjoy it!