Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Особенности SQL2005 по сравнению с SQL2000 (+линк из Oracle)  [new]
luigi
Member

Откуда: СССР (РФ-ЛНР)
Сообщений: 392
Добрый день.

Имеем OLTP систему на
Microsoft SQL Server 2000 - 8.00.2282 (Intel X86)   Dec 30 2008 02:22:41 
Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 
плюс OLAP к ней
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

При тестировании перехода на
Microsoft SQL Server 2005 - 9.00.5000.00 (Intel X86)   Dec 10 2010 10:56:29 
Copyright (c) 1988-2005 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 

получаем ошибку в одной из процедур
ORA-28500: connection from ORACLE to a non-Oracle system returned this
message:
[Generic Connectivity Using OLEDB_SQL](pICommand->Execute:rc=-2147467259):Extended = Unspecified error

Пишу в эту ветку потому, что в EventViewer на сервере с MSSQL2005 при каждом вызове получаю ошибку:
A user request from the session with SPID 67 generated a fatal exception. SQL Server is terminating this session.
Contact Product Support Services with the dump produced in the log directory.
, т.е. выполнение процедуры прерывается явно на стороне MSSQL.

В процедуре PL/SQL идет вызов динамического SQL -
EXECUTE IMMEDIATE .. USING fInt, fStr, fDate, fFloat;
, где в запрос в качестве параметров передаются целое, строка, дата и вещественное соответственно. Опытным путем установлено, что ошибка возникает при передаче строкового параметра, т.е. если жестко прописать значение параметра fStr в тексте EXECUTE все проходит на ура. Нет проблем с передачей параметров даты, целых и вещественных чисел. Запрос без динамики к обоим серверам (2000 & 2005) из QA и из самого Oracle выполняется без ошибок и возвращает требуемые данные.
Собственно вопрос - в чем может быть особенность обработки строкового параметра динамического запроса для MSSQL2005 по сравнению с MSSQL2000?

Буду благодарен любой помощи.
Спасибо.
14 июн 13, 12:48    [14433219]     Ответить | Цитировать Сообщить модератору
 Re: Особенности SQL2005 по сравнению с SQL2000 (+линк из Oracle)  [new]
Glory
Member

Откуда:
Сообщений: 104751
luigi
Собственно вопрос - в чем может быть особенность обработки строкового параметра динамического запроса для MSSQL2005 по сравнению с MSSQL2000?

У EXEC() нет параметров
14 июн 13, 12:52    [14433232]     Ответить | Цитировать Сообщить модератору
 Re: Особенности SQL2005 по сравнению с SQL2000 (+линк из Oracle)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
1. Смотрим лог и дамп файлы на предмет поиска причин ошибки на стороне MS SQL;
2. Профайлером перехватываем реальный вызов от Oracle.
14 июн 13, 12:57    [14433264]     Ответить | Цитировать Сообщить модератору
 Re: Особенности SQL2005 по сравнению с SQL2000 (+линк из Oracle)  [new]
luigi
Member

Откуда: СССР (РФ-ЛНР)
Сообщений: 392
pkarklin,
Портянку сократил - там дальше перечисление модулей...
+ Кусок дампа

