ASP.NET web.config中SQL Server本机客户端的连接字符串

时间:2018-02-16 10:49:26

标签: c# asp.net .net sql-server sql-server-native-client

我想使用ASP.NET应用程序中的SQL Server本机客户端连接到SQL Server 2012。目前,我有一个现有的连接字符串连接使用odbc和工作正常。

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

当我尝试如下时,代码抛出异常

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

例外:

  

System.Web.HttpUnhandledException(0x80004005):类型&#39; System.Web.HttpUnhandledException&#39;的异常。被扔了。

     

System.ArgumentException:不支持关键字:&#39;提供商&#39;。
  在System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable,String connectionString,Boolean buildChain,Hashtable synonyms,Boolean firstKey)
  在System.Data.Common.DbConnectionOptions..ctor(String connectionString,Hashtable peers,Boolean useOdbcRules)
  在System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
  在System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString,DbConnectionOptions previous)
  在System.Data.ProviderBase.DbConnectionFactory

如何修改此连接字符串,以便它应通过SQL Server本机客户端11连接

7 个答案:

答案 0 :(得分:3)

由于我的连接字符串未进入get=,因此不确定您之前是如何使用它的,因为它位于单独的<appSettings>部分中。 providerName是一个元素,不是字符串本身的一部分。

这是一个例子

<connectionStrings>

希望这有帮助。

答案 1 :(得分:1)

第一个连接字符串不是ODBC连接字符串,它是SqlClient连接字符串。

第二个连接字符串是使用SQL Server Native Client的Ole Db连接字符串。但是您的堆栈跟踪显示您正在使用SqlClient连接到SQL Server。

您不能同时使用SqlClient和SQL Native客户端连接到SQL Server。要使用Native Client,您有两个选择:

您可以按照以下Microsoft支持文章使用SqlClient和TLS1.2:

答案 2 :(得分:1)

删除连接字符串的Provider = SQLNCLI11部分 - 它不是受支持的属性,也是不必要的。

参考:MSDN

答案 3 :(得分:1)

我认为您的连接问题是您在使用Windows身份验证时无法远程连接到SQL

您可以尝试这样:

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

答案 4 :(得分:0)

根据MSDN使用Database.OpenConnectionString Method (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";

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

答案 5 :(得分:0)

您可以在web.config中测试它。这需要您显示的用户名和密码。我不确定你将如何使用连接字符串。这应该可以提供所使用的帐户具有访问权限。

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

答案 6 :(得分:0)

如果您使用的是SqlConnection,请使用提供程序名称“System.Data.SqlClient”,但是如果您想使用其他提供程序

<强>的SqlConnection

$ref = &$values ;
foreach ($keys as &$key) {
    if (isset($ref[$key])) {
        $ref = &$ref[$key];
    }
}
echo $ref ;

<强>的OleDbConnection

<add key="StagingConnect" 
         value="Integrated Security=True;Initial Catalog=SampleDatabase;Data Source=."/>

<强> OdbcConnection

 <add key="StagingConnect2" 
         value="Provider=SQLNCLI11;Server=.;Database=SampleDatabase;
Trusted_Connection=yes;"/>

我测试了所有这些并且工作正常。我希望这会有所帮助