2017-02-15 5 views
1

Ich versuche, aus einer SQL Server-Datenbank zu lesen, die auf MS Azure, durch eine ASP.NET WebForms Website in Visual Studio erstellt wird gehostet 2013‚MultipleActiveResultsSets‘ Schlüsselwort nicht unterstützt

ich die Connection String gespeichert haben in Web.Config, und habe es in meinem Code-Behind referenziert. Wenn ich versuche, Default.aspx lokal auszuführen, wird der Fehler this angezeigt.

Hier ist mein Web.Config:

<connectionStrings> 
    <add name="FYPConnectionString1" 
    connectionString="Data Source=damo.database.windows.net‌​;Initial Catalog=Ballinora_db;   
    Persist Security Info=True; User ID={Username};Password={Password};" /> 
    </connectionStrings> 

I entfernt "MultipleActiveResultsSets = False" von der Connection String zu sehen, ob der Fehler nicht mehr, aber stattdessen nun der Fehler angezeigt für "Verschlüsseln".

So erscheint der Fehler für das nächste Element nach dem Kennwort Teil der Verbindungszeichenfolge. Hätte das Passwort etwas mit dem Problem zu tun?

Sind diese Benutzernamen und das Kennwort, die erforderlich sind, die Server Admin Login Details, die im Azure-Portal angezeigt werden? Hier

ist der Code-Behind auch:

private void bindRepeater() 
{ 
    string constr = ConfigurationManager.ConnectionStrings["FYPConnectionString1"].ConnectionString; 
    //-- assuming Azure connection string stored in ConnectionString config in Web.Config as YourConnString 
    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand("SELECT Name FROM Users", con)) 
     { 
      cmd.CommandType = CommandType.Text; 
      con.Open(); 
      SqlDataAdapter sda = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 
      repTest.DataSource = dt; 
      repTest.DataBind(); 
      con.Close(); 
     } 
    } 
} 

protected void btnDisplay_Click(object sender, EventArgs e) 
{ 
    this.bindRepeater(); 
} 
+0

Hallo, ich verwende auch Azure Cloud Server mit SQL-Datenbank. Ich habe meine Antwort aktualisiert. Und bitte beziehen Sie sich auf die "Verwandte" in der rechten Seite dieser Frage. Es gibt einige ähnliche Fälle mit dir. Hier sind auch die Links. 1) http://stackoverflow.com/questions/1404268/keyword-not-supported-data-source?rq=1 2) http://stackoverflow.com/questions/9236554/keyword-not-supported-name?rq = 1 –

+0

3) http://stackoverflow.com/questions/41647501/connectionstring-keyword-not-supported?rq=1 4) http://stackoverflow.com/questions/33599853/the-connection-does-not- support-multipleactiveresultsets-trotz-in-connec? rq = 1 5) http://stackoverflow.com/questions/41483766/databinding-keyword-not-supported-metadata?rq=1 –

Antwort

0

Der Standardwert von MultipleActiveRe sultSets ist False.

Und wenn Sie die Funktion nicht benötigen, nur raus (löschen) 'MultipleActiveRe sultSets = False' von Connectionstring.

Da der Standardwert falsch ist. Wenn Sie falsch wollen, müssen Sie es nicht mit Absicht schreiben.

Wir brauchen die Funktion von MultipleActiveReSultSets, während wir die zweite SQL-Verbindung innerhalb der while-Schleife von SqlDataReader der ersten SQL-Verbindung öffnen.

Warum jedoch 'MultipleActiveRe sultSets = False' als falsche Syntax erkannt wird, ist immer noch eine Frage.

Update-

Deshalb habe ich neugierig war, warum es falsch war. Ich denke, die Syntax für MultipleActiveRe sultSets und Encrypt hat kein Problem.

Hier ist meine Connection in Web.Config:

<connectionStrings> 
    <add name="GreenLeaf" connectionString="Server=tcp:greentree.database.secure.windows.net,1433;Database=greentea;User [email protected];Password=abc123;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;MultipleActiveResultSets=True;"/> 
</connectionStrings> 

Die Unterschiede bei Ihnen sind,

1) tcp 2) sicher 3) @greentree (der Server greentree zusammen mit ID wie (Greenusers @ greentree) 4) ohne Anbieter

"sicher" ist neue Funktion, die Azure automatisch sichere Verbindung zur Verfügung stellen, und Sie können darüber im Internet finden.

Überprüfen Sie die Firewall des Servers und versuchen Sie einfach, einen Schuss mit den oben genannten Punkten zu geben.

Die Verwendung der Administrator-ID ist korrekt, aber unter Sicherheitsaspekten müssen Sie zusätzliche Benutzer und Anmeldung für externe Benutzer mit eingeschränkten Rollen und Berechtigungen erstellen.

Können Sie über Azure Portal eine Verbindung mit Azure Server (Datenbank) herstellen? Visual Studio? Serververwaltungsstudio?

Wenn Sie Server Management Studio eingeben, gibt es im Popup für die Verbindung "Server Name". Geben Sie 'greentree.database.windows.net' dort ein und versuchen Sie, sich mit Ihren Administrator-Zugangsdaten anzumelden.

Oder können Sie eine Verbindung zu Azure Server ohne connectionString in Web.Config, aber in einfachem Code herstellen?

Und wenn möglich, bitte aktualisieren Sie mit der screencapture Ausnahme, nicht nur der Text.

Und zu guter Letzt, ich bin sicher, Sie wissen sehr gut, wir werden später aus Sicherheitsgründen den ConnectionString verschlüsseln müssen.

+0

Hallo @Kay Lee, habe ich entfernt 'MultipleActiveResultSets = False' aus der Verbindungszeichenfolge, aber dann wird immer noch derselbe Fehler angezeigt. Diesmal ist es jedoch für _Encrypt_. Aus irgendeinem Grund tritt dieser Fehler nach dem Kennwort innerhalb der Verbindungszeichenfolge auf. Gibt das zusätzliche Informationen? – user7554035

+0

Hallo, ich werde jetzt meine Verbindungszeichenfolge so ändern, dass sie wie deine aussieht, um zu sehen, ob das funktioniert. Ich kann mich in SQL Server Management Studio mit einer SQL Server-Authentifizierung anmelden. Aber wenn ich dieselben Login-Details in meine Verbindungszeichenfolge gebe, bekomme ich diesen Fehler – user7554035

+0

Ok, benutze den connectionString, der automatisch von Visual Studio oder Server Management Studio generiert wird. Und werfen Sie einen Blick auf ähnliche Fälle. –

0

Sie haben sich vertippt "MultipleActiveResultsSets". Das "Ergebnis" ist nicht Plural.

Richtiger Weg: "MultipleActiveResultSets".

Verwandte Themen