2013-06-14 11:24:40.16 spid69 Using 'dbghelp.dll' version '4.0.5'
2013-06-14 11:24:40.17 spid69 ***Stack Dump being sent to D:\MSSQL.1\MSSQL\LOG\SQLDump0010.txt
2013-06-14 11:24:40.17 spid69 SqlDumpExceptionHandler: Process 69 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
2013-06-14 11:24:40.17 spid69 * *******************************************************************************
2013-06-14 11:24:40.17 spid69 *
2013-06-14 11:24:40.17 spid69 * BEGIN STACK DUMP:
2013-06-14 11:24:40.17 spid69 * 06/14/13 11:24:40 spid 69
2013-06-14 11:24:40.17 spid69 *
2013-06-14 11:24:40.17 spid69 *
2013-06-14 11:24:40.17 spid69 * Exception Address = 24448857 Module(UNKNOWN+00000000)
2013-06-14 11:24:40.17 spid69 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
2013-06-14 11:24:40.17 spid69 * Access Violation occurred reading address 24448857
2013-06-14 11:24:40.17 spid69 * Input Buffer 255 bytes -
2013-06-14 11:24:40.17 spid69 * yy co h ff ff 0a 00 00 00 00 00 63 f4 01 00 00 09 04 00 01 68
2013-06-14 11:24:40.17 spid69 * o S E L E C T f4 01 00 00 20 00 53 00 45 00 4c 00 45 00 43 00 54 00
2013-06-14 11:24:40.17 spid69 * " T 0 0 0 0 " . 20 00 22 00 54 00 30 00 30 00 30 00 30 00 22 00 2e 00
2013-06-14 11:24:40.17 spid69 * " f D a t e I d s 22 00 44 00 61 00 74 00 65 00 54 00 69 00 6d 00 65 00
2013-06-14 11:24:40.17 spid69 * " A S c 0 0 0 22 00 20 00 41 00 53 00 20 00 63 00 30 00 30 00 30 00
2013-06-14 11:24:40.17 spid69 * , " T 0 0 0 0 " 2c 00 20 00 22 00 54 00 30 00 30 00 30 00 30 00 22 00
2013-06-14 11:24:40.18 spid69 * . " f S t r V a l 2e 00 22 00 54 00 61 00 67 00 4e 00 61 00 6d 00 65 00
2013-06-14 11:24:40.18 spid69 * " A S c 0 0 1 22 00 20 00 41 00 53 00 20 00 63 00 30 00 30 00 31 00
2013-06-14 11:24:40.18 spid69 * , " T 0 0 0 0 " 2c 00 20 00 22 00 54 00 30 00 30 00 30 00 30 00 22 00
2013-06-14 11:24:40.18 spid69 * . " f V a l u e " 2e 00 22 00 56 00 61 00 6c 00 75 00 65 00 22 00 20 00
2013-06-14 11:24:40.18 spid69 * A S c 0 0 2 , 41 00 53 00 20 00 63 00 30 00 30 00 32 00 2c 00 20 00
2013-06-14 11:24:40.18 spid69 * " T 0 0 0 0 " . " 22 00 54 00 30 00 30 00 30 00 30 00 22 00 2e 00 22 00
2013-06-14 11:24:40.18 spid69 * f T y p e I s o 1 77 00 77 00 52 00 65 00 73 00 6f 00 6c 00 75 00 74 00
2013-06-14 11:24:40.18 spid69 * R e t " A S c 69 00 6f 00 6e 00 22 00 20 00 41 00 53 00 20 00 63 00
2013-06-14 11:24:40.18 spid69 * 0 0 3 F R O M 30 00 30 00 33 00 20 00 46 00 52 00 4f 00 4d 00 20 00
2013-06-14 11:24:40.18 spid69 * " D _ S E R F N 20 00 22 00 56 00 5f 00 41 00 4e 00 41 00 4c 00 4f 00
2013-06-14 11:24:40.18 spid69 * O R M A L I Z E " 47 00 48 00 49 00 53 00 54 00 4f 00 52 00 59 00 22 00
2013-06-14 11:24:40.18 spid69 * " T 0 0 0 0 " 20 00 22 00 54 00 30 00 30 00 30 00 30 00 22 00 20 00
2013-06-14 11:24:40.18 spid69 * W H E R E ( ( " 57 00 48 00 45 00 52 00 45 00 20 00 28 00 28 00 22 00
2013-06-14 11:24:40.18 spid69 * T 0 0 0 0 " . " f 54 00 30 00 30 00 30 00 30 00 22 00 2e 00 22 00 54 00
2013-06-14 11:24:40.18 spid69 * S t r V a l " = 61 00 67 00 4e 00 61 00 6d 00 65 00 22 00 20 00 3d 00
2013-06-14 11:24:40.18 spid69 * @ P 1 ) A N D 20 00 40 00 50 00 31 00 29 00 20 00 41 00 4e 00 44 00
2013-06-14 11:24:40.18 spid69 * ( " T 0 0 0 0 " 20 00 28 00 22 00 54 00 30 00 30 00 30 00 30 00 22 00
2013-06-14 11:24:40.18 spid69 * . " f T y p e I s 2e 00 22 00 77 00 77 00 52 00 65 00 73 00 6f 00 6c 00
2013-06-14 11:24:40.18 spid69 * o 1 R e t " = 75 00 74 00 69 00 6f 00 6e 00 22 00 20 00 3d 00 20 00
2013-06-14 11:24:40.18 spid69 * @ P 2 ) A N D 40 00 50 00 32 00 29 00 20 00 41 00 4e 00 44 00 20 00
2013-06-14 11:24:40.18 spid69 * ( " T 0 0 0 0 " . 28 00 22 00 54 00 30 00 30 00 30 00 30 00 22 00 2e 00
2013-06-14 11:24:40.18 spid69 * " f D a t e I d s 22 00 44 00 61 00 74 00 65 00 54 00 69 00 6d 00 65 00
2013-06-14 11:24:40.18 spid69 * " > @ P 3 ) ) 22 00 20 00 3e 00 20 00 40 00 50 00 33 00 29 00 29 00
2013-06-14 11:24:40.18 spid69 * cH hH @ 00 00 63 48 00 00 00 09 04 00 01 68 48 00 00 00 40 00
2013-06-14 11:24:40.18 spid69 * P 1 v a r c h a 50 00 31 00 20 00 76 00 61 00 72 00 63 00 68 00 61 00
2013-06-14 11:24:40.18 spid69 * r ( 1 6 ) , @ P 2 72 00 28 00 31 00 36 00 29 00 2c 00 40 00 50 00 32 00
2013-06-14 11:24:40.18 spid69 * i n t , @ P 3 20 00 69 00 6e 00 74 00 2c 00 40 00 50 00 33 00 20 00
2013-06-14 11:24:40.18 spid69 * d a t e t i m e 64 00 61 00 74 00 65 00 74 00 69 00 6d 00 65 00 00 00
2013-06-14 11:24:40.18 spid69 *  h 86_abbuf a7 10 00 09 04 00 01 68 10 00 38 36 5f 69 66 36 5f 66
2013-06-14 11:24:40.18 spid69 * c329_ext & ?i6 63 33 32 39 5f 41 50 48 00 00 26 04 04 80 ee 36 00 00
2013-06-14 11:24:40.18 spid69 * o Y? O? 00 6f 08 08 dd a1 00 00 00 d6 83 00
2013-06-14 11:24:40.18 spid69 *
...


Хм, тут видно, что Р1 - varchar(16). Т.е. так как и должно быть.
Смотрю профайлер....
14 июн 13, 13:37    [14433528]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить