2008-09-30 8 views
5

Der Titel sagt so ziemlich alles. Ich möchte eine SqlConnection erstellen und dann diese Verbindung überprüfen, ohne eine Datenbank zu öffnen, denn an diesem Punkt weiß ich noch nicht, wo ich mich verbinde. Ist es möglich, das zu tun? Die SqlConnection-Klasse hat ein 'Open'-Member, das versucht, die Datenbank zu öffnen, die Sie in der Database-Eigenschaft festgelegt haben, und wenn Sie keine festgelegt haben, versucht SqlServer mit der Master-DB. Die Sache ist der Benutzer, mit dem ich versuche zu verbinden (MACHINE \ ASPNET) hat Zugriff auf einige Datenbanken (die ich noch nicht kenne) und nicht die Master-Datenbank.So testen Sie die SqlServer-Verbindung, ohne eine Datenbank zu öffnen

Grüße, Seba

+0

Also, wenn ich Sie richtig verstehe, versuchen Sie, die Liste der Datenbanken zu erhalten, für die der aspnet Benutzer Zugriff hat? –

Antwort

10

Connect to Temp db hat. Jeder hat Zugang zu tempdb, so dass Sie sich für den Zugriff authentifizieren können. Später, wenn Sie die tatsächliche Datenbank kennen, können Sie diese Eigenschaft ändern, um eine Verbindung zu der gewünschten Datenbank herzustellen.

0

Einfach nur neugierig ... Was Informationen können Sie, wenn Sie die genaue Datenbank, die Sie verbinden müssen nicht wissen, überprüfen? Viele Dinge, die mit der "echten" Datenbank schief gehen könnten, wären bei dieser Art von Testverbindung, wie etwa Konnektivität oder Sicherheit, nicht testbar.

+0

naja ... Ich will nur wissen, ob der Benutzer sich gegen den SqlServer authentifizieren kann, also ist es ein gültiger Server und ein gültiger Login in diesem Server ... Ich denke die Antwort ist NEIN, du kannst nicht – sebagomez

2

Ich bin mir nicht sicher, ob das ist, was Sie brauchen.

Check if a user has access to a database in Sql Server 2005

SELECT HAS_DBACCESS('Northwind'); 

HAS_DBACCESS gibt Auskunft, ob der Benutzer Zugriff auf die angegebene Datenbank (BOL).

Suche alle Datenbanken, die der aktuelle Benutzer Zugriff auf

SELECT [Name] as DatabaseName from master.dbo.sysdatabases 
WHERE ISNULL(HAS_DBACCESS ([Name]),0)=1 
ORDER BY [Name] 
+0

das ist nicht Was ich brauchte, aber danke – sebagomez

1

Wenn Sie nur wissen müssen, wenn der Dienst aktiv ist, versuchen Sie könnten über eine Buchse zum Anschluss an connet, um zu sehen, wenn es geöffnet ist

-1

Ich weiß nicht, ob Sie Ihre Antworten bekommen, aber als wir alle hier für Antworten, die ich hoffe, das ist, was Sie für

suchen
dim con as new sqlconnection 
con.connectionstring="<<put your conn string here>>" 
'try...catch block fires exception if the con is not successfully opened 
try 
con.open() 
catch ex as exception 
msgbox ex.message 
end try 
+0

Ich glaube nicht, dass Sie die Frage verstanden haben ... das ist genau mein Punkt und Lernings Antwort ist der Schlüssel zu meinem Problem 'Jeder hat Zugang zu tempdb' – sebagomez

Verwandte Themen