Переключение базы данных на 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.