current_role?

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

current_role?

Mesaj gönderen Lost Soul »

s.a.
firebird de sql ile hangi role ile girildiğini öğrenmeye çalışıyorum.
ibexpertten bağlanırken role ismine MYROLE yazıyorum (MYROLE diye bir role var)

Kod: Tümünü seç

SELECT  current_role from config

/* Burada config sallama bi tablo */ 
sonuç NONE oluyor. (null değer değil string değer ve NONE)

hangi role ile girildiğini nasıl öğrenebilirim acaba.
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: current_role?

Mesaj gönderen orhancc »

http://www.firebirdsql.org/refdocs/lang ... _role.html

CURRENT_ROLE always represents a valid role or NONE. If a user connects with a non-existing role, the engine silently resets it to NONE without returning an error.
Geçerli rol yoksa NONE döner diyor.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: current_role?

Mesaj gönderen Lost Soul »

cevap için teşekkürler gösterdiğiniz linki ve dha fazlasını arştırmıştım.
fakat tanımlı bir role var
ve bağlantı esnasında bu role ile bağlanıyorum (ibexpert ile)
ha eğer ibexpert role alanını göstermelik koymuş ama kullanmıyor ise onu bilemem.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: current_role?

Mesaj gönderen Lost Soul »

Kod: Tümünü seç

GRANT ROLE_ADI TO SYSDBA
diyince oldu.
demekki ibexpert rolleri oluşturuyor fakat rollerle userleri yukarıdaki gibi
ilişkilendirme işini yapmıyor.

artık onconnect olayında

Kod: Tümünü seç

if (current_role <> 'ROLE_ADI') then
 exception izinsizerisim;
diyerekten sysdba masterkey dışında üçüncü bir kontrol olan kendi kontrolümü yerleştirebildim.
bu sayede rol adını bilmeyen veritabanına erişemiyor.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: current_role?

Mesaj gönderen sadettinpolat »

ilginc bir yontem :)
bu tarz hazirlanmis bos bir db varsa bana gonderir misin? gercekten erisip erisemeyecegimi merak ettim..
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: current_role?

Mesaj gönderen Lost Soul »

DEMO1.rar
(40.79 KiB) 100 kere indirildi
Sonucu mutlaka bildiriniz
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: current_role?

Mesaj gönderen orhancc »

:D

Kod: Tümünü seç

/* SQL Manager 2008 for InterBase/Firebird 5.0.0.1 */
/* ----------------------------------------------- */
/* Host     : localhost                            */
/* Database : D:\Downloads\DEMO1\DEMO1.FDB         */


CREATE DATABASE '127.0.0.1/3050:D:\Downloads\DEMO1\DEMO1.FDB'   USER 'SYSDBA'
   PAGE_SIZE 16384
   DEFAULT CHARACTER SET NONE;
/* Definition for the `GEN_TABLE1_ID` generator :  */

CREATE GENERATOR GEN_TABLE1_ID;

SET GENERATOR GEN_TABLE1_ID TO 6;

/* Definition for the `GEN_TABLE2_ID` generator :  */

CREATE GENERATOR GEN_TABLE2_ID;

SET GENERATOR GEN_TABLE2_ID TO 6;
/* Definition for the `OMADIBEGULUM` exception :  */

CREATE EXCEPTION OMADIBEGULUM 'Erişmek için THE_ROLE isimli rol ile bağlanın';
/* Structure for the `TABLE1` table :  */

CREATE TABLE TABLE1 (
  ID INTEGER NOT NULL,
  TABLE2ID INTEGER,
  NUM1 INTEGER,
  STR1 VARCHAR(100) CHARACTER SET WIN1254 COLLATE WIN1254,
  DATETIME1 TIMESTAMP);


ALTER TABLE TABLE1 ADD CONSTRAINT PK_TABLE1 PRIMARY KEY (ID);

/* Structure for the `TABLE2` table :  */

CREATE TABLE TABLE2 (
  ID INTEGER NOT NULL,
  TABLE1ID INTEGER,
  NUM2 INTEGER,
  STR2 VARCHAR(100) CHARACTER SET WIN1254 COLLATE WIN1254,
  DATETIME2 TIMESTAMP);


ALTER TABLE TABLE2 ADD CONSTRAINT PK_TABLE2 PRIMARY KEY (ID);
/* Data for the `TABLE1` table  (Records 1 - 6) */

INSERT INTO TABLE1
VALUES (1, 3, 11, 'S11', NULL);

INSERT INTO TABLE1
VALUES (2, 3, 12, 'S12', NULL);

INSERT INTO TABLE1
VALUES (3, 4, 13, 'S13', NULL);

INSERT INTO TABLE1
VALUES (4, 4, 14, 'S14', NULL);

INSERT INTO TABLE1
VALUES (5, NULL, 15, 'S14', NULL);

INSERT INTO TABLE1
VALUES (6, NULL, 16, NULL, NULL);

COMMIT WORK;

/* Data for the `TABLE2` table  (Records 1 - 6) */

INSERT INTO TABLE2
VALUES (1, 1, 21, 'S21', NULL);

