Quantcast
Channel: SQL.ru: Firebird, InterBase
Viewing all 1677 articles
Browse latest View live

GRANT ALTER <object-type> TO ROLE DBDEVELOPER

$
0
0
RN: • If the ANY option is absent, the user will be able to perform operations on the object only if he owns it

Если я захочу, чтобы пользователи, которые правят базу, делали это не под SYSDBA, а под своими именами, создам такую роль и включу их в нее, то смогут ли все они править объекты, которые создали все остальные под этой ролью, или только те, которые создали сами? Т. е. кто является владельцем объекта - юзер или роль?

FibDataBase OnLostConnect

$
0
0
Добрый день
Здесь Delphi кто-нибудь знает?
Не могу понять в чем проблема - требуется обрабатывать потерю связи с базой, сделал через OnLostConnect, FibDataBase.Timeout выставил в 10000, для проверки. При потере связи один из label на форме меняет caption. Запускаю, завершаю службу сервера, считаю до 10 - сообщения о потери связи нет.Процедура:
procedure TForm1.pFIBDatabase1LostConnect(Database: TFIBDatabase;
  E: EFIBError; var Actions: TOnLostConnectActions);
begin
   LabelDisconnect.Caption := 'Связь потеряна';
end;

FireBirdDB+C# НВместо русских букв - знаки вопросов

$
0
0
Добрый день. Не могу получить русский текст в читабельном формате из БД FireBird.
Запрос
select * from rdb$database
вернул CHARACTER_SET_NAME='ASCII'

using FirebirdSql.Data.FirebirdClient;
FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder();
fb_con.Charset = "ASCII";
fb_con.UserID = "SYSDBA";
fb_con.Password = "masterkey";
fb_con.Database = "mainDB.FDB";
fb_con.ServerType = FbServerType.Embedded;
fb = new FbConnection(fb_con.ToString());
//создаем подключение
fb = new FbConnection(fb_con.ToString());
fb.Open();
FbDatabaseInfo fb_inf = new FbDatabaseInfo(fb);
FbCommand selCom = new FbCommand("select CAT0_NAME from CAT0", fb);
FbDataReader dr = selCom.ExecuteReader();
while (dr.Read()) {
    string inS = dr[0].ToString();
    textBox1.AppendText(inS + "\n");  // <-- Тут знаки вопроса
    var newStr = Encoding.ASCII;
    byte[] getBytes = newStr.GetBytes(inS);
    inS = newStr.GetString(getBytes, 0, getBytes.Length);
    textBox1.AppendText(inS + "\n");  // <-- И тут тоже знаки вопроса
}
dr.Close();


Хотя в IBExpert текст виден нормально.
Где косячу или куда копать??
База не моя и править её я не могу
В ветке C# есть картинки из IBExpert
Тема в C#

Условие выборки

$
0
0
Добрый день.

Таблица "oper" содержит такие данные:
id  id_m  dt          <прочие поля>
3 2 11.07.2016
4 3 12.07.2016
1 2 01.05.2016
2 3 02.05.2016
5 4 01.07.2016
Подскажите, пож., условие в селективном запросе чтобы
в выборке были уникальные значения из поля id_m и только самые "свежие" записи.
Т.е. исходя из примера результат должен быть таким:

id  id_m  dt         <прочие поля>
3 2 11.07.2016
4 3 12.07.2016
5 4 01.07.2016

FB3 + UIB + event = падение сервера

$
0
0
День добрый

Server version: LI-V6.3.0.32483 Firebird 3.0

клиент на венде через UIB .
при повторном регистрации евента сервер падает.

SlotsSRV        Tue Aug 23 19:20:31 2016
        /opt/firebird/bin/fbguard: /opt/firebird/bin/firebird terminated abnormally (-1)



SlotsSRV        Tue Aug 23 19:20:31 2016
        /opt/firebird/bin/fbguard: guardian starting /opt/firebird/bin/firebird



SlotsSRV        Tue Aug 23 19:20:48 2016
        /opt/firebird/bin/fbguard: /opt/firebird/bin/firebird terminated abnormally (-1)



SlotsSRV        Tue Aug 23 19:20:48 2016
        /opt/firebird/bin/fbguard: guardian starting /opt/firebird/bin/firebird

 


думаю что падать не должен. воспроизводится.

вопрос - это известная бага или надо пример собрать ?

Нужна помощь в написании триггера

$
0
0
Имеется таблица с адресами примерно такой структуры
+ используемый домен
CREATE DOMAIN DMN_BOOL_2 AS
SMALLINT
DEFAULT 0
NOT NULL
CHECK (VALUE IN (0,1));

+ сама табля с флагом прописки (PERMANENT_ADDRESS) и флагом текущего места жительства (CURRENT_ADDRESS)
CREATE TABLE TBL_ADDRESS (
    ID                    INTEGER NOT NULL,
    FK_PEOPLE             INTEGER NOT NULL,
    PERMANENT_ADDRESS     DMN_BOOL_2 DEFAULT 1,
    CURRENT_ADDRESS       DMN_BOOL_2 DEFAULT 1,
COUNTRY               DMN_STRING_100
);

