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

Adaptive Server Anywhere SQL User's Guide
17. Using Procedures, Triggers, and Batches
Calling external libraries from procedures
...
Рейтинг: 0 / 0
Возможно ли такое ?
    #32863549
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написать расширенную ХП на Java или C. Можно конечно поиграться с COMMAND.COM, xp_cmdshell и xp_readfile, но IMHO лучше метку диска не в БД считывать :)
...
Рейтинг: 0 / 0
Возможно ли такое ?
    #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
Возможно ли такое ?
    #32864002
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы очень настоятельно не рекомендовал пытаться WINAPI подцепить к БД, если не хотите получить падение сервера или его нестабильную работу. Получайте метку в PB или где еще, просто передавая ее в БД.
...
Рейтинг: 0 / 0
Возможно ли такое ?
    #32864785
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ASCRUS
Спасибо за совет, но к сож. по другому не получится.
Хочу хоть как-то защитить базу(ы) от копирования на др. компьютеры или диски.
Базы в разных городах и полностью во власти юзеров, но пароль на нее они не знают (надеюсь). Вот и хочется, что бы она САМА при старте определяла где находится и в случ. чего отбивала соединение или чего еще ... .
Может есть др. методы ?
...
Рейтинг: 0 / 0
Возможно ли такое ?
    #32865054
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJB 2ASCRUS
Спасибо за совет, но к сож. по другому не получится.
Хочу хоть как-то защитить базу(ы) от копирования на др. компьютеры или диски.
Базы в разных городах и полностью во власти юзеров, но пароль на нее они не знают (надеюсь). Вот и хочется, что бы она САМА при старте определяла где находится и в случ. чего отбивала соединение или чего еще ... .
Может есть др. методы ?
Если они не знают овнерский пароль, то уже изменить структуру и администрировать не могут. Если хочется что то по сложнее, то можно заморочиться с включением шифрования БД и вшитием ключа в клиентское приложение, которое уже само будет определять, стоит ли к БД подключаться или нет. Можно еще кучу всего придумать конечно - но кто умеет, тот всегда ломанет и утащит, дырки и обходные маневры всегда найдутся. А кто не умеет, так от него и защищаться бестолку - он даже ASA сам синсталить и настроить не сможет :)
...
Рейтинг: 0 / 0
Возможно ли такое ?
    #32865063
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати в пример хочу привести защиту 1С на ключах - в итоге официальные юзеры его сразу же ломают и ставят виртуальный девайс, чтобы 1С не глючила и нормально работала :) А те кто не могут, страдают в отличие от пиратов :)
...
Рейтинг: 0 / 0
Возможно ли такое ?
    #32866580
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может надо ее вызвать не как CALL "DBA"."GetDiskMark"( 'c:\' ),
а как set jjj=GetDiskMark('c:\');
И еще посмотри в документации на тему какие типы в ASA соответсвуют типам в C.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Возможно ли такое ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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