powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с использованием DLL на SQL Server 2000
4 сообщений из 4, страница 1 из 1
Проблема с использованием DLL на SQL Server 2000
    #32005569
Georg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема следущая:
Процедура не выгружается из памяти, MSSQL2000.
Создаю внешнюю хранимую процедуру:
--CPP--
//---------------------- begin of file ---------------------------------
//=====================================================================
#define DBNTWIN32

#include <windows.h>
#include <sqlfront.h>
#include <sqldb.h>
#include <srv.h>

#define MAX_SERVER_ERROR 20000
#define XP_PARAM_ERROR MAX_SERVER_ERROR+1
//######################################################################
ULONG __GetXpVersion()
{
return ODS_VERSION;
}
//----------------------------------------------------------------------
void sp_marsh(SRV_PROC* pSrvProc)
{
DBPROCESS* dbproc; // DBPROCESS handle for the new connection
LOGINREC* loginrec;
char szBindToken[255];
loginrec = dblogin();
// Set the user name, password, and application name for the remote
DBSETLUSER( loginrec, srv_pfield(pSrvProc, SRV_USER, NULL) );
DBSETLPWD( loginrec, srv_pfield(pSrvProc, SRV_PWD, NULL) );
DBSETLAPP (loginrec, "sp_marsh_dblib");
// подключаемся к сероверу... (NULL - локальный)
dbproc = dbopen (loginrec, "FORWARD");
dbsetuserdata (dbproc, (VOID*) pSrvProc);
// Bind to the clients connection for shared transaction space.
srv_getbindtoken (pSrvProc, szBindToken);
dbfcmd (dbproc, "exec sp_bindsession \'%s\'", szBindToken);
dbsqlexec (dbproc);
// посылаем сообщение
srv_sendmsg(pSrvProc, SRV_MSG_ERROR, XP_PARAM_ERROR, SRV_INFO, 1,
NULL, 0, (DBUSMALLINT) __LINE__,
"################ up ############",
SRV_NULLTERM);
srv_senddone (pSrvProc, SRV_DONE_COUNT | SRV_DONE_MORE,
(DBUSMALLINT) 0, 0);
// Close the connection to SQL Server.
dbclose( dbproc );
dbfreelogin( loginrec );
}
//---------------------- end of file ---------------------------------
--DEF--
//---------------------- begin of file ---------------------------------
LIBRARY XP_MARSH_DBLIB

DESCRIPTION 'SQL Server Extended Stored Procedure DLL'

EXPORTS
sp_marsh
__GetXpVersion
//---------------------- end of file -----------------------------------

после этого загружаю её скриптом:
//---------------------- begin of file ---------------------------------
use master
sp_addextendedproc 'sp_marsh', 'XP_MARSH_DBLIB.dll'
exec sp_marsh
//---------------------- end of file -----------------------------------
она грузится прекрасно и выдаёт сообщение
....
################ up ############
....
Теперь пытаюсь выгрузить, чтобы загрузить потом новую версию:
//---------------------- begin of file ---------------------------------
use master
dbcc XP_MARSH_DBLIB(free)
//---------------------- end of file -----------------------------------
Выдаёт сообщение об успешном выполнении DBCC....
Но после этого невозможно удалить DLL-файл
XP_MARSH_DBLIB.dll, т.к. он "кем-то используется"
В MSSQL7.0 такой проблемы не было...
...
Рейтинг: 0 / 0
Проблема с использованием DLL на SQL Server 2000
    #32005655
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я проверил Ваш код. Никаких проблем не возникло.
...
Рейтинг: 0 / 0
Проблема с использованием DLL на SQL Server 2000
    #32005674
Vasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бьюсь с размаху головой об стол уже сутки. Extended SP, успешно работающая на SQL 7.0, на SQL Server 2000 работает иногда (!!!!), через раз, а иногда вообще долго не работает, короче логики никакой. Формат такой:

xp_decode @User varchar(50),
@Pass varchar(100),
@codeBlock binary(12,
@returnName varchar(50) OUTPUT,
@returnPass varchar(100) OUTPUT

Что могло измениться в SQL 2000, что работа процедуры стала от чего-то зависеть. Типы входных и выходных параметров проверял много раз. Может есть какой-либо способ отладки таких процедур (Visual C++) ?
...
Рейтинг: 0 / 0
Проблема с использованием DLL на SQL Server 2000
    #32005699
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно непостоянство в работе. А от себя ещё раз скажу: Opends60.dll в 2000 и в 6.5 - 2 Боольшие разницы. К сожалению, не сверял версии с 7.0 .
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с использованием DLL на SQL Server 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]