SQL Server invoeren query zonder db naam

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Misschien een stomme vraag, maar ik krijg het zo niet gevonden.
Als ik SQL Manager 2005 Express een query invoer, dan moet ik daar altijd
de instance naam en de db naam ervoor zetten.

Bijv.:

SELECT * FROM [test].[test_db].[lijsten]
WHERE de_lijst_uid = 454564

Maar ik wil graag dat het als volgt werkt:

SELECT * FROM lijsten
WHERE de_lijst_uid = 454564

Dus zonder dat er steeds [test].[test_db]. voor geplakt moet worden.

Is dit ergens in te schakelen in SQL?
En hoe noemen ze het eigenlijk, want ik zal verkeerd zoeken denk ik.

Acties:
  • 0 Henk 'm!

  • chaoscontrol
  • Registratie: Juli 2005
  • Laatst online: 23:40
Bovenin de Management Studio kun je de default DB kiezen in een dropdown. Op deze DB voert hij je queries uit, default staat deze op master en dan werkt het inderdaad niet. :)

Inventaris - Koop mijn meuk!


Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Thanks!

Acties:
  • 0 Henk 'm!

  • Viper®
  • Registratie: Februari 2001
  • Niet online
je kan ook 'use [Database name]' opgeven in je SQL

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Het gaat nu meer over de client dan de server dus WSS -> CSA.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Ik heb beide opties geprobeerd, echter als ik onderstaande invoer:

SELECT * FROM lijsten

Dan krijg ik:

Msg 208, Level 16, State 1, Line 1
Invalid object name 'lijsten'.

Bij SELECT * FROM [database].[lijsten]

Krijg ik wel een uitkomst.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 00:44

Hero of Time

Moderator LNX

There is only one Legend

Anoniem: 216187 schreef op maandag 12 november 2012 @ 13:58:
Ik heb beide opties geprobeerd, echter als ik onderstaande invoer:

SELECT * FROM lijsten

Dan krijg ik:

Msg 208, Level 16, State 1, Line 1
Invalid object name 'lijsten'.

Bij SELECT * FROM [database].[lijsten]

Krijg ik wel een uitkomst.
Dus het uitvoeren van onderstaand levert een error?

USE database;
SELECT * FROM lijsten;

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Dat had ik nog niet geprobeerd, maar ook dat geeft inderdaad onderstaande error:

Msg 208, Level 16, State 1, Line 2
Invalid object name 'lijsten'.

Acties:
  • 0 Henk 'm!

  • Larko
  • Registratie: November 2006
  • Laatst online: 16-07 12:57
Zet eens een GO tussen beide regels, wellicht dat dit in 2005 nog als 1 geheel wordt uitgevoerd.
Dan krijg je dus:

USE test
GO
SELECT * FROM lijsten

Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Helaas.. nog steeds dezelfde fout.
Ook geprobeerd met haakjes: (ik krijg dan wel keuzelijsten, daar de database test nogmaals aangeklikt)

USE [test]
GO
SELECT * FROM [lijsten]

Maar toch wel vreemd, dat het alleen op de eerst genoemde manier wil werken...

Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Iemand nog een idee wat ik kan doen?

Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
Ik heb geen verstand van SQL Server, maar het valt me op dat je in de topicstart een soort dubbel niveau in je databasenaam hebt.
code:
1
SELECT * FROM [test].[test_db].[lijsten]


Dus ik denk dat het volgende zou moeten werken:
code:
1
2
USE [test].[test_db]
SELECT * FROM [lijsten]


offtopic:
Die vierkante haken snap ik niet. Kun je niet gewoon dit doen:
[code]
USE test.test_db
SELECT * FROM lijsten
[/code]

Acties:
  • 0 Henk 'm!

  • rvrbtcpt
  • Registratie: November 2000
  • Laatst online: 18-07 15:15
Die vierkante haken heb je alleen nodig als je databases / tabellen / velden met spaties wil gebruiken.

select * from mijn tabel werkt niet
select * from [mijn tabel] werkt wel

[ Voor 27% gewijzigd door rvrbtcpt op 20-11-2012 10:47 ]


Acties:
  • 0 Henk 'm!

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 16-07 15:59
Ik snap niet wat er nu het probleem is.
Je hebt een DB genaamd test met daarin een schema genaamd test_db.
En nu wil je vanuit de management studio een query draaien op de DB test?
Dan dien je alleen naar de juiste SQL server instance te connecten en uit de dropdown de juiste DB te selecteren.
Of zoals men zegt eerst met een USE statement aangeven welke DB je wilt gebruiken.

Computer says no


Acties:
  • 0 Henk 'm!

  • Jogai
  • Registratie: Juni 2004
  • Laatst online: 15-07 23:14
Kun je rechtsklikken op je database in de explorere in ssms? Kies dan voor "new query..." De query die je dan uitvoert zit binnen de context van de gekozen DB.

Klik hier om op linkedIn lid te worden van de Freelance Tweakers groep.


Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Dat werkt ook niet. De database zelf heet test, en de tabel test_db
Wat wel werkt is:

use [test]
SELECT * FROM [test_db].[lijsten]WHERE id = 1234772

Ik moet die tabel zet ik er liever niet telkens bij.

Anoniem: 216187

Topicstarter
In een andere SQL omgeving werkt het wel goed, ofwel zonder dat ik de tabel erbij moet vermelden.
Ik zie niet waar het mis gaat.

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:10

Cyphax

Moderator LNX
En de login die je gebruikt, mag die wel die tabellen benaderen? Waar log je mee in? sa?
Anoniem: 216187 schreef op dinsdag 20 november 2012 @ 19:45:
Dat werkt ook niet. De database zelf heet test, en de tabel test_db
Wat wel werkt is:

use [test]
SELECT * FROM [test_db].[lijsten]WHERE id = 1234772

Ik moet die tabel zet ik er liever niet telkens bij.
Als je tabel test_db heet, en je gaat hier proberen te selecteren uit iets dat "lijsten" heet... wat is "lijsten" hier? Weet je zeker dat je niet de owner van de db met de tabelnaam verwart of iets dergelijks?

[ Voor 75% gewijzigd door Cyphax op 29-11-2012 17:33 ]

Saved by the buoyancy of citrus


  • Joolee
  • Registratie: Juni 2005
  • Niet online
Anoniem: 216187 schreef op dinsdag 20 november 2012 @ 19:45:
Dat werkt ook niet. De database zelf heet test, en de tabel test_db
Wat wel werkt is:

use [test]
SELECT * FROM [test_db].[lijsten]WHERE id = 1234772

Ik moet die tabel zet ik er liever niet telkens bij.
Je tabel heet "test_db"? Wat is "lijsten" dan? een kolomnaam?

Toon eens een screenshot van je indeling want volgens mij snapt niemand er nu nog wat van.

Anoniem: 216187

Topicstarter
De user mag de tabellen benaderen.
Mijn database heet test, en de tabel test_db

[ Voor 3% gewijzigd door Anoniem: 216187 op 29-11-2012 17:48 ]


  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 13-07 19:16

edeboeck

mie noow noooothing ...

Anoniem: 216187 schreef op dinsdag 20 november 2012 @ 19:45:
Dat werkt ook niet. De database zelf heet test, en de tabel test_db
Wat wel werkt is:

use [test]
SELECT * FROM [test_db].[lijsten]WHERE id = 1234772

Ik moet die tabel zet ik er liever niet telkens bij.
Kijk eerst even naar de commentaren hierboven i.v.m. wat nu database is en wat tabel.
Syntax die normaal moet werken is:
quote: sql
SELECT * FROM [database].[dbo].[tabel]
Probeer daarnaast ook de suggestie die nog wat eerder al geformuleerd is: vergelijk beide instanties (werkende en niet-werkende) en controleer of je met dezelfde gebruiker aangemeld bent.

Edit:
Anoniem: 216187 schreef op donderdag 29 november 2012 @ 17:38:
De user mag de tabellen benaderen.
Mijn tabel heet test, en de tabel test_db
Dit zal je toch even opnieuw moeten verduidelijken (wat db is en wat tabel)? We mogen [Lijsten] dus vergeten?

[ Voor 19% gewijzigd door edeboeck op 29-11-2012 17:42 ]


Anoniem: 216187

Topicstarter
Edeboeck, op deze manier werkt het wel: SELECT * FROM [database].[dbo].[tabel]
Echter kost dit een hoop werk, ik zou graag
SELECT * FROM [tabel] WHERE product_uid = 12905455
willen kunnen gebruiken en dat werkt niet.

Op een geheel andere server werkt dit wel. Ik kan daar niets anders ontdekken.

Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Jullie weten niet hoe ik dat voor elkaar moet krijgen?

Acties:
  • 0 Henk 'm!

  • hellknight
  • Registratie: Januari 2003
  • Laatst online: 18:03

hellknight

Medieval Nerd

USE [databasenaam]
GO
SELECT * FROM [dbo].[lijsten] WHERE product_uid = 12905455

zal werken

je zal altijd moeten definiëren welke scheme je tabel in zit

je hebt 3 objecten/nivea's:
Database: bij jou [test_db]
Scheme: in de meeste gevallen standaard [dbo]
Tabel: in jou geval [lijsten]

Your lack of planning is not my emergency


Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Maar het heeft op een andere server waar deze database draaide gewerkt
zonder het schema te definieren. (ik kan echter niet meer bij de server om te zien wat anders was)

Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 13-07 19:16

edeboeck

mie noow noooothing ...

Heb je al een default database ingesteld?
Ofwel via de GUI (Security > Logins > jouw-login > Properties > Default database)
ofwel via code... voer in dat geval volgende query uit:
quote: sql
Exec sp_defaultdb @loginame='jouw-login', @defdb='default-db'
Werkt dit?

Acties:
  • 0 Henk 'm!

Anoniem: 216187

Topicstarter
Jep, de default database staat goed.
Ik heb het net ook nog met de SQL query uitgevoerd. (als extra)
Echter krijg ik nog steeds de volgende melding als ik de query uitvoer:

Msg 208, Level 16, State 1, Line 2
Invalid object name 'tabel'.

Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 13-07 19:16

edeboeck

mie noow noooothing ...

Kan het iets te maken hebben met het feit dat de table in deze db in een ander "schema" zit?
Kan je voor de zekerheid even testen met andere tabellen (ev. in andere databases) op deze server?
Pagina: 1