OLEDB драйвер для подключения к ms sql 2000 c 64 х разрядной винды

1. katenok86 246 30.03.18 09:25 Сейчас в теме
Задам дилетанский вопрос. Где взять OLEDB драйвер для подключения к ms sql 2000 c 64 х разрядной винды?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Aitbay 30.03.18 09:59 Сейчас в теме
Connection = Новый COMОбъект("ADODB.Connection");
    Command    = Новый COMОбъект("ADODB.Command");
	RecordSet  = Новый COMОбъект("ADODB.RecordSet");
	Connection.ConnectionTimeout = 30;
	Connection.CommandTimeout 	 = 600;
	Connection.ConnectionString  = "driver={SQL Server};" +
	            						 "server="+Параметры.АдресСервера+";"+
	            						 "uid="+Параметры.Пользователь+";"+
	            						 "pwd="+Параметры.Пароль+";"+
	           							 "database="+Параметры.ИмяБазы+";";
	Попытка   		
		Connection.Open();
		Command.ActiveConnection = Connection;
		Command.CommandText = ТекстКоманды;
		RecordSet = Command.Execute();          
	Исключение
		Сообщение = Новый СообщениеПользователю();
		Сообщение.Текст = СтрШаблон(НСтр("ru = 'Не возможно выполнить команду %1, ошибка %2'"), ТекстКоманды ,ОписаниеОшибки());
		Сообщение.Сообщить();
	КонецПопытки;
	ПолученнаяТаблица 	= Новый ТаблицаЗначений;
	Если RecordSet.EOF = Ложь Тогда
		Для Каждого СтрокаСтруктуры Из RecordSet.Fields Цикл
			ПолученнаяТаблица.Колонки.Добавить(СтрокаСтруктуры.Name, ?(СтрокаСтруктуры.Name = "Date",Новый ОписаниеТипов("Дата"), Новый ОписаниеТипов("Строка")));
		КонецЦикла;
		RecordSet.MoveFirst();
	КонецЕсли;

	Пока RecordSet.EOF = Ложь Цикл
		СтрокаТаблицы = ПолученнаяТаблица.Добавить();
		Для Каждого СтрокаСтруктуры Из RecordSet.Fields Цикл
			СтрокаТаблицы[СтрокаСтруктуры.Name] = СтрокаСтруктуры.Value;
		КонецЦикла;
		RecordSet.MoveNext();
	КонецЦикла;
	Connection.Close();

	Возврат	ПолученнаяТаблица
Показать
3. Aitbay 30.03.18 10:00 Сейчас в теме
ТекстКоманды это текст запроса
4. katenok86 246 30.03.18 10:03 Сейчас в теме
(3) это и так понятно. Вопрос именно в софте. на машине, где выполняется запрос sql не стоит, соответственно нужно поставить OLEDB драйвер, для обращеня к серверу sql в сети. или я не права?
9. sssss_aaaaa_2011 30.03.18 11:34 Сейчас в теме
(4)В общем-то, запрос выполняется на sql сервере. Вот для подключения к нему на машине, с которой вы подключаетесь к sql серверу, должен быть соответствующий софт. Но для ms sql 2000 ничего делать не надо ибо этот софт уже давно идет в составе винды. Правда, если клиент, в данном случае это 1с, 32-разрядный. Если клиент 64-разрядный, то надо брать более поздние Native clients от более поздних версий ms sql. И, соответственно, менять строку коннекта.
10. katenok86 246 30.03.18 11:42 Сейчас в теме
(9)Проверила на 32 разрядном клиенте та же ошибка что в сообщении 6. Не могу понять в чем дело
Еще пишет вот что
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен.
12. sssss_aaaaa_2011 30.03.18 11:45 Сейчас в теме
(10)Теперь попробуем выяснить кто на ком стоял.
Итак, какой тип приложения -управляемый или обычный? Если управляемый, то где выполняется подключение - на клиенте или на сервере? Какого клиента вы заменили на 32-разрядного?
13. katenok86 246 30.03.18 11:49 Сейчас в теме
(12)Управляемое. Подключение выполняется на клиенте. Соответственно у меня стоял 64 разрядный клиент, заменила его на 32-х разрядный, по диспетчеру задач проверяла что действительно запущен 32 разрядный клиент
5. Aitbay 30.03.18 11:10 Сейчас в теме
6. katenok86 246 30.03.18 11:20 Сейчас в теме
(5)
ЗапросSQL = ПолучитьТекстЗапроса(ЗапросSQL);
	
	СоединениеSQL = Новый ComObject("ADODB.Connection");
	
	СоединениеSQL.ConnectionString = СтрокаСоединения;
	СоединениеSQL.CursorLocation = 3;
	//СоединениеSQL.CommandTimeout = 18000;
	//СоединениеSQL.ConnectionTimeout = 18000;
    СоединениеSQL.CommandTimeout = 18000;

	
	Попытка
    	СоединениеSQL.Open(СтрокаСоединения);
		Сообщить("соединилось")
	Исключение
        Сообщить("Не удалось соединиться с базой данных! " +ОписаниеОшибки());		
	КонецПопытки;
	
	Command = Новый COMОбъект("ADODB.Command");
	Command.ActiveConnection = СоединениеSQL;
Показать

При выполнении у меня ошибка:
Ошибка при установке значения атрибута контекста (ActiveConnection)
Command.ActiveConnection = СоединениеSQL;
по причине:
Произошла исключительная ситуация (ADODB.Command): Для требуемой операции необходим объект OLE DB Session, не поддерживаемый текущим поставщиком.

Строка подключения: driver={SQL Server};SERVER=192.168.1.128\server;UID=логин;PWD=пароль;DATABASE=baze;LANGUAGE=русский;
7. Aitbay 30.03.18 11:28 Сейчас в теме
так подключение же есть
нет возможности создать объект "Command"
8. Aitbay 30.03.18 11:30 Сейчас в теме
мжт причина в разном вызове?
ComObject и COMОбъект всяко бывает )
11. katenok86 246 30.03.18 11:42 Сейчас в теме
(8)ошибка таже
Еще пишет вот что
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server не существует, или доступ запрещен.
14. Aitbay 30.03.18 16:05 Сейчас в теме
мжт поможет добавить "Provider=SQLOLEDB.1"
17. katenok86 246 02.04.18 11:00 Сейчас в теме
(14)
Provider=SQLOLEDB.1

Не помогает. Ошибка та же
15. Aitbay 30.03.18 16:12 Сейчас в теме
windows на сервере 1с и на клиенте какой?
набрел здесь на форумах что на некоторых версиях винды драйвера sql нет в предустановке
необходимо устанавливать sql native client
16. katenok86 246 02.04.18 09:30 Сейчас в теме
(15)На сервере хр. на клиенте 7
18. Aitbay 02.04.18 14:31 Сейчас в теме
https://www.microsoft.com/en-us/download/details.aspx?id=21995
для xp потом перезагрузите
и попробуйте подключиться
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот