пятница, 28 декабря 2012 г.

Настройка Oracle Linked server и параметр «Allow in process»


В этой стать не будет описан сам процесс настройки связанного сервера к СУБД Oracle  будет немного описана проблема, которая может возникнуть с данным связанным сервером и с параметром "Allow in Process".

среда, 28 ноября 2012 г.

Сжатие резервных копий - сравнение.


Решил сравнить несколько способов сжатия резервных копий БД-  скорость и  процент сжатия.
Для этого буду использовать несколько способов сжатия БД:

1)      Встроенное сжатие MS SQL 2008 R2

2)      Сжатие средствами архиватора 7-zip

3)      Сжатие средствами  продукта Idera SQLsafe версия 6.6.0.104
В данном тесте внимание акцентируется не на ” за сколько будет создан бекап базы данных n-го размера и за сколько она сжата”, а на процентное соотношение размера  бекапа и соотношению времени создания резервной копии, поэтому  подробное описание материальное составляющей тестового сервера не имеет смысла, скажу, что все тестирования были произведены на одном и том же виртуальном сервере с выделенным одним ядром, резервная копия создается локально, без проверки контрольной суммы.
 

среда, 21 ноября 2012 г.

Ошибка "DbProviderFactories" в Management Studio

При работе в BIDS  или в Microsoft SQL Server Management Studio может возникнуть следующая ошибка:
"The 'DbProviderFactories' section can only appear once per config  file.(System.Configuration)"

Данная ошибка обусловлена, что с файле конфигурации .NetFramework дублируется секция "DbProviderFactories"
 

понедельник, 29 октября 2012 г.

Запрос к AD из MS SQL Server

Чтобы получить в MS SQL Server данные из  Active Directory (AD) необходимо:
1) Создать  связанный сервер (Linked Server)
2) Отправить запрос в AD

пятница, 26 октября 2012 г.

среда, 29 августа 2012 г.

Кто входит в группу безопастности MS SQL

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

1) Фукнция
exeс sp_helprolemember
функция показывает полный перечень список роль БД,  учетная запись, SID учетной записи.
Недостаток : нельзя применить фильтр, хотя можно написать через временную таблицу выборку и сделать фильтр, но я сделал проще

вторник, 21 августа 2012 г.

Основы регулятора ресурсов (Resource Governor)


Регулятор ресурсов позволяет ограничить использование памяти и процессора определенным подключениям  или группе пользователей.
К примеру, на сервере есть основная база данных и второстепенная база данных, вам необходимо, чтобы пользователи подключающиеся к второстепенной базе, не использовали ресурсов более разраешенного, чтобы основые ресурсы использовались для пользователей подлючающиеся к основно базе данных. Для эти х целей как раз и создан регулятор ресурсов(Resource Governor). Данный инструмент позволяет регулировать только ресурсы памяти и процессора.

среда, 8 августа 2012 г.

Основы полнотекстового поиска MS SQL Server 2008 (Full-Text Search)


Не буду описывать, что такое полнотекстовый индекс, хотя немного можно цитатой из BOL:

“Полнотекстовые запросы выполняют лингвистический поиск в текстовых данных в полнотекстовых индексах путем обработки слов и фраз в соответствии с правилами данного языка, например английского или японского. Полнотекстовые запросы могут включать простые слова и фразы или несколько форм слова или фразы.”

Для работы полнотекстового поиска  необходимо, чтобы работала служба MSSQLFDLauncher (fdhost.exe), которая необходима для фильтрации, разбиения по словам данных из таблиц.

В отличие, от MS SQL 2005, задачи которые выполнялись службой  MSFTESQL , теперь выполняются процессом  sql server.

четверг, 26 июля 2012 г.

Секционирование (Partition) таблицы MS SQLServer


Чтобы создать секционированную таблицу или индекс, необходимо выполнить следующие шаги:

1.       Создайте функцию секционирования, чтобы указать, каким образом таблица или индекс, где используется эта функция, могут быть секционированы, т.е создать функцию разбиения данных, по каким условиям.

2.       Создайте схему секционирования, чтобы указать размещение секций функцией секционирования для файловых групп.

3.       Создайте таблицу или индекс с использованием схемы секционирования.


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

вторник, 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!

воскресенье, 19 февраля 2012 г.

Перенос таблицы в другую файловую группу MS SQL Server


Сегодня для тестирования создал таблицу, делаю с ней эксперименты, и тут я понял, что таблицу я создал в не той файловой группе, решил её перенести в другую,  заодно, и потренироваться  в переносе.  Хотя, наверное, проще создать новую таблицу, перенести данные в новую таблицу, старую удалить, новую переименовать, но не всегда такое можно в реальной жизни.
Делается это так , через удаление и создание кластерного индекса с указанием нового расположения таблицы.
К примеру, есть таблица test_tbl, расположенная в  файловой группе «PRIMARY»и  есть кластерный ключ на таблицу PK_test_tbl .
sp_help test_tbl
GO
alter table dbo.test_tbl drop constraint PK_test_tbl  with (move to second)
GO
sp_help test_tbl
  Данный скрипт показывает первоначальное расположени, затем удаление кластерного инедекса с перемещением данных в новую файловую группу "second" и отображает новые результат.
После перемещения, не забудьте заново создать заново кластерный индекс, отсюда вывод чтобы перенести таблицу в другую файловую таблицу, нужно пересоздать кластерный индекс в нужной файловой группе.

понедельник, 13 февраля 2012 г.

Автоматическая загрузка из Excel средствами SSIS- проще простого


Задача организовать периодический импорт из выгружаемых файлов Excel в таблицу MS SQL server. Старые файлы для архива необходимо оставить.

Загрузка из Excel в MS SQL Server (несколько способов)


Несколько примеров работы из MS SQL Server  с таблицами формата Excel(.xls,.xlsx):

понедельник, 23 января 2012 г.

Настройка доставки журналов MS SQL 2008 (Transaction Log Shipping). Шаг за шагом.

Доставка журналов (Transaction Log Shipping) - это один из способов резервирования данных, основанный на резервном копирование журнала транзакций и последующего автоматического восстановления их на другом сервере \инстансе MS SQL сервера.
В данной статье попробуем настроить доставку журналов, а также рассмотреть некоторые нюансы данного механизма.







понедельник, 16 января 2012 г.

Ограничить время работы заданий - джобов в MS SQL Server


У любого администратора БД есть n-е количество заданий на серверах, как минимум то 1 для обслуживания БД точно должно быть, которое вы запускаете по расписанию, когда будет минимальное влияние на обслуживание клиентов БД. Вы рассчитываете, что когда начнется основная активность, ваше задание уже не будет работать. Или, к примеру, есть какое-то задание, которое должно выполняться не более n-е количество времени  и не больше.
Как отследить за работой заданий ?! Как ограничить работу его по времени?! Как узнать, чт задание выполняется сверх нормы?! Ниже я описал как это сдлеать двумя распространёнными методами.

среда, 4 января 2012 г.

Linked Server (связанный сервер) к Mysql - проще простого


  Современные  системы  часто взаимодействуют с другими системами, БД, одна из которых MySql. Попробую описать подключение через Linked Server к MySql, хотя это довольно просто.