Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возможно ли такое ? / 9 сообщений из 9, страница 1 из 1
13.01.2005, 15:48
    #32863508
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
Нужно с помощью ХП прочитать метку диска на котором запущен сервер.
Это возможно ?
...
Рейтинг: 0 / 0
13.01.2005, 15:51
    #32863515
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
PaulJBНужно с помощью ХП прочитать метку диска на котором запущен сервер.
Это возможно ?

Adaptive Server Anywhere SQL User's Guide
17. Using Procedures, Triggers, and Batches
Calling external libraries from procedures
...
Рейтинг: 0 / 0
13.01.2005, 16:00
    #32863549
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
Написать расширенную ХП на Java или C. Можно конечно поиграться с COMMAND.COM, xp_cmdshell и xp_readfile, но IMHO лучше метку диска не в БД считывать :)
...
Рейтинг: 0 / 0
13.01.2005, 18:53
    #32863994
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
В WinAPI есть ф-ция GetVolumeInformationA. С помощью ее я из ПБ читаю метку без проблем.

В ПБ обьявляю:
Function boolean GetVolumeInformationA (string lpRootPathName, ref string lpVolumeNameBuffer, ulong nVolumeNameSize, ref ulong lpVolumeSerialNumber, ref ulong lpMaximumComponentLength, ref ulong lpFileSystemFlags, ref string lpFileSystemNameBuffer, ulong nFileSystemNameSize) Library "KERNEL32.DLL"

//..................... скрипт вызова для ПБ .......................
string ls_RootPath, ls_VolumeName, ls_FileSystemNameBuffer
ulong ll_VolumeSerialNumber, ll_MaximumComponentLength, ll_FileSystemFlags

ls_RootPath = cdisk+"\"
ls_VolumeName = Space (256)
ls_FileSystemNameBuffer = Space (12)

GetVolumeInformationA (ls_RootPath, ls_VolumeName, Len (ls_VolumeName), ll_VolumeSerialNumber, ll_MaximumComponentLength, ll_FileSystemFlags, ls_FileSystemNameBuffer, Len (ls_FileSystemNameBuffer))

return ( string(ll_VolumeSerialNumber) )
//............................................................................................

Перенес на ASA.
Создал процедуру-обьявление:

CREATE PROCEDURE DBA.getvolinfo(in lpRootPathName char(255),inout lpVolumeNameBuffer char(255),in nVolumeNameSize integer,inout lpVolumeSerialNumber integer,inout lpMaximumComponentLength integer,inout lpFileSystemFlags integer,inout lpFileSystemNameBuffer char(255),in nFileSystemNameSize integer)
external name 'GetVolumeInformationA@KERNEL32.DLL'

Создал ф-цию:

ALTER FUNCTION DBA ."GetDiskMark" ( in ls_RootPath char(256) )
RETURNS varchar (256)
BEGIN
DECLARE ls_VolumeName char (256);
DECLARE ls_FileSystemNameBuffer char (12);
DECLARE ll_VolumeSerialNumber int ;
DECLARE ll_MaximumComponentLength int;
DECLARE ll_FileSystemFlags int;
//
SET ls_VolumeName = Space (256) ;
SET ls_FileSystemNameBuffer = Space (12) ;
SET ll_VolumeSerialNumber = 0 ;
SET ll_MaximumComponentLength = 0;
SET ll_FileSystemFlags = 0;
CALL dba.getvolinfo( ls_RootPath,
ls_VolumeName,
256,
ll_VolumeSerialNumber,
ll_MaximumComponentLength,
ll_FileSystemFlags,
ls_FileSystemNameBuffer,
12
) ;
RETURN string(ll_VolumeSerialNumber);
END
// ...............................................................
При вызове ее из ISQL:

CALL "DBA"."GetDiskMark"( 'c:\' )

пишет: ASA error -735: Invalid parameter.

Что я делаю не так ?

[ ASA 8.0.2.4454 ]
...
Рейтинг: 0 / 0
13.01.2005, 19:00
    #32864002
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
Я бы очень настоятельно не рекомендовал пытаться WINAPI подцепить к БД, если не хотите получить падение сервера или его нестабильную работу. Получайте метку в PB или где еще, просто передавая ее в БД.
...
Рейтинг: 0 / 0
14.01.2005, 12:18
    #32864785
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
2ASCRUS
Спасибо за совет, но к сож. по другому не получится.
Хочу хоть как-то защитить базу(ы) от копирования на др. компьютеры или диски.
Базы в разных городах и полностью во власти юзеров, но пароль на нее они не знают (надеюсь). Вот и хочется, что бы она САМА при старте определяла где находится и в случ. чего отбивала соединение или чего еще ... .
Может есть др. методы ?
...
Рейтинг: 0 / 0
14.01.2005, 13:58
    #32865054
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
PaulJB 2ASCRUS
Спасибо за совет, но к сож. по другому не получится.
Хочу хоть как-то защитить базу(ы) от копирования на др. компьютеры или диски.
Базы в разных городах и полностью во власти юзеров, но пароль на нее они не знают (надеюсь). Вот и хочется, что бы она САМА при старте определяла где находится и в случ. чего отбивала соединение или чего еще ... .
Может есть др. методы ?
Если они не знают овнерский пароль, то уже изменить структуру и администрировать не могут. Если хочется что то по сложнее, то можно заморочиться с включением шифрования БД и вшитием ключа в клиентское приложение, которое уже само будет определять, стоит ли к БД подключаться или нет. Можно еще кучу всего придумать конечно - но кто умеет, тот всегда ломанет и утащит, дырки и обходные маневры всегда найдутся. А кто не умеет, так от него и защищаться бестолку - он даже ASA сам синсталить и настроить не сможет :)
...
Рейтинг: 0 / 0
14.01.2005, 13:59
    #32865063
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
Кстати в пример хочу привести защиту 1С на ключах - в итоге официальные юзеры его сразу же ломают и ставят виртуальный девайс, чтобы 1С не глючила и нормально работала :) А те кто не могут, страдают в отличие от пиратов :)
...
Рейтинг: 0 / 0
16.01.2005, 00:24
    #32866580
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возможно ли такое ?
А может надо ее вызвать не как CALL "DBA"."GetDiskMark"( 'c:\' ),
а как set jjj=GetDiskMark('c:\');
И еще посмотри в документации на тему какие типы в ASA соответсвуют типам в C.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возможно ли такое ? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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