Переключение базы данных на microsoft SQL server

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

  • Скачайте и установите последнюю версию JDBC-драйвера для Microsoft SQL Server. В момент написания этого документа драйвер можно взять на странице http://msdn.microsoft.com/data/jdbc/.

  • Скопируйте файл sqljdbc4.jar в подпапку /jar установочной папки SberMobile Server.

  • В Настройках Общей Конфигурации установите значение переменной SberMobile Server'а Database Driver на com.microsoft.sqlserver.jdbc.SQLServerDriver. Это имя Java-класса для драйвера Microsoft SQL Server.

  • Формат переменной Database URL для Microsoft SQL Server имеет следующий вид: jdbc:sqlserver://[serverName[instanceName][:port]][;property=value[;property=value]], где jdbc:sqlserver:// является константой и описывает подпротокол, serverName - DNS-имя или IP-адрес сервера (может быть locahost), instanceName - имя экземпляра сервера на удаленной машине (если не указано, то используется экземпляр по умолчанию), portNumber - номер порта для подключения (1433 по умолчанию). Например, если Ваш Microsoft SQL Server запущен на 192.168.0.1, на порту по умолчанию, используйте следующий URL для подключения к экземпляру по умолчанию: jdbc:sqlserver://192.168.0.1:1433. Можно также пропустить порт по умолчанию и использовать в качестве URL такую строку: jdbc:sqlserver://192.168.0.1.

  • Пара свойств и значенийtrustServerCertificate=trueвключена по умолчанию. Если требуются другие стратегии безопасности, обратитесь к документации по драйверу Microsoft SQL Server JDBC Driver.

  • Установите значение переменной Database Dialect в SQLServerDialect.

Настройка собственной аутентификации

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

  • Загрузите и установите последнюю версию библиотеки sqljdbc_auth.dll с сайта Microsoft.

  • Поместите sqljdbc_auth.dll в папку, путь которой определен опцией java.library.path JVM.

  • Используйте предыдущий пример URL, просто добавив  параметр IntegratedSecurity: IntegratedSecurity=true.

Пример: jdbc:sqlserver://192.168.0.1:1433;IntegratedSecurity=true

Настройка аутентификации домена

Драйвер JDBC сервера Microsoft SQL не позволяет использовать аутентификацию доменов. Для того, чтобы редактировать подключения сервера Microsoft SQL, используя ваши доменные регистрационные данные, сделайте следующее:

  • Загрузите последнюю версию jTDS JDBC Driver. В процессе написания, она доступна на сайте http://jtds.sourceforge.net/.

  • Поместите jtds-X.X.X.jar в подпапку /jar папки установки SberMobile Server.

  • Установите Database Driver в Настройки общей конфигурации SberMobile Server на net.sourceforge.jtds.jdbc.Driver.

  • Настройка Database URL имеет следующий формат: jdbc:jtds:sqlserver://[serverName[instanceName][:port]];domain=domainValue;user=userValue;password=passwordValue[;property=value[;property=value]], где часть jdbc:jtds:sqlserver:// известна как подпротокол и является постоянной, serverName является именем DNS или IP-адресом сервера для подключения (может быть locahost), instanceName является экземпляром для подключения к serverName (если не определен, совершается подключение к экземпляру по умолчанию), portNumber является портом для подключения к serverName (По умолчанию – 1433).

Пример: jdbc:jtds:sqlserver://192.168.0.1:1433;domain=COM;user=admin;password=pass

Для успешной аутентификации с использованием jTDS драйвера, SberMobile Server должен работать на  Windows-машине, включенной в домен.

Настройка сервера microsoft SQL

Для поддержания производительности сервера Microsoft SQL на определенном уровне необходимо:

  • Определить фактор заполнения для индексов

  • Настроить сжатие таблицы и индекса

Рекомендуется определить значение фактора заполнения – 70. Для этого откройте Microsoft SQL Server Management Studio и:

1. Нажмите на подключение к базе данных.

2. Выберите Свойства в конце списка.

3. Нажмите на страницу Настройки Базы данных слева под Свойства сервера.

4. Укажите 70 в качестве значения фактора заполнения индекса по умолчанию.

Необходимо сделать это перед первым запуском SberMobile Server, потому что конфигурация, описанная выше, применяется только к новым индексам (т.е. только что созданным таблицам).

Однако, есть возможность изменения опции фактора заполнения для уже созданных индексов. Сделать это можно несколькими способами:

http://technet.microsoft.com/en-us/library/ms177459(v=sql.110).aspx

Все советы производят один и тот же эффект – реорганизацию индексов с новым значением фактора заполнения.

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

Используйте следующий скрипт для поддержания фрагментации индекса на нужном уровне. Например, создайте Агент сервера Microsoft SQL для запуска скрипта планировщиком.

USE ag;

GO

SET NOCOUNT ON;
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @partitioncount bigint;
DECLARE @schemaname nvarchar(130);
DECLARE @objectname nvarchar(130);
DECLARE @indexname nvarchar(130);
DECLARE @partitionnum bigint;
DECLARE @partitions bigint;
DECLARE @frag float;
DECLARE @command nvarchar(4000);
DECLARE @dbid smallint;

-- Choose indexes with fragmentation level more than 10%
-- Define current database
SET @dbid = DB_ID();
SELECT
    [object_id] AS objectid,
    index_id AS indexid,
    partition_number AS partitionnum,
    avg_fragmentation_in_percent AS frag, page_count
INTO #work_to_do
FROM sys.dm_db_index_physical_stats (@dbid, NULL, NULL , NULL, N'LIMITED')
WHERE avg_fragmentation_in_percent > 10.0  
AND index_id > 0 -- ignore heap

-- Declare a cursor for a processing partitions' list.
DECLARE partitions CURSOR FOR SELECT objectid,indexid, partitionnum,frag FROM #work_to_do;

OPEN partitions;

-- Loop by partition 
WHILE (1=1)
BEGIN

FETCH NEXT
FROM partitions
INTO @objectid, @indexid, @partitionnum, @frag;

IF @@FETCH_STATUS < 0 BREAK;
SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)
FROM sys.objects AS o
JOIN sys.schemas AS s ON s.schema_id = o.schema_id
WHERE o.object_id = @objectid;

SELECT @indexname = QUOTENAME(name)
FROM sys.indexes
WHERE object_id = @objectid AND index_id = @indexid;
SELECT @partitioncount = count (*)
FROM sys.partitions
WHERE object_id = @objectid AND index_id = @indexid;

-- 30% is limit for index rebuilding  
IF @frag < 30.0
    SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE';

IF @frag >= 30.0
    SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD';

IF @partitioncount > 1
    SET @command = @command + N' PARTITION=' + CAST(@partitionnum AS nvarchar(10));

EXEC (@command);
PRINT N'Executed: ' + @command;
END;

CLOSE partitions;
DEALLOCATE partitions;

-- delete temporary table
DROP TABLE #work_to_do;
GO

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

Также рекомендуется включить сжатие страницы для таблицы ag_properties. Для дополнительной информации смотрите http://msdn.microsoft.com/en-us/library/hh710070.aspx.