[SQL]Query in andere database lukt niet

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
Ik heb twee databases: visitors en CA3K. Ik wil vanuit visitors een query uitvoeren op wat tabellen in de database CA3K, echter in krijg de foutmelding:

The multi-part identifier "CA3K.dbo.Inlist.Badge" could not be bound.


beide databases draaien op dezelfde server. Wat doe ik verkeerd ? Als er meer info nodig is hoor ik het wel

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Heeft het account dat de query uitvoert rechten op beide databases?

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
heb ik alles nagelopen, maar geen verbetering

Acties:
  • 0 Henk 'm!

  • geez
  • Registratie: Juni 2002
  • Laatst online: 23-09 17:13
Kun je je query posten? Google levert ook een boel op trouwens.

[ Voor 79% gewijzigd door geez op 22-01-2009 20:15 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Wel handig om aan te geven wat de query is, wat de datastructuur is, en niet te vergeten over wat voor database het gaat (MySql, MsSQL, Access ??).

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
de query (MS SQL 2005) is als volgt:
code:
1
2
3
4
5
6
        update CA3K.dbo.Badge
        set Enabled=0, 
            Flag=1
        where Badge.Badge=CA3K.dbo.Inlist.Badge AND
                Badge.facility=CA3K.dbo.Inlist.Facility
                and CA3K.dbo.Inlist.Name='drop me'

Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 06:59

remco_k

een cassettebandje was genoeg

pkouwer schreef op donderdag 22 januari 2009 @ 20:23:
de query (MS SQL 2005) is als volgt:
code:
1
2
3
4
5
6
        update CA3K.dbo.Badge
        set Enabled=0, 
            Flag=1
        where Badge.Badge=CA3K.dbo.Inlist.Badge AND
                Badge.facility=CA3K.dbo.Inlist.Facility
                and CA3K.dbo.Inlist.Name='drop me'
Foutmeldingen moet je altijd goed lezen, komt veel info uit, zie regel 4 in je sql code.
"CA3K.dbo.Inlist.Badge"
Daar zit vast een typo of rechten probleem.

[ Voor 17% gewijzigd door remco_k op 22-01-2009 20:29 ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
ik heb ondertussen wat met de dbo. zitten spelen, maar 't wil niet echt lukken. Rechten heb ik al gecontroleerd, zal het nogmaals nalopen

Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 06:59

remco_k

een cassettebandje was genoeg

pkouwer schreef op donderdag 22 januari 2009 @ 20:34:
ik heb ondertussen wat met de dbo. zitten spelen, maar 't wil niet echt lukken. Rechten heb ik al gecontroleerd, zal het nogmaals nalopen
Wat ik bedoelde met mijn post, was dat dit "CA3K.dbo.Inlist.Badge"
Mij wat raar staat. Of de tabel Inlist bestaat niet, of er zijn geen rechten voor.
Of de kolom Badge bestaat niet, of er zijn geen rechten voor.

[ Voor 21% gewijzigd door remco_k op 22-01-2009 20:37 ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
nee, als ik de query in de SSMS laat checken krijg ik accoord, uitvoeren lukt alleen niet

Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 06:59

remco_k

een cassettebandje was genoeg

Ik heb m'n post boven je geedit, ik had onzin uitgekraamd. Misschien dat er nu wat nuttigs staat.
Edit:
SSMS checked toch alleen de syntax? Die controleerd toch niet of de objecten bestaan of toegankelijk zijn?
(Nou ben ik niet erg thuis in MSSQL, dus het kan zijn dat ik nu onzin uitkraam)

[ Voor 50% gewijzigd door remco_k op 22-01-2009 20:40 ]

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • CHeff
  • Registratie: Oktober 2002
  • Laatst online: 19-09 23:37

CHeff

Allemaal gekkigheid

remco_k schreef op donderdag 22 januari 2009 @ 20:38:
..
SSMS checked toch alleen de syntax? Die controleerd toch niet of de objecten bestaan of toegankelijk zijn?
(Nou ben ik niet erg thuis in MSSQL, dus het kan zijn dat ik nu onzin uitkraam)
Yup, die controleert alleen de syntax.

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
lijkt erop dat dan de syntax, en mijn gedachte om het op deze manier uit te voeren, correct is. Wat bedoelt hij dan met "could not be bound" ?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:37

Creepy

Tactical Espionage Splatterer

pkouwer schreef op donderdag 22 januari 2009 @ 19:58:
Ik heb twee databases: visitors en CA3K. Ik wil vanuit visitors een query uitvoeren op wat tabellen in de database CA3K, echter in krijg de foutmelding:

The multi-part identifier "CA3K.dbo.Inlist.Badge" could not be bound.


beide databases draaien op dezelfde server. Wat doe ik verkeerd ? Als er meer info nodig is hoor ik het wel
No offence maar zo werkt het hier niet en dat weet je zelf ook wel ;)

Dus wat heb je zelf geprobeerd om je probleem op te lossen? Wast lukte daar niet mee? Alleen je foutmelding dumpen en hopen dat wij het voor je gaan fixen is niet de bedoeling. Je kan op z'n minst (!) je query geven (en dat alleen is eigenlijk nog veel te weinig informatie...)

Dus lees aub PRG Beleid en Het algemeen beleid #topicplaatsen eens door en geef aub (veel) meer info dan dat je nu geeft. We zijn hier geen helpdesk ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
ok, ik zal hier rekening mee houden.

Ik zal proberen wat meer info te geven zie ook hier

het gaat om een query uit te voeren van de ene naar de andere database. Ik heb ok google gezocht, maar kan niet lekker vinden hoe van de ene database naar de andere database te verwijzen.

Acties:
  • 0 Henk 'm!

  • Cousin Boneless
  • Registratie: Juni 2008
  • Laatst online: 28-02 12:55
Ik kan me herinneren dat stored procedures onder iets anders dan 'dbo' in de database kunnen worden geregistreerd.. misschien kan dat bij tabellen ook gebeuren. Door de database te scripten kun je zien waar het onder valt. Voor de rest lijkt me de constructie correct.. zie 'm dagelijks.

Edit: Ligt het aan mij of zit er geen koppeling tussen de tabel die je wijzigt en de where clause? Zou betekenen dat je alle records update.. (probeer anders eerst eens een simpele select * from ..)

Volgens mij zoiets.. (afgeleid uit andere topic) maar is me niet duidelijk wat van welke database moet komen:
SQL:
1
2
3
4
5
update b
set b.enabled=0,
      b.flag=1
from CA3K.dbo.Badge b
inner join inlist i on i.badge = b.badge and i.facility = b.facility


De oorzaak van de foutmelding is dus dat je velden gebruikt waarvan je de tabelnaam niet hebt vermeld in een 'from'. De tabelnaam achter 'update' hoeft niet expliciet in de from te worden vermeld, dus die velden worden wel herkend.

[ Voor 103% gewijzigd door Cousin Boneless op 23-01-2009 00:21 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
pkouwer schreef op donderdag 22 januari 2009 @ 20:23:
de query (MS SQL 2005) is als volgt:
code:
1
2
3
4
5
6
        update CA3K.dbo.Badge
        set Enabled=0, 
            Flag=1
        where Badge.Badge=CA3K.dbo.Inlist.Badge AND
                Badge.facility=CA3K.dbo.Inlist.Facility
                and CA3K.dbo.Inlist.Name='drop me'
Gokje, maar hij valt niet over die CA3K.dbo.Badge en wel over die CA3K.dbo.Inlist..Badge. Klein verschilletje wat waarschijnlijk de fout is.

Anders snap ik de hele query al niet, je update db 1 en welke regels je wilt updaten dat bepaal je door in db 2 en 3 dingen te vergelijken? Nergens bepaal je welke records je in db1 wilt wijzigen.

Feitelijk zeg je volgens mij, lap bij huis 1 de ramen waar de ramen bij huis 2 en 3 gelijk zijn...

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
ik wil uit de inlist records verwijderen, in badge records updaten en readers helemaal niets. Ik kom hier morgenochtend wel uitgebreid op terug.

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Tja, simpel gezegd :
- Je geeft geen delete statement op, dus hoe je iets uit inlist wil verwijderen is mij een raadsel.
- Je specificeert geen records in Badge, dus of alles wordt geupdate of niets wordt geupdate ( of je sql redt je met een foutmelding :) )
- readers zie ik helemaal nergens terug komen, dus dat je daar niets in wilt veranderen gaat goed :) hij komt gewoon niet voor in je query.

Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
ok, ik haal hier twee open topics door elkaar. ik moet even e.e.a. uitzoeken.

de situatie is dat ik uit mijn eigen applicatie 's nachts wat queries moet uitvoeren, op twee verschillende databases waarmee mijn app. een koppeling heeft. Ik doe dit door eenStored Procedure aan te roepen. Alternatief is om via een Job de query te splitsen en apart uit te laten voeren.

Acties:
  • 0 Henk 'm!

  • Acid__Burn
  • Registratie: Maart 2007
  • Laatst online: 23-09 12:38
Gomez12 schreef op vrijdag 23 januari 2009 @ 00:32:
Tja, simpel gezegd :
- Je geeft geen delete statement op, dus hoe je iets uit inlist wil verwijderen is mij een raadsel.
- Je specificeert geen records in Badge, dus of alles wordt geupdate of niets wordt geupdate ( of je sql redt je met een foutmelding :) )
- readers zie ik helemaal nergens terug komen, dus dat je daar niets in wilt veranderen gaat goed :) hij komt gewoon niet voor in je query.
Dat klopt inderdaad, maar Enabled op 0 zetten lijkt mij ook een soort van delete. Neem aan dat in de app de enabled = 0 records niet worden getoond.

