wake-up-neo.net

Verbindungszeichenfolge für den systemeigenen SQL Server-Client in ASP.NET web.config

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

4
vmb

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.

3
Mark Wagoner

Entfernen Sie den Provider = SQLNCLI11-Teil Ihrer Verbindungszeichenfolge. Dies ist keine unterstützte Eigenschaft und ist nicht erforderlich.

Ref: MSDN

1
dataspun

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:

1
Jesús López

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>
1

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

0
volkan

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>
0
Mark Vance

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" />
0
user5377037