locked
sema es tabla RRS feed

  • Question

  • hali

     

    van 3 tablam, a tabla neve ugyan az dbo.tabla, cz.tabla, hu.tabla

    van egy pr2 user, akinek a default sema a CZ.

     

    ezek utan az alabbi kis kodot nem egeszen ertem...

     

    create proc dbo.Leker

    as

    select schema_name() as CurrentSchema

    select * from Tabla

    go

    setuser 'pr2'

    exec dbo.Leker

    select * from Tabla

    select * from CZ.Tabla

    select schema_name()

    setuser

     

    amit en vartam, hogy az exec Leker vagy a dbo vagy a CZ tablat adja

    a select * from tabla a CZ.Tablat adja

    hiszen ez a default semam.

    de nem!

    ezt kapom:

     

    CurrentSchema

    CZ

    (1 row(s) affected)

    id co nev

    1 DB one

    2 DB two

    (2 row(s) affected)

    id co nev

    1 DB one

    2 DB two

    (2 row(s) affected)

    id co nev

    1 CZ jedno

    2 CZ dwa

    (2 row(s) affected)

     

    CZ

    (1 row(s) affected)

     

    erdekesseg meg, hogy ha nincs dbo.Tabla, akkor az exec Lekerdez elszall hibaval, hogy nincs Tabla, de a select * from tabla az meg megy es listazza a CZ.tablat.

     

    hogan tudom elerni, hogy a Lekerdez a Current_Schema szerinti tablat talalja meg? (epp az lenne a lenyeg, hogy nincs elottea sema nev es ezert attol fugg ki hivj ameg, hogy melyik tabla tartalmat kapja vissza)

     

    a result set a drop table dbo.Tabla utan:

    CurrentSchema

    CZ

    (1 row(s) affected)

    Msg 208, Level 16, State 1, Procedure Leker, Line 4

    Invalid object name 'Tabla'.

    id co nev

    1 CZ jedno

    2 CZ dwa

    (2 row(s) affected)

    id co nev

    1 CZ jedno

    2 CZ dwa

    (2 row(s) affected)

     

    CZ

    (1 row(s) affected)

    Monday, August 6, 2007 2:41 PM

Answers

All replies

  • Úgy tűnik, hogy a stored procedure owner bekavar, mert ez alapján hozza létre a lekérdezési tervet. Sajnos ez csak úgy fog működni, ha külön a cz, hu schemában is van egy ugyanilyen tárolteljárásod. Úgyhogy az előző kérdésre (design pattern-re) ez is csak fenntartásokkal jó. Viszont 1 jó telepítő készlettel, ez könnyen megoldható, de ez már majdnem ua mint a több db...

     

     

     

    Tuesday, August 7, 2007 11:52 AM
    Moderator
  •  

    az igazi kerdes, hogy ez bug es az SP X majd javitja vagy by design ez igy lett kitalalva?

    nekunk meg csap SP1unk van igy pl nem tudom, ohgy SP2n is igy muxik-e. valaki ki tudna probalni? Wink

    Wednesday, August 8, 2007 8:22 PM
  • Sajnos sp2-n is igy van. Nem tudom, hogy ez bug vagy feature!

     

     

    Thursday, August 9, 2007 10:08 AM
    Moderator
  •  

    Már a connect-en van ilyen request, szavazz te is rá:

     

    https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=272964

     

    De a bol-ban itt leírták:

     

    ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/e698c504-24d8-4d2e-bd33-f0d6fe977ffc.htm

     

    Ennél a résznél:

     

    Qualifying Names Inside Stored Procedures

     

    Thursday, August 9, 2007 10:19 AM
    Moderator