Переключение базы данных на 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.
  • Установите значение переменной 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 -- игнорируем 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'Выполнено: ' + @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.