attix22
Goto Top

Csharp Problem bei Datenbankverbindung

Hallo,

ich habe folgendes Problem:

Eine ASP Anwendung greift auf eine an eine Instanz angehängte Datenbank zu.
Dies wird geändert, die Datenbank wird nun fest auf einem SQLServer eingebunden. (SQL Server 2008 SP2)
Den ConnectionString der Anwendung habe ich bereits geändert und getestet, die Anwendung kann sich mit der Datenbank verbinden.

Mehr als die Verbindung öffnen oder schließen funktioniert jedoch nicht.
Bsp: "SELECT * FROM table1" funktioniert nicht. Der Debugger meldet # Ungültiger Objektname 'table1' #.
Gebe ich die gleiche Abfrage im SQL Managment Studio ein, wird diese anstandslos ausgeführt.

Mach ich syntaktisch etwas falsch? Ich habe bereits verschiedene Versionen dieses simplen Befehls probiert:
"SELECT * FROM table1"
"SELECT * FROM dbo.table1"
"SELECT * FROM Database.dbo.table1"
und das ganze noch mit [ und ] um die entsprechenden Teile.

Jedesmal meldet der Debugger jedoch, dass der Teil nach FROM ein Ungültiger Objektname sei.

Vielleicht kennt jm dieses Problem und weiß schnelle abhilfe, ich denke das ich im Moment nur einfach nicht durchblicke was da falsch sein soll.

Gruß Attix22

Content-ID: 157387

Url: https://administrator.de/contentid/157387

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

Xaero1982
Xaero1982 21.12.2010 um 17:03:11 Uhr
Goto Top
Moin,

ein bissel mehr Code wäre wünschenswert.

Poste mal alles relevante für die Datenbank was in deinem Code vorkommt.

VG
filippg
filippg 21.12.2010 um 17:09:53 Uhr
Goto Top
Hallo,

Eine ASP Anwendung greift auf eine an eine Instanz angehängte Datenbank zu.
Dies wird geändert, die Datenbank wird nun fest auf einem SQLServer eingebunden. (SQL Server 2008 SP2)
Verstehe ich schonmal nicht. Eine Tabelle ist (in MS SQL) immer Teil einer DB, welche wiederum immer Teil einer MS SQL-Server-Instanz ist. Auf einem Server können mehrere Instanzen laufen, läuft dort nur eine, so ist es trotzdem eine Instanz.

Bsp: "SELECT * FROM table1" funktioniert nicht. Der Debugger meldet # Ungültiger Objektname 'table1' #.
Nicht ausgeschlossen ist, dass dein C#-Code falsch ist (die SQL-Statements musst du ja an die entsprechende ADO-Klasse übergeben).
Möglich ist auch, dass du vielleicht doch zur falschen DB (oder Instanz) verbindest, und es dort die Tabelle nicht gibt. Das könnte man ja mal mit einem "SELECT * FROM sys.Tables" testen. Ist der Nutzer eigentlich entsprechend berechtigt?

"SELECT * FROM Database.dbo.table1"
DBs und Tabelle trennt man, soweit ich mich erinnere, mit zwei Punkten. Also: SELECT * FROM Database..Table"

Gruß

Filipp
32067
32067 21.12.2010 um 17:19:12 Uhr
Goto Top
Hast du dich am Management Studio wirklich mit demselben User angemeldet wie deine Anwendung ?

Ich denke, du solltest bei dem benutzten User im SQL Server nochmal gucken, welche Default-Datenbank da eingetragen ist und ggf. auf die hier richtige ändern. Dann nochmal gucken, ob der User überhaupt Rechte auf diese Datenbank bekommen hat oder nur allgemein auf dem Server eingerichtet wurde. Das alleine sorgt noch nicht für Rechte auf die Daten.
Biber
Biber 21.12.2010 um 18:24:35 Uhr
Goto Top
Moin attix22,

ergänzend zu den anderen Tipps:
Du kannst, wenn dein DB-User das darf, den Katalog-Kontext der benutzten Tabellen setzen mit USE:
USE MeinLieblingsSchema;
-- und danach ohne [vollständige Addressierung] weiter:
SELECT whatever from [ownername.]wattDuWutt;
attix22
attix22 21.12.2010 um 19:06:38 Uhr
Goto Top
Hallo, vielen Dank für die Antworten.
Leider bin ich grad unterwegs und kann nur kurz schreiben. Ich melde mich morgen zu den einzelnen Punkten.