INSERT INTO TABLE2
VALUES (2, 1, 22, 'S22', NULL);

INSERT INTO TABLE2
VALUES (3, 2, 23, 'S23', NULL);

INSERT INTO TABLE2
VALUES (4, 2, 24, 'S24', NULL);

INSERT INTO TABLE2
VALUES (5, NULL, 25, 'S25', NULL);

INSERT INTO TABLE2
VALUES (6, NULL, 26, NULL, NULL);

COMMIT WORK;

/* Definition for the `TABLE1_BI` trigger :  */

SET TERM ^ ;

CREATE TRIGGER TABLE1_BI FOR TABLE1
ACTIVE BEFORE INSERT
POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_table1_id,1);
end^

SET TERM ; ^

/* Definition for the `TABLE2_BI` trigger :  */

SET TERM ^ ;

CREATE TRIGGER TABLE2_BI FOR TABLE2
ACTIVE BEFORE INSERT
POSITION 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_table2_id,1);
end^

SET TERM ; ^
/* Definition for the `BAGLANTI` trigger :  */

SET TERM ^ ;

CREATE TRIGGER BAGLANTI ACTIVE ON CONNECT POSITION 0
AS
begin
  /* Trigger text */
  if (current_role<>'THE_ROLE') then exception omadibegulum;
end
^

SET TERM ; ^
/* Definition for the `THE_ROLE` role :  */

CREATE ROLE THE_ROLE;
/* Privilegies for the `TABLE1` :  */

GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE ON TABLE1 TO SYSDBA WITH GRANT OPTION;

GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE ON TABLE1 TO THE_ROLE;


/* Privilegies for the `TABLE2` :  */

GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE ON TABLE2 TO SYSDBA WITH GRANT OPTION;

GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE ON TABLE2 TO THE_ROLE;


Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: current_role?

Mesaj gönderen Lost Soul »

veritabanını extract eden programlarla mı eriştiniz yoksa direk veritabanı açıldı mı benim için önemli olan
veritabanının direk açılmaması.
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: current_role?

Mesaj gönderen orhancc »

veritabanını direk açtım extract eden programlar da önce bağlanması gerekiyor. :)
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: current_role?

Mesaj gönderen Lost Soul »

enteresan bir durum.
sysdba genel bir şifre ama onconnect olayı öyle değil.
en kötü ihtimalle rol adını doğru girsen bile bağlanmamasını bekliyordum.
fakat doğruddan bağlanmasını beklemiyordum.

Kod: Tümünü seç

erişmek için THE_ROLE isimli rol ile bağlanın 
şeklinde hata vermesi gerekiyordu.
THE_ROLE ile bağlanmadınız değil mi?
En son Lost Soul tarafından 27 Şub 2011 12:41 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: current_role?

Mesaj gönderen orhancc »

bağlantı yaparken kullanıcı sysdba role olarak da THE_ROLE yazdım bağlandı :)
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: current_role?

Mesaj gönderen Lost Soul »

orhancc yazdı:bağlantı yaparken kullanıcı sysdba role olarak da THE_ROLE yazdım bağlandı :)
e güzel kardeşim öyle desene. :)
benim amacım da o zaten
THE_ROLE olayını görüp görmediği.
eğer THE_ROLE yazmadan bağlanmıyorsa amacıma ulaşmışım demektir.
denemen için teşekkürler.
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: current_role?

Mesaj gönderen orhancc »

öyle ama hatada yazıyor zaten rol adı veya kullanıcı adı onu göstermezsen bağlanılmaz.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: current_role?

Mesaj gönderen Lost Soul »

tamam işte o hatayıı o şekilde ben yazdım ki
bağlanamadığın zaman rol adını yazıp bağlanasın.

Kod: Tümünü seç

CREATE EXCEPTION OMADIBEGULUM 'Erişmek için THE_ROLE isimli rol ile bağlanın';
yoksa ingilizce veritabanında Türkçe hata ne arar :D
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: current_role?

Mesaj gönderen sadettinpolat »

Kod: Tümünü seç

C:\Program Files (x86)\Firebird\Firebird_2_1\bin>isql -nodbtriggers
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT c:\data\demo1\demo1.fdb
CON> USER 'SYSDBA' password 'masterkey'
CON> ;
Database:  c:\data\demo1\demo1.fdb, User: SYSDBA
SQL> select * from table1
CON> ;

          ID     TABLE2ID         NUM1 STR1
                                                                            DATE
TIME1
============ ============ ============ =========================================
====================================== =========================
           1            3           11 S11
                                                                               <
null>
           2            3           12 S12
                                                                               <
null>
           3            4           13 S13
                                                                               <
null>
           4            4           14 S14
                                                                               <
null>
           5       <null>           15 S14
                                                                               <
null>
           6       <null>           16 <null>
                                                                               <
null>

SQL>
isql -nodbtriggers parametresi ile cagrildiginda database triggerleri pasif hale geliyor. ayrica gbak programininda benzer parametresi var. denemedim ama belki triggerlar iptal edilmis sekilde backup restore olayida vardir.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Cevapla