Строка подключения для собственного клиента SQL Server в ASP.NET web.config
Я хочу подключиться к SQL Server 2012 с помощью собственного клиента SQL Server из моего приложения ASP.NET. В настоящее время у меня есть одна существующая строка подключения connect с использованием 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): было сгенерировано исключение типа "System.Web.HttpUnhandledException".
System.ArgumentException: ключевое слово не поддерживается: "поставщик".
в System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey)
в System.Data.Common.DbConnectionOptions..ctor(String connectionString, синонимы хеш-таблицы, логическое использование 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 ответов
Не уверен, как именно у вас это работает раньше, потому что моя строка подключения не входит в <appSettings>
это идет в отдельном <connectionStrings>
раздел. И providerName - это элемент, а не часть самой строки.
Вот пример
<connectionStrings>
<clear />
<add name="xxx" providerName="System.Data.SqlClient" connectionString="Server=(local);Database=yyy;User=zzz;Password=123;MultipleActiveResultSets=True" />
</connectionStrings>
Надеюсь это поможет.
Первая строка соединения не является строкой соединения ODBC, это строка соединения SqlClient.
Вторая строка подключения - это строка подключения Ole Db, которая использует собственный клиент SQL Server. Но ваша трассировка стека показывает, что вы используете SqlClient для подключения к SQL Server.
Вы не можете одновременно использовать SqlClient и собственный клиент SQL для подключения к SQL Server. Для использования Native Client у вас есть два варианта:
- Используйте ODBC. ( System.Data.Odbc)
- Используйте OLEDB. ( System.Data.OleDb)
Вы можете использовать SqlClient и TLS1.2 согласно следующей статье Microsoft Support:
Удалите часть Provider=SQLNCLI11 вашей строки подключения - это не поддерживаемое свойство и не нужно.
Ссылка: MSDN
Я думаю, что проблема с вашим соединением в том, что вы не можете удаленно подключиться к SQL, когда вы используете проверку подлинности Windows
Вы можете попробовать вот так:
<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>
В соответствии с MSDN используйте метод Database.OpenConnectionString (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" />
Если вы используете SqlConnection, используйте имя провайдера "System.Data.SqlClient", но если вы хотите использовать другого провайдера
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;"/>
Я проверил их все и работает нормально. Надеюсь, это поможет
Вы можете проверить это в своем файле 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>