ALTER TABLE TBL_ADDRESS ADD CONSTRAINT PK_TBL_ADDRESS PRIMARY KEY (ID);


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

=================
Док.

Win7 Ultim x64/Deb 7.6 i386 (Deb 8.3 i386):
FB 3.0.0.32483, диалект 3, SS(win)/CS(Deb),
Lazarus 1.7; FPC 3.1.1, IBX by -Rik-; IBE 2016.4.29.1
IBE 2016.5.14.1

Нужен совет организацией поиска в строковых полях

$
0
0
Привет. Собственно поиск в рамках одной большой таблице, есть колонка ФИО, по ней нужно найти человека. В таблице не 1 млн. записей. Поиск должен быть не регистро-зависимым и искать по любой чисти фразы. Использовал запрос плана:

select *
from tabel
where name containing 'ирно'

по name индекс есть, но из-за использования containing толку от него нет.

upper(namel) like upper('%ирно%')
POSITION('ирно', name) <> 0

эти варианты тоже не подходят по той же причине. Полагаю, что вопрос заезженный, но может я что-то пропустил. По советуйте как можно ускорить поиск.

fb3: Ошибка при запросе значения, добавленного ранее в той же stored procedure

$
0
0
WI-V6.3.0.32483 Firebird 3.0

Таблица:
CREATE TABLE TEST (
    ID   INTEGER NOT NULL,
    VAL  INTEGER NOT NULL
);

Этот код не работает:
execute block
as
begin
  insert into test (id, val) values (1, 100);
  insert into test (id, val) values (2, (select val from test where id = 1));
end

Выдает ошибку:
The insert failed because a column definition includes validation constraints.
validation error for column "TEST"."VAL", value "*** null ***".

А этот работает:
execute block
as
declare v integer;
begin
  insert into test (id, val) values (1, 100);
  select val from test where id = 1 into :v;
  insert into test (id, val) values (2, :v);
end


Это так задумано или это ошибка?

PS: При последовательном выполнении команд в одной транзакции (не в процедуре) - тоже работает.

Подскажите по массовому update

$
0
0
Коллеги, подскажите чайнику! Есть таблица в 2 поля: первичный ключ и varchar(50). Записей ~50 000. Таблица притерпела раз эдак 10 подряд массовый update (второго поля ессесно). Сразу после этого очень долго фетчатся из нее записи, а select count(*) занимает 8 минут!
Машина Core i3 3Ghz, обычный SATA, ничем не нагружена. Суперсервер 2.5.3.26778, конфиг дефолтный.
Такая ситуация нормальна?

Пользовательский collate не работает в 3.0 с блобами

$
0
0
Имеется код
create collation PXW_CYRL_CI_AI for WIN1251
   from PXW_CYRL
   CASE INSENSITIVE
   ACCENT INSENSITIVE;

with A(val) as(
  select cast('update' as blob sub_type text) from rdb$database
  union all
  select 'UPDATE' from rdb$database
)
select * from A where val collate PXW_CYRL_CI_AI like '%update%'

в 2.5 две строки, в 3.0 - одна.

ЧЯДНТ?

Индефикация пользователя в триггерах...

$
0
0
Как можно индефицировать пользователя, который своим SQL запросом дернул цепочку триггеров?
Пользователя необходимо определить внутри сработавшего триггера...

Освободить процедуру что бы перекомпилировать FB2.6

$
0
0
Доброе время суток,

есть короткая процедура (для формирования отчета)
её надо изменить перекомпилить в срочном порядке но нет возможности выгнать всех из базы
в то же время известно что в данный момент она не выполняется
при попытке перекомпиляции FB2.6 выдаеёт что процедура используется и перекомпиливать отказывается и откатывает транзакцию
подозреваю что дело в кэше или её в чём то (процедура недавно вызывалась)
можно как то обойти эту проблему и перекомпилить её?

Запуск специальных функций (sweep,gbak,gfix,gstat)

$
0
0
Можно запускать sweep,gbak,gfix,gstat из программ на C#,Java и т.п. или это возможно только из Delphi/C++/Lazarus?

Проблема с подключением. Python 3.5.2 + fdb 1.6 + firebird 2.5

$
0
0
Установил 32-х разрядные Python 3.5.2 и firebird 2.5
При установке fdb 1.6 происходит ошибка


python.exe setup.py install //к файлам указывались полные пути
.....
running install_lib
warning: install_lib: 'build\lib' does not exist -- no Paython modules to install

Создается единственная папка \EGG-INFO
При этом модуль не видится (т.е. ошибка в строке import fdb)
Далее если подкинуть оставшиеся папки
\FDB
\sphinx
\test

ошибка в cтроке пропадает (import fdb)
Далее пытаюсь создать базу данных
from django.http.response import HttpResponse
import fdb
# Create your views here.

def view1 (request):
    conn=fdb.create_database(dsn='localhost/3080:/test1.fdb', user='sysdba', password='masterkey')
    html = '<html><body>view1_html %s</body></html>' %  conn.version
    return HttpResponse(html)

