Keresés

Részletes keresés

Kártékony Creative Commons License 2003.01.08 0 0 12
Hello,

a legegyszerűbb, ha elolvasod:
@@IDENTITY
SCOPE_IDENTITY
IDENT_CURRENT

Ha kérdésed van, vagy valamit nem értesz: írj! :)

Előzmény: bhubert (9)
bhubert Creative Commons License 2003.01.06 0 0 11
Köszi, már dolgozom az MSDN-es portoláson. Egyenlőre jó választásnak tűnik.
Előzmény: ouzo (10)
ouzo Creative Commons License 2003.01.06 0 0 10
A sybase7 Linux alatt ingyenes, nem tudom mi van a Wines verzióval. Kezelheted ADO-val is.
Előzmény: bhubert (-)
bhubert Creative Commons License 2002.12.28 0 0 9
Igen, sejtem :)

Nos amit csinálok, tulajdonképpen szerintem teljesen OK:

Csinálok egy INSERT-et a táblába, majd rögtön lekérdezem az így létrejött azonosítót. Erre a számra szükségem van, mert ez egy HTML-oldal paraméterezéséhez kell majd.

Az INSERT után azonnal SELECT-et csinálok, közben nem zárom le a tranzakciót. Mindezt Delphi-ből ADO-n keresztül.

Tudom, hogy Rollback esetén nem görgetődik vissza az IDENTITY, de ez most részemről lényegtelen... Számomra csak a felvett rekord ID-je érdekes, a fontos az, hogy két egyszerre érkező INSERT esetén is megfelelő ID-t adjak vissza a két kérésnek.

Ez így szerinted jó megoldás?

Mire gondolsz a "figyelj a scope-ra" mondattal?

Előzmény: Kártékony (8)
Kártékony Creative Commons License 2002.12.27 0 0 8
Azért az "előre " legenerált egyedi azonosítokkal vigyázz, mert az mindig "veszélyes" :)
SQL ervernél figyelj a scope-ra és a tranzakciókra, ha az egyedi azonosítókat akarod előre "megtippelni".
Előzmény: bhubert (7)
bhubert Creative Commons License 2002.12.27 0 0 7
Időközben megtaláltam a választ:

IDENTITY...

SELECT IDENT_CURRENT('TABLANAME')

Előzmény: bhubert (6)
bhubert Creative Commons License 2002.12.26 0 0 6
Látom, ismered valamennyire az MSSQL-t. Lenne egy kérdésem:

- Hogyan tudok egyedi ID-t generálni MSSQL alatt és a generált értéket kiolvasni?

A probléma ugye ismerős:

Adott pl. egy "számlafej" és a "tételek" tábla, ahol a tételek táblában van hivatkozás a számlafej ID-re. Namármost elöbb ugye ilyenkor felvesszük a fejlécet és a generált ID-t eltároljuk a tételekben.

Ezt én InterBase alatt így oldottam meg:

CREATE GENERATOR GEN_SZAMLAFEJ;

CREATE PROCEDURE GET_NEXT_SZAMLA_ID RETURNS (ID INTEGER)
AS
BEGIN
ID = GEN_ID(GEN_SZAMLAFEJ, 1);
END !!

Majd meghívva a tárolt eljárást megkaptam a generált egyedi azonosítót, melyet mind a számlafej insert-nél, mint pedig a tételeknél biztonságban használhattam.

Persze, ha nem kellett kiolvasni az ID-t, csak simán generálni egyet, akkor azt triggerből csináltam.

Nos a problémám az, hogy A Books Online-t olvasgatva sem Generátort nem találok, sem pedig GEN_ID-t...

Szóval, hogy csinálják az egyedi ID-t MSSQL alatt???

Ui: Ismerem a SELECT MAX(ID)... módszert, de a sebessége valamint a konkurrens hozzáférés miatt nem tartom jó ötletnek...

Előzmény: Ablakos indián (5)
Ablakos indián Creative Commons License 2002.12.23 0 0 5
Attól függ, mit értesz "free" alatt.

Az MSDE nem letölthető, viszont külön pénzbe sem kerül. Minden Office XP Professional (vagy jobb) tartalmazza -- az Access tartozéka, tehát minden Access-t is tartalmazó Office-ban benne van, használhatja az Office csomag tulajdonosa.

