2017-01-26 3 views
0

У меня 4 шт. 2 имеют полную настройку SQ Server 2012, 1, как и все настройки базы данных, и 1 вообще не имеют настройки SQL. 3 с установкой SQL подключается к той, которую я вызываю на сервере, на котором установлена ​​база данных. Тот, у кого нет SQL, установленного на нем вообще, не подключает исключение. Вот моя строка подключения.Подключение SQL Server 2012 без части sql, установленной на клиенте

Провайдер = SQLNCLI11; Встроенная безопасность = ""; Persist Security Info = False; User ID = sa; password = Xxxx1234; OLE DB Services = -2; Initial Catalog = score_data; Источник данных = 192.168.9.25,1433; Начальное имя файла = ""; Размер пакета = 4096; Автоматический перевод = Истина; Сервер SPN = "";

Вот мой Delphi код, используемый для создания этой строки и подключить

function TFrmTb2.ConnectToSqlDB(Var DataBase : TADOConnection; Catalog : String; Var Msg : ShortString) : Boolean; 
    var 
    cntStr  : String; 
    begin 
    msg := ''; 
    CntStr := DataBase.Name; 
    if not DataBase.Connected then 
     begin 
     if Not DataBase.Connected then 
      begin 
      with FrmTb2 do 
       begin //Edit ConfigHdwe2016Nw.Ini in tne Score2016NW Directory section SQL 
       CntStr := 'Provider='+ReadIniStr(IniHdwe,'SQL','Provider')+';';//SQLNCLI11.1';//SQLNCLI10.1;'; 
       CntStr := CntStr + 'Integrated Security='+ReadIniStr(IniHdwe,'SQL','Integrated Security')+';';//"";'; 
       CntStr := CntStr + 'Persist Security Info='+ReadIniStr(IniHdwe,'SQL','Persist Security Info')+';';//False;'; 
       CntStr := CntStr + 'User ID='+ReadIniStr(IniHdwe,'SQL','User ID')+';';//shithead;'; 
       CntStr := CntStr + 'password='+ReadIniStr(IniHdwe,'SQL','password')+';';//shithead;'; 
       CntStr := CntStr + 'OLE DB Services='+ReadIniStr(IniHdwe,'SQL','OLE DB Services')+';';// -2;'; 
       CntStr := CntStr + 'Initial Catalog='+Catalog+';'; 
       CntStr := CntStr + 'Data Source='+ReadIniStr(IniHdwe,'SQL','Data Source')+';';//\SQLEXPRESS;'; 
       CntStr := CntStr + 'Initial File Name='+ReadIniStr(IniHdwe,'SQL','Initial File Name')+';';//"";'; 
       CntStr := CntStr + 'Packet Size='+ReadIniStr(IniHdwe,'SQL','Packet Size')+';';//4096;'; 
       CntStr := CntStr + 'Auto Translate='+ReadIniStr(IniHdwe,'SQL','Auto Translate')+';';//True;'; 
       CntStr := CntStr + 'Server SPN='+ReadIniStr(IniHdwe,'SQL','Server SPN')+';';//""'; 
       end; 
//   ShowMessage(CntStr); 
      DataBase.ConnectionString := CntStr; 
      try 
       DataBase.Connected := True; 
       if DataBase.Connected then 
       begin 
//     ShowMessage('After Conection'); 
        result := True; 
       end 
       else 
       begin 
        result := False; 
        ShowMessage('Unable to Connect to Score2016Nw Database Bad Ip or Connection Missing1'); 
       end; 
      except 
       result := False; 
       ShowMessage('Unable to Connect to Score2016Nw Database Bad Ip or Connection Missing2'); 
      end; 
      end 
     else 
     result := True; 
     end 
    else 
     result := True; // we are still conected to the sql database 
    end; 

Моя сеть человек говорит мне, что падение порт огня 1433 открыт (это аппаратное wirewall и у меня нет доступа) , Я проверил и перепроверял, что на подсервере ip2 активен = Да; Включено = Да; IP-адрес = 255.255.255.0 (Маска подсети); TCP Port = 1433 и IPALL Dynamic Ports = '' (Пустой) и TCP-порт = 1433. Я прочитал примерно каждую запись, которую я могу найти, и ничего не говоря о установке SQL Server Express 2012 на клиентах, заставит ее работать, чтобы поговорить с подключиться к базе данных. Есть ли какие-либо инструменты, которые я мог бы использовать для поиска проблемы, или мне нужно будет установить SQL Server на всех клиентов (какая боль)

+2

Когда вы говорите «Выдает исключение», вам действительно нужно сообщить нам, что это за исключение. Я предполагаю, что это говорит вам, что не может найти поставщика. –

+0

ShowMessage ('Невозможно подключиться к базе данных Score2016Nw Bad Ip или Connection Missing2'); как в моем коде. –

+1

Это настраиваемое сообщение об ошибке, генерируемое вашим собственным кодом, которое нам не помогает. Вы избегаете исключения, почему бы вам не прочитать сообщение об исключении и сообщить, что он говорит нам? В любом случае, мы не можем копировать вашу точную ошибку с тем, что вы указали в своем вопросе, кроме провайдера, который не установлен, как я опишу в своем ответе. –

ответ

3

В вашей строке подключения содержится SQLNCLI11. Это означает, что вам необходимо установить SQL Native Client 11 на этом компьютере, так как это тот провайдер, который он ищет. Когда вы устанавливаете SQL Server, он также по умолчанию устанавливает для вас собственный клиент SQL. Но на машине, на которой SQL никогда не был установлен, вам придется установить ее самостоятельно.

Или, в качестве альтернативы, вы можете использовать драйверы OLE DB, которые предварительно устанавливаются в Windows, вместо этого вместо этого используется SQLOLEDB.1.

+0

Это было загружено и установлен драйвер SQLNCLI11, и все работает. Проблема с SQLOLEDB1 связана с проблемами с DateTime и их переводом из SQL. –

+0

@Sbossen Интересно, наша компания уже более 10 лет использует драйверы SQL OLE DB и выполняет ** LOT ** работу с полями DateTime. Какую проблему вы имеете в виду? –

+0

Когда я прочитал datetime из sql с использованием ado-соединения, я получил бы недопустимый формат для DateTime, когда я переключился обратно на SQLNCLI11 без проблем. и если вы можете найти, то документация от MS говорит о том, что драйвер был устарел, и проблема была в datetime (см. ссылку выше для установки Sql Native Client 11). Я смотрю вокруг много, чтобы найти MSI установки. Я использую Delphi XE6 –

Смежные вопросы