Получаю ошибку
A server error occurred.  Please contact the administrator.


Что я делаю не так?
Firebird должен быть 32-Х разрядным.
Поэтому переустановил paython теперь тоже 32-х разрядный .

При валидации теряется коннект к БД

$
0
0
FB 2.5.6.27020 CS
БД в первом диалекте.

Из IBE запустили Database Validation с параметрами "Validate Full"

В конце возникла ошибка:
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
connection lost to database.
IBE: Validation completed.


В логе сервера следующее:
SERV	Wed Aug 31 13:11:36 2016
	Database: D:\DB\DATA.FDB
	Index 1 misses node on page 459721 level 1 in table DOCUMENTS (199)


SERV	Wed Aug 31 13:11:36 2016
	Database: D:\DB\DATA.FDB
	Index 1 misses node on page 459721 level 1 in table DOCUMENTS (199)


SERV	Wed Aug 31 13:11:36 2016
	Database: D:\DB\DATA.FDB
	Index 1 has inconsistent left sibling pointer, page 459721 level 1 in table DOCUMENTS (199)


SERV	Wed Aug 31 13:11:36 2016
	Database: D:\DB\DATA.FDB
	Index 1 misses node on page 462635 level 1 in table DOCUMENTS (199)


SERV	Wed Aug 31 13:11:36 2016
	Database: D:\DB\DATA.FDB
	Index 1 has inconsistent left sibling pointer, page 462635 level 1 in table DOCUMENTS (199)


SERV	Wed Aug 31 13:11:36 2016
	Database: D:\DB\DATA.FDB
	Index 1 has orphan child page at page 462635 in table DOCUMENTS (199)


SERV	Wed Aug 31 13:11:36 2016
	Database: D:\DB\DATA.FDB
	Index 1 is corrupt on page 459720 level 0 at offset 5363. File: ..\..\..\src\jrd\validation.cpp, line: 2181
	 in table DOCUMENTS (199)


DBSERV (Client)	Wed Aug 31 13:11:37 2016
	XNET error: Server shutdown detected


Это нормально, что при таких ошибках индекса рвется коннект?

С уважением, Polesov.

Помогите передать Ansi строчку из UDF

$
0
0
Добрый день.

Делал по аналогии, как где нашел.
function INIReadString(AStrSection, AStrParam, AINIData: PAnsiChar; DefaultParam: PAnsiChar): PAnsiChar; cdecl; export;
begin
  Result := PAnsiChar(AnsiString(MainUnit.MyINIReadString(UTF8ToString(AStrSection), UTF8ToString(AStrParam), UTF8ToString(AINIData), UTF8ToString(DefaultParam))));
end;

MainUnit.MyINIReadString возвращает String


DECLARE EXTERNAL FUNCTION INIREADSTRING
    CSTRING(20) CHARACTER SET UTF8,
    CSTRING(20) CHARACTER SET UTF8,
    CSTRING(1024) CHARACTER SET UTF8,
    CSTRING(512) CHARACTER SET UTF8
RETURNS CSTRING(512)
ENTRY_POINT 'INIReadString' MODULE_NAME 'levdis.dll';


Строчки, в которых цифры и англ. буквы - возвращаются запросом, если в строке русские буквы - malformed string.

Подскажите, пожалуйста, что исправить?

Количество записей исключая повторяющиеся

$
0
0
В таблице есть поле Nm с номерами неважно чего. Некоторые номера встречаются несколько раз. Что нужно написать вместо
SELECT COUNT(Nm) чтобы получить количество записей с уникальными значениями номеров?
Спасибо.

FB 2.5.6

$
0
0
Кто-нибудь уже обновился? Приколов как с 2.5.5 нету?

Посчитать количество записей в базе без COUNT()

$
0
0
Доброго времени суток. Определение количества записей с помощью COUNT() проходит очень долго. Поэтому пытаюсь сделать запрос к системным таблицам:

SELECT RDB$INDICES.RDB$RELATION_NAME RELATION, CAST(1/RDB$INDICES.RDB$STATISTICS AS INTEGER) RECORD_COUNT 
FROM RDB$INDICES, RDB$RELATION_CONSTRAINTS 
WHERE RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME=RDB$INDICES.RDB$INDEX_NAME 
AND RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE='PRIMARY KEY
AND RDB$INDICES.RDB$STATISTICS>CAST(0 AS DOUBLE PRECISION) 
AND RDB$INDICES.RDB$RELATION_NAME='my_table'


Возвращает null, null для таблицы my_table. Если же убрать строчку
AND RDB$INDICES.RDB$RELATION_NAME='my_table'
, возвращает только для одной таблицы (справочной). В чём может быть баг ?
Заранее спасибо.

Ошибка при восстановлении

$
0
0
Господа подскажите плз ...

Восстаналиваю резервную копию ... Прерывается - дает ошибку

gbak:restoring stored procedure MONTHYEAR
gbak: ERROR:Malformed string
gbak:Invalid metadata detected. Use -FIX_FSS_METADATA option.
gbak:Exiting before completion due to errors

возможно обойти?
Viewing all 1677 articles
Browse latest View live