Om terug te komen op het verhaal m.b.t. de query: het is niet mogelijk om te zeggen: CA3K.dbo.Inlist.Badge. Hiervoor zul je een join moeten gebruiken. Daarnaast kun je beter gebruik maken van prefixes, om zo je query (of Stored Procedure) leesbaar te houden:


Original:
code:
1
2
3
4
5
6
        update CA3K.dbo.Badge
        set Enabled=0, 
            Flag=1
        where Badge.Badge=CA3K.dbo.Inlist.Badge AND
                Badge.facility=CA3K.dbo.Inlist.Facility
                and CA3K.dbo.Inlist.Name='drop me'



Changed:
code:
1
2
3
4
5
6
7
8
        update BADGE
        set Enabled=0, 
              Flag=1
        FROM INLIST I
        JOIN BADGE B
            ON I.BADGE = B.BADGE
            AND I.FACILITY = B.FACILITY
        WHERE I.NAME = 'DROP ME'



(zie mijn gewijzigde code in hoofdletters)

Daarnaast kun je dan nog een uitbreiding maken door de tabel in de FROM clausule en de JOIN clausule uit een andere database te laten komen.

[ Voor 23% gewijzigd door Acid__Burn op 23-01-2009 08:15 ]


Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
het lijkt te werken. Ik was me er niet van bewust, ook nooit van toepassing geweest of tegen aan gelopen, dat een update ook een from statement moet hebben.

bedankt voor alle hulp !!

Acties:
  • 0 Henk 'm!

  • CMG
  • Registratie: Februari 2002
  • Laatst online: 10-12-2024

CMG

pkouwer schreef op zondag 25 januari 2009 @ 10:54:
het lijkt te werken. Ik was me er niet van bewust, ook nooit van toepassing geweest of tegen aan gelopen, dat een update ook een from statement moet hebben.

bedankt voor alle hulp !!
een from is dan ook enkel nodig als je gaat joinen, etc. Als je gewoon 1 tabel aanpast met vergelijkingen tegen vaste waardes, dan heb je geen from nodig.

NKCSS - Projects - YouTube

Pagina: 1