Ich möchte eine Verbindung zu SQL Server 2012 mithilfe des nativen SQL Server-Clients von meiner ASP.NET-Anwendung herstellen. Derzeit habe ich eine vorhandene Verbindungszeichenfolge, die mit odbc verbunden ist und gut funktioniert.
<appSettings>
<add key="StagingConnect"
value="Integrated Security=True;Initial Catalog=Staging;Data Source=AUBDSG01.AUYA.NET\INST1"/>
</appSettings>
Wenn ich es wie unten versucht habe, löst der Code eine Ausnahme aus
<add key="StagingConnect"
value="Provider=SQLNCLI11;Integrated Security=True;Initial Catalog=Staging;Data Source=AUBDSG01.AUYA.NET\INST1"/>
Ausnahme:
System.Web.HttpUnhandledException (0x80004005): Es wurde eine Ausnahme vom Typ 'System.Web.HttpUnhandledException' ausgelöst.
System.ArgumentException: Schlüsselwort wird nicht unterstützt: 'provider'.
bei System.Data.Common.DbConnectionOptions.ParseInternal (Hashtable-Parsetable, String-ConnectionString, Boolean buildChain, Hashtable-Synonyme, Boolean firstKey)
unter System.Data.Common.DbConnectionOptions..ctor (String connectionString, Hashtable-Synonyme, Boolean useOdbcRules)
unter System.Data.SqlClient.SqlConnectionString..ctor (String connectionString)
unter System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (String connectionString, vorherige DbConnectionOptions)
unter System.Data.ProviderBase.DbConnectionFactory
Wie kann ich diese Verbindungszeichenfolge so ändern, dass die Verbindung über den nativen SQL Server-Client 11 hergestellt wird
Ich bin mir nicht sicher, wie genau das funktioniert, denn meine Verbindungszeichenfolge geht nicht in <appSettings>
, sondern in einen separaten <connectionStrings>
-Abschnitt. ProviderName ist ein Element und nicht Teil der Zeichenfolge selbst.
Hier ist ein Beispiel
<connectionStrings>
<clear />
<add name="xxx" providerName="System.Data.SqlClient" connectionString="Server=(local);Database=yyy;User=zzz;Password=123;MultipleActiveResultSets=True" />
</connectionStrings>
Hoffe das hilft.
Entfernen Sie den Provider = SQLNCLI11-Teil Ihrer Verbindungszeichenfolge. Dies ist keine unterstützte Eigenschaft und ist nicht erforderlich.
Ref: MSDN
Die erste Verbindungszeichenfolge ist keine ODBC Verbindungszeichenfolge, sondern eine SqlClient-Verbindungszeichenfolge.
Die zweite Verbindungszeichenfolge ist eine Ole Db-Verbindungszeichenfolge, die den SQL Server Native Client verwendet. Ihre Stack-Ablaufverfolgung zeigt jedoch, dass Sie SqlClient verwenden, um eine Verbindung zu SQL Server herzustellen.
Sie können den SqlClient- und den SQL Native-Client nicht gleichzeitig verwenden, um eine Verbindung zu SQL Server herzustellen. Um Native Client zu verwenden, haben Sie zwei Möglichkeiten:
Sie können SqlClient und TLS1.2 gemäß dem folgenden Microsoft Support-Artikel verwenden:
Ich denke, das Problem mit Ihrer Verbindung ist, dass Sie keine Remote-Verbindung zu SQL herstellen können, wenn Sie die Windows-Authentifizierung verwenden
Du kannst es so versuchen:
<appSettings>
<add key="StagingConnect"
value="data source=AUBDSG01.AUYA.NET\INST1;initial catalog=Staging;persist security info=True;user id=username;password=password;MultipleActiveResultSets=True"/></appSettings>
wenn Sie SqlConnection verwenden, verwenden Sie den Anbieternamen "System.Data.SqlClient", wenn Sie jedoch einen anderen Anbieter verwenden möchten
SqlConnection
<add key="StagingConnect"
value="Integrated Security=True;Initial Catalog=SampleDatabase;Data Source=."/>
OleDbConnection
<add key="StagingConnect2"
value="Provider=SQLNCLI11;Server=.;Database=SampleDatabase;
Trusted_Connection=yes;"/>
OdbcConnection
<add key="StagingConnect3"
value="Driver={SQL Server Native Client 11.0};Server=.;
Database=SampleDatabase;Trusted_Connection=yes;"/>
ich habe alle getestet und funktioniert gut. Ich hoffe, das wird helfen
sie könnten dies in Ihrer web.config testen. Dies erfordert, dass Ihr Benutzername und Ihr Passwort angezeigt werden. Ich bin nicht sicher, wie Sie die Verbindungszeichenfolge verwenden werden. Dies sollte funktionieren, sofern das verwendete Konto den Zugriff hat.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configSections>
<connectionStrings>
<add name="StagingConnect" connectionString="data source=AUBDSG01.AUYA.NET\INST1;initial catalog=Staging;persist security info=True;user id=user;password=password" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
Laut MSDN verwenden Sie Database.OpenConnectionString-Methode (String, String) :
var connectionString = "Data Source=.\\SQLExpress;Initial Catalog=SmallBakery;Integrated Security=True";
var providerName = "System.Data.SqlClient";
var db = Database.OpenConnectionString(connectionString, providerName);
var selectQueryString = "SELECT * FROM Product ORDER BY Name";
Fügen Sie diese Einstellung in web.config
hinzu:
<add name="ConnString" connectionString="Password=Secret;Persist Security Info=True;
User ID=MyUserID;Initial Catalog=SmallBakery;Data Source=.\\SQLExpress"
providerName="System.Data.SqlClient" />