Van néhány olyan fejlesztői termék, aminek birtoklása az MSDE továbbterjesztésére is jogosít (redistribution). Ezek (valószínűleg a teljesség igénye nélkül): Visual Studio (6 és .NET is, de meg kell nézni, hogy az MSDE melyik változatát szabad terjeszteni velük), az Office Developer (szintén a 2000 és az XP is, de más-más MSDE-változatot terjeszthetsz), illetve az SQL Server 2000 Developer változat, valamint az MSDN Universal.

Ha ezek közül valamelyik megvan, akkor a redist.txt-t kell elolvasni, abban van az MSDE pontos terjesztési feltétel-rendszere.

Az MSDE két változata:
1. MSDE 1.0, avagy Microsoft Data Engine: ez az SQL Server 7.0 MSDE-változata.
2. MSDE 2.0, avagy Microsoft Desktop Engine: ez az SQL Server 2000 MSDE-változata.

Előzmény: bhubert (4)
bhubert Creative Commons License 2002.12.23 0 0 4
Igen, már én is átrágtam magam a leírásokon, és szép lassan elhatározásra jutok ezügyben :)

Amúgy ha jól értelmeztem, akkor csak abban az esetben free az MSDE, ha van bizonyos termékre liszenszed. pl. ilyen lehet a Visual Studio vagy az Office XP Developer.

Előzmény: Ablakos indián (3)
Ablakos indián Creative Commons License 2002.12.22 0 0 3
Szerintem is MSDE. Ha az a bizonyos 5 connection-os limitről szóló megjegyzésed erre vonatkozott, akkor eloszlatnám a homályt: MSDE-hez annyian csatlakozhatnak egyszerre, ahányan csak tudnak, ez önmagában nem lassítja. Egyszerre 5-nél több konkurrens műveletnél kezd lassulni (és meg ez is csak pongyola fogalmazás, az 5-ös limit egyfajta belső sorbanállásra vonatkozik, de közelíti a valóságot).
Előzmény: bhubert (-)
Kártékony Creative Commons License 2002.12.20 0 0 2
Előzmény: Kártékony (1)
Kártékony Creative Commons License 2002.12.20 0 0 1
Amit keresel az szerintem az MSDE.

Előzmény: bhubert (-)
Muster Mark Creative Commons License 2002.12.19 0 0 0
Postgresql?

A postgres lassú lesz, mivel nem multithread hanem multiprocess, de skálázható. Tud mindent (na jó: szinte mindent), pl saját PLsql-je van amire nagyon könnyen lehet oraclet postolni + van egy pgaccess nevű queryanalyzer + pl/pgsql fejlesztői eszköz is hozzá.

Viszont a multiprocess cuccok windowson lassúak. Gőzöm sincs, hogy nálad mennyire lesz lassú, 1 próbát szerintem megér.

Előzmény: bhubert (-)
bhubert Creative Commons License 2002.12.06 0 0 topiknyitó
Üdv!

Van egy problémám, mely eléggé bosszantó... Erre keresek megoldást.

Szóval kellene egy jó SQL szerver Windows alá, de annyira nem egyszerű a megoldás.

Eddig FireBird-et használtam (ez ugyebár open Interbase klón). Nagyon jó, csak van vele egy hatalmas problémám: a "kliens oldali" gds32.dll nem thread-safe! Mivel ez egy web-es project, ISAPI DLL-ből piszkálgatom a szervert és rendszeresen hibák jönnek elő (pl: Invalid transaction handle...) A hibajelenséget egyéb ötletek hiányában én ennek a non thread-safe dolognak tulajdonítom...

A kérdés tehát adott: Ki tud olyan SQL szervert ajánlani Windows alá, mely megfelel az alábbi követelményeknek:

- nem csak 1-5 connectet tud egyszerre lekezelni, hanem minimum 10-20-at, de legjobb egy korlátlan lenne
- thread-safe ! (Firebird itt esett ki)
- van benne: tranzakció, trigger, view és tárolt eljárás! (MySQL kiesett)
- ingyenes, vagy nem milliós nagyságrendű :) - MSSQL pedig itt :(

Ha esetleg valaki találkozott már az "Invalid transaction handle" hibaüzenettel szintén örömmel venném a tapasztalait!

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!