我想使用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连接
答案 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;"/>
我测试了所有这些并且工作正常。我希望这会有所帮助