2009-06-03 6 views
0

Ich habe ein Problem mit einem Komponententest, den ich erstellt habe. Zum ersten Mal tut dies so bin ich nicht sicher, warum ich diese Störung erhaltenKomponententest und SQL-Datenbank Verbindung

<DeploymentItem("ETDS.exe")> <DataSource("System.Data.SqlClient", "Data Source=Foo;Initial Catalog=FooDB;Integrated Security=True", "User_Names", DataAccessMethod.Sequential)> <TestMethod()> _ 
Public Sub ValidateUserNameTest() 
    Dim target As Login_Accessor = New Login_Accessor ' TODO: Initialize to an appropriate value 
    Dim expected As Boolean = True ' TODO: Initialize to an appropriate value 
    Dim actual As Boolean 
    actual = target.ValidateUserName 
    Assert.AreEqual(expected, actual) 
End Sub 

Der Fehler Ich erhalte ist

Prüfnorm ETDS_Unit_Tests.LoginTest.ValidateUserNameTest Ausnahme ausgelöst hat: System.Data.SqlClient.SqlException : Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass Remoteverbindungen zugelassen werden. (Anbieter: Named Pipes Provider, Fehler: 40 - Verbindung zu SQL Server konnte nicht hergestellt werden).

Dies ist die gleiche Verbindung, die meine Software verwendet, und die Software läuft gut, nur der Komponententest schlägt fehl. Was mache ich falsch?

Bearbeiten Es scheint einmal für jeden Datarow in der Tabelle fehlschlagen. Außerdem verwende ich eine Linq-Abfrage in der Methode, die ich getestet habe. Ich glaube, dass dies möglicherweise meinen Fehler verursacht hat.

Antwort

0

Da Sie integrierte Sicherheit verwenden, ist das Problem höchstwahrscheinlich: "Wer führt den Test durch und welche Rechte haben sie für das Netzwerk und/oder den SQL Server?". Wenn es sich um ein lokales Computerkonto handelt, ist es wahrscheinlich nicht einmal über das Netzwerk möglich.

Ich bemerkte, dass die Verbindungszeichenfolge nicht Server=

hat Wenn Sie lokal anschließen, es Server=(local)

+0

Dies wäre nicht ein Problem. Ich betreibe dies auf der gleichen Box, auf der ich es entwickle. –

0

Haben Sie die Foo alias Setup in Ihrer lokalen SQL Native Client-Konfiguration haben sollte? Ohne dass die "Datenquelle = Foo;" Referenz in Ihrer Verbindungszeichenfolge funktioniert nicht.

+0

Können Sie die SQL Native Client-Konfiguration erklären? Ich bin nicht sicher, ob dieser Alias ​​eingerichtet ist, aber ich vermute, dass ein Problem mit der LINQ-Abfrage vorliegt. –

+0

Wenn Sie den SQL Server-Konfigurationsmanager öffnen (vorausgesetzt, Sie führen SQL 2005 oder 2008 aus), erweitern Sie die SQL Native Client-Konfiguration im Strukturbereich gibt es einen Aliasknoten. Wenn Sie dort keinen Eintrag namens "Foo" haben, funktioniert Ihre Datenquellenreferenz nicht, da sie nicht weiß, wo sie nach Foo suchen soll. – BenA

+0

Nein, das ist nicht das Problem. Die Verbindungszeichenfolge funktioniert im Projekt einwandfrei und entspricht der Verbindungszeichenfolge, die meine Anwendung verwendet. –

0

Ich habe keine Ahnung, ob dies das gleiche wie das OP ist, aber die Lösung, die ich zu einem sehr ähnlichen Problem gefunden habe, war Provider=SQLOLEDB; der Verbindungszeichenfolge hinzuzufügen.