:: Visual Foxpro, Foxpro for DOS
Медленный запрос с MS Sql serve
Vova_ukr_lg
Автор

Сообщений: 43
Дата регистрации: 10.10.2007
Здравствуйте. После замены основного сервера на нем медленно выполняются запросы VFP к MS sql.
Возможно что с драйверами или настройками MS sql server.
На компьютере установлен Windows server 2012 r2 standart.
на него сначала установили SQL server 2017 developer и запросы выполнялись нормально( возможно ошибаюсь), но т.к. не рботали корректно внешние объекты через advantage, sql server переустановили на ms sql 2012(11.0.2100).

Запускаю на этом сервере следующие команды
tcDataBase = 'sls_new'
tcServer='192.168.1.1'
lcPassword='111'
lcDriver = 'Sql server'
*lcDriver = 'Sql server native client 11.0'
hConn = SQLSTRINGCONNECT('UID=sa;PWD='+lcPassword+';DRIVER='+lcDriver+';SERVER='+tcServer+';APP=Microsoft Visual FoxPro;DATABASE='+tcDataBase+';LANGUAGE=русский')
lnRes=0
lcsql = "select * "+;
" FROM [sls_new].[dbo].contragent"
lnRes=SQLEXEC(hConn,lcsql ,"curCurrentID")
SQLDISCONNECT(hConn)

Происходит подключение и выполняется выборка данных, но очень медленно, в таблице около 15к записей. меняю адрес сервера на тестовый и запускаю - ситуация аналогичная. Если этот же скрипт запустить на тестовом компьютере и подключатся к тестовой базе и к базе на новом сервере - выполняется с нормальной скоростью. Проверял с драйверами "Sql server" и "Sql server native client 11.0", но результат одинаковый. в чем может быть причина?
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
1. Какие протоколы доступны на сервере и клиенте?

2. Что видно в профайлере, на какой стадии происходят тормоза.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
Vova_ukr_lg
Автор

Сообщений: 43
Дата регистрации: 10.10.2007
возможно не понял по протоколами
протоколы для MSSQLSERVER:
общая память - включено
именованны каналы - включено
TCP/IP - включено
в native client также включены перечисленные выше.

в профайлере
выполняется
exec [sys].sp_datatype_info_100 1
exec [sys].sp_datatype_info_100 12
exec [sys].sp_datatype_info_100 -2
exec [sys].sp_datatype_info_100 -3
а после этого мой запрос выполняется и на нем висит, но и само подключение к SQL необычно долго 2-3 секунды. выполнение делалось на компьютере на котором установлен ms sql server
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
1. Сервак виртуальный или железный? DNS настроен?

2. Определение таблицы приведите.

3. Duration запроса какой?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
Vova_ukr_lg
Автор

