SQLOLEDB.1 работает на 1 машине, но не работает на другой.что может вызвать это? - PullRequest
0 голосов
/ 11 июля 2019

Я создал простое приложение на C #, которое подключается к серверу SQL (2012) с использованием поставщика OLEDB. Этот код работает на 1 машине, но не работает на другой.

Цель - SQL сервер 2012

Используемая строка подключения - источник данных = SERVER_NAME; начальный каталог = DATABASE_NAME; поставщик = SQLOLEDB.1; идентификатор пользователя = USER_ID; пароль = PWD; автоматический перевод = ложный; имя приложения = APPLICATION_FRIENDLY_NAME; размер = 32767;

Код выполнения - .NET Runtime 4.5.2

1) Windows Server 2008 R2 Enerprise 64 bit - код работает на этом компьютере 2) Windows Server 2008 R2 Enerprise 64 бит - код не работает на этом

Нет разницы в сборке сервера. Я подозреваю, что это связано с некоторыми настройками брандмауэра или порта или чем-то на уровне компьютера.

Я попытался запустить тот же код на моем компьютере с Windows 10 и получил ошибку.

Сообщение об ошибке во всех случаях, когда используется SQLOLEDB

Ошибка-System.Data.OleDb.OleDbException: [DBNETLIB] [ConnectionOpen (SECDoClientHandshake ()).] Ошибка безопасности SSL. Неверный атрибут строки подключения

Я уже пробовал различные ссылки, а также установил собственные средства клиента SQL Server 2012, как упоминалось https://support.microsoft.com/en-us/help/3135244/tls-1-2-support-for-microsoft-sql-server

static void Main(string[] args)
{
try
{
OleDbConnection con = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings["connectionstring"].ToString());

OleDbCommand com = new OleDbCommand(System.Configuration.ConfigurationSettings.AppSettings["commandtext"].ToString(), con);
com.CommandType = System.Data.CommandType.StoredProcedure;
OleDbDataAdapter ad = new OleDbDataAdapter(com.CommandText, con);
System.Data.DataSet ds = new System.Data.DataSet();
con.Open();
ad.Fill(ds);
Console.WriteLine("total records returned=" + ds.Tables[0].Rows.Count.ToString());
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("Error-" + ex.GetBaseException().ToString());
Console.ReadLine();
}
}

Файл конфигурации имеет: -

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="connectionstring" value="Data Source=SERVER_NAME;Initial Catalog=DATABASE_NAME;Provider=SQLOLEDB.1;User Id=USER_ID;Password=PWD;Auto Translate=False;Application Name=APPLICATION_FRIENDLY_NAME;Size=32767;"/>
<add key="commandtext" value="STORE_PROCEDURE_NAME"/>
</appSettings>
<startup> 
<supportedRuntime version="v2.0.50727"/></startup>
</configuration>

Ожидание очень простое. код и используемый запрос возвращают X количество строк. Тест заключается в возможности подключения к целевому серверу sql. Это работает с одной машины и не работает на любой другой машине.

...