web-dev-qa-db-fra.com

Chaîne de connexion pour le client natif SQL Server dans ASP.NET web.config

Je souhaite me connecter à SQL Server 2012 à l'aide du client natif SQL Server à partir de mon application ASP.NET. Actuellement, une chaîne de connexion existante se connecte à l'aide de odbc et fonctionne correctement.

<appSettings>
    <add key="StagingConnect" 
         value="Integrated Security=True;Initial Catalog=Staging;Data Source=AUBDSG01.AUYA.NET\INST1"/>
</appSettings>

Quand j'ai essayé comme ci-dessous, le code lève une exception

<add key="StagingConnect"  
     value="Provider=SQLNCLI11;Integrated Security=True;Initial Catalog=Staging;Data Source=AUBDSG01.AUYA.NET\INST1"/>

Exception:

System.Web.HttpUnhandledException (0x80004005): Une exception de type 'System.Web.HttpUnhandledException' a été levée.

System.ArgumentException: Mot clé non pris en charge: "fournisseur".
à System.Data.Common.DbConnectionOptions.ParseInternal (Hashtable parsetable, String connectionString, Boolean buildChain, synonymes de Hashtable, Boolean firstKey)
à System.Data.Common.DbConnectionOptions..ctor (String connectionString, synonymes Hashtable, utilisation booléenne Boolean useOdbcRules)
à System.Data.SqlClient.SqlConnectionString..ctor (String connectionString)
sur System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (String connectionString, DbConnectionOptions précédent)
sur System.Data.ProviderBase.DbConnectionFactory

Comment modifier cette chaîne de connexion afin qu'elle se connecte via le client natif SQL Server 11

4
vmb

Vous ne savez pas exactement comment cela fonctionne auparavant, car ma chaîne de connexion ne va pas dans <appSettings> mais dans une section <connectionStrings> séparée. Et providerName est un élément et ne fait pas partie de la chaîne elle-même.

Voici un exemple

  <connectionStrings>
    <clear />
    <add name="xxx" providerName="System.Data.SqlClient" connectionString="Server=(local);Database=yyy;User=zzz;Password=123;MultipleActiveResultSets=True" />
  </connectionStrings>

J'espère que cela t'aides.

3
Mark Wagoner

Supprimez la partie fournisseur = SQLNCLI11 de votre chaîne de connexion. Il ne s'agit pas d'une propriété prise en charge, elle est inutile.

Réf: MSDN

1
dataspun

La première chaîne de connexion n'est pas une chaîne de connexion ODBC, il s'agit d'une chaîne de connexion SqlClient.

La deuxième chaîne de connexion est une chaîne de connexion Ole Db qui utilise SQL Server Native Client. Mais votre trace de pile indique que vous utilisez SqlClient pour vous connecter à SQL Server.

Vous ne pouvez pas utiliser simultanément SqlClient et le client SQL Native pour vous connecter à SQL Server. Pour utiliser Native Client, vous avez deux options:

Vous pouvez utiliser SqlClient et TLS1.2 conformément à l'article suivant du support Microsoft:

1
Jesús López

Je pense que le problème de votre connexion est que vous ne pouvez pas vous connecter à distance à SQL lorsque vous utilisez l'authentification Windows.

Vous pouvez essayer comme ça:

<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

si vous utilisez SqlConnection, utilisez le nom du fournisseur "System.Data.SqlClient", mais si vous souhaitez utiliser un autre fournisseur. 

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;"/>

je les ai tous testés et fonctionne bien. J'espère que cela aidera

0
volkan

vous pouvez le tester dans votre web.config. Cela nécessite votre nom d'utilisateur et votre mot de passe. Je ne sais pas comment vous allez utiliser la chaîne de connexion cependant. Cela devrait fonctionner à condition que le compte utilisé ait l'accès.

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

Selon MSDN, utilisez Database.OpenConnectionString, méthode (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";

Ajoutez ce paramètre dans web.config:

<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