Сообщений: 43
Дата регистрации: 10.10.2007
1. Железный, dns - не прописывался.
2. Таблица
CREATE TABLE [dbo].[contragent](
[id] [int] IDENTITY(0,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[Id_org] [int] NULL,
[id_worker] [int] NULL,
[id_user] [int] NULL,
[categoriya] [int] NOT NULL,
[city] [int] NOT NULL,
[region] [int] NOT NULL,
[addr] [int] NOT NULL,
[house] [nchar](10) NULL,
[mikrodep] [int] NULL,
[direct] [int] NOT NULL,
[n_org_gob] [numeric](10, 2) NULL,
[n_user_gob] [int] NULL,
[n_worker_gob] [int] NULL,
[cod] [nchar](10) NULL,
[lat] [nvarchar](20) NULL,
[lot] [nvarchar](20) NULL,
[KOATUU] [varchar](10) NULL,
[id_corporation] [int] NULL,
[id_TRT] [int] NULL,
CONSTRAINT [PK_contragent] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
3. В запросе
select TOP 10 * FROM [sls_new].[dbo].contragent
. В таком виде в профайлере при запуске из sql management studio duration=1 reads=2. Запускаю такой запрос из FoxPro, reads=2 duration=0, но в момент отключения выдает reads=292 и duration=30000
Прикрепил скриншоты профилировщика.
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
1. БД поднималась их BackUp-a или БД и табличка создавалась с "нуля" на MSSQL 2012?

2. Какой уровень совместимости БД 80,90,100,...

3. Время тратится на выполнение sp_datatype_info_100


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 14.04.20 08:39
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
Vova_ukr_lg
Автор

Сообщений: 43
Дата регистрации: 10.10.2007
1. Из BackUp
2. Совместимость SQL Server 2012(110)

Но проблема скорее всего не в MS SQL на основном сервере, а что-то с драйверами или чем-то другим блокирующем запрос из Visual FoxPro.
При запуске этого запроса на основном сервере(на котором проблема), но с адресом sql server на тестовый - проблема остается. Если же скрипт запустить на тестовом сервере, но с подключением к базе на основном(на котором проблема), то запрос выполняется нормально.
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Ну создай табличку руками перелей туда данные и сделай выборку, будет разница или нет.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
Vova_ukr_lg
Автор

Сообщений: 43
Дата регистрации: 10.10.2007
создал отдельную базу, в ней создал таблицу и залил записи.
запускаю скрипт, с момента запуска и до установления подключения - 3 сек, после на выборку 10 записей уходит около 12сек.
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Vova_ukr_lg

протоколы для MSSQLSERVER:
общая память - включено
именованны каналы - включено
TCP/IP - включено
в native client также включены перечисленные выше.

создал отдельную базу, в ней создал таблицу и залил записи.
запускаю скрипт, с момента запуска и до установления подключения - 3 сек, после на выборку 10 записей уходит около 12сек.

В строке подключения вместо DNS имени поставить IP-адрес.
Оставить протоколы на сервере и клиенте TCP/IP - включено

остальные выключить
общая память
именованны каналы


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 15.04.20 09:21
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
alextash

Сообщений: 2281
Откуда: НСК
Дата регистрации: 03.05.2006
А если запрос выполнить на самом сервере?
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
Vova_ukr_lg
Автор

Сообщений: 43
Дата регистрации: 10.10.2007
alextash
А если запрос выполнить на самом сервере?

запрос на сервере как раз и не работает, т.е. запускается из foxpro, но на машине сервере. в sql management studio - работает
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
pap

Сообщений: 69
Откуда: Уральск
Дата регистрации: 14.01.2006
Похожая проблема.
Первый запрос к SQL после Загрузки VFP
выполняется очень долго.
Потом этот же запрос выполняется нормально.
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
1. select @@version

2. Обновить статистику по таблицам

3. План запроса "Первый запрос к SQL после Загрузки VFP" в xml-формате "в студию".

4. Сервер при первом запуске компилирует и строит план запроса, на это уходит время.

При последующих запросах используется уже готовый план/планы.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
pap

Сообщений: 69
Откуда: Уральск
Дата регистрации: 14.01.2006
версия Microsoft SQL Server 2014 - 12.0.2000.8 (Intel X86) Feb 20 2014 19:20:46 Copyright (c) Microsoft Corporation Express Edition on Windows NT 6.1 <X64> (Build 7601: ) (WOW64)
Прикрепил надеюсь это то о чём вы говорили.
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
pap

Сообщений: 69
Откуда: Уральск
Дата регистрации: 14.01.2006
При Сохранение плана запроса вышло сообщение - нет индекса по полю в данном случае "DATAR"
Создал индекс по полю
В VFP стало работать нормально.
Попробовал несколько раз. Выход из VFP,Вход в VFP, подключение, выполнить программу.
Может в отсутствие индекса была проблема.
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
pap
При Сохранение плана запроса вышло сообщение - нет индекса по полю в данном случае "DATAR"
Создал индекс по полю
В VFP стало работать нормально.
Попробовал несколько раз. Выход из VFP,Вход в VFP, подключение, выполнить программу.
Может в отсутствие индекса была проблема.

Да, у тебя запрос вида

SELECT * FROM [rlarhiv] WHERE [datar]=@1

1. серверу не хватает индекса по datar, поэтому он был вынужден сканировать всю таблицу (кластерный индекс).

2. Теперь, что бы избежать Nested Loop, необходимо создать индекс вида

CREATE INDEX datar ON rlarhiv (datar) INCLUDE ( id_key, tn, mo, vo, dni, tim, tim, sm, prizn, id_doc, ddata, koduser, id_sr )

3. Ну и дату лучше передавать в универсальном виде yyyymmdd (сегодняшняя выглядит так '20200422')


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)




Исправлено 1 раз(а). Последнее : PaulWist, 22.04.20 09:38
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
pap

Сообщений: 69
Откуда: Уральск
Дата регистрации: 14.01.2006
Спасибо!
Ratings: 0 negative/0 positive
Re: Медленный запрос с MS Sql serve
Vova_ukr_lg
Автор

Сообщений: 43
Дата регистрации: 10.10.2007
Всем спасибо за помощь, сегодня по ряду других причин пришлось переустановить систему. Данный вопрос закрылся после переустановки, остались вопросы другого плана, но это уже по настройке Windows.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 18 (Гостей: 18)

© 2000-2024 Fox Club 
Яндекс.Метрика