En fråga om Visual Studio 2019 och Sql Express databas

Permalänk
Medlem

En fråga om Visual Studio 2019 och Sql Express databas

Jag har skapat en databas i Visual Studio 2019 och försöker köra sql kommandon mot den men får bara felmeddelandet att "Invalid object name 'Recipe". Beror det på att databasen är vald som master? När jag klickar på den menyn får jag upp master, model, msdb och tempdb men inte min egen. Någon som vet hur jag fixar detta? Här är en screenshot ifrån visual studio.

Permalänk
Keeper of the Bamse

Du måste köra:
Select * from cookbook..recipe (två punkter) för att berätta att den ska kolla tabellen recipe under databasen cookbook.

Eller, snabbedit innan advokaterna kommer:

USE CookBook
Select * from recipe (nolock)

Visa signatur

i7 10770K, NH-D15. 16GB corsair. RTX 3080. 3TB nvme. Samsung G9. Fractal Torrent Compact. Corsair RM850.
Logitech G pro wireless mouse. Logitech TKL915 wireless. Logitech Pro X Wireless.
Macbook M3 (16GB, 512GB). HP Reverb G2.
www.bamseclockers.com

Permalänk
Medlem

När jag kör det första kommandot du skrev får jag svaret "Invalid object name 'cookbook..recipe'.
" och är jag kör det andra "Database 'CookBook' does not exist. Make sure that the name is entered correctly."

Permalänk
Medlem

Låter inte som Cookbook är skapad ... åtminstone inte på den server där du är aktiv. Men i skärmbilden ser den ok ut?

Mvh Lazze

Permalänk
Medlem

Ja det är det som är så märkligt, databasen finns som du ser men jag får inte upp den i listan över tillgängliga databaser när jag klickar där det står master. Det hjälper inte ens om jag klickar på new query när jag högerklickar på CookBook.mdf i server explorer.

Permalänk
Medlem

Det som brukar bli fel när man jobbar med Entity Framework (vet inte om du gör det) är att man skapat sin databas i localdb, vilket är en minivariant av SQL Server som kan användas vid utveckling, men sedan ansluter manuellt till den ”riktiga” SQL Server-instansen, där databasen följdaktligen inte är skapad.

Jag kör aldrig den inbyggda SQL-browsern i Visual Studio utan SQL Server Management Studio (SSMS), så jag känner inte igen mig på din skärmdump. SSMS är gratis att ladda ner. Om du vill ha bättre hjälp kan det vara läge att visa din ConnectionString och hur det ser ut i anslutningsinställningarna när du ansluter manuellt till databasen via VS eller SSMS. Det brukar gå att välja ”initial catalog” eller liknande för att hamna i rätt databas direkt.

/Från mobilen på datorlös semester utan möjlighet att kolla detaljer.

Edit: Om möjligheten finns i VS, högerklicka på tabellen och kolla om du får upp ett val som genererar ett nytt fönster med en färdig ”SELECT TOP(1000) * FROM...”.

Edit2: Jag gissar att du skapat databasen i localdb, men det aktiva fönstret på skärmdumpen är på den riktiga servern (SQL Express, i databasen Master). Men på den riktiga servern finns som sagt inte databasen Recipe, så ”USE Recipe” kommer inte fungera.

Permalänk
Medlem

Ser ut som en koppling direkt mot en lokal mdf-fil. Antar att Visual Studio gör det åt en om man inte anger annat.

Vad händer om du expanderar servern under Servers? Kommer du åt servern, och kan skapa en databas där? Isf behöver du bara fixa till din connectstring (och ev behörigheter på servern). 🙂

Visa signatur

-- FubbHead

Permalänk
Medlem

MDF filer kan du inte köra queries mot direkt, utan du måste attacha dem till server först.
Det blir en connectionstring liknande:

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\CookBook.mdf;Integrated Security=True; Connect Timeout=30; User Instance=True"

|DataDirectory| är en path till CurrentProject\App_Data
Har du din MDF i någon annan path så får du specificera det.

Jag rekommenderar att du antingen skapar din SQL databas först i SSMS eller via EF Core.

Att gå via Add New Item > Data > SQL Server Database för att skapa en .mdf fil är (tycker jag) mer omständigt. Då får du även filen liggandes och skräpa i projektet.

Vill du slippa göra om detta så kan du via SSMS välja att attacha MDF till en databas genom att:
(I SSMS) Högerklicka Databases > Attach > Add > Välj din MDF > OK

Sen kan du i Visual Studio connecta till din Server=.\SQLExpress;Database=CookBook;
Dv.s. din lokala server inte dina Data Connections.