Имя: Пароль:
1C
 
Прямой запрос с использованием Linked Server
0 Fenikus
 
23.05.11
10:41
Добрый день.
Хочу в одном запросе объединить подключение к базе данных на MS SQL и к базе на dbf. Использовал для этого Linked Server. Вроде бы все хорошо, если бы не одно НО. Делаю, например, такой запрос:

SELECT TOP 100 * FROM ServerDBF...1sconst

А мне выдается ошибка

Line 1: Incorrect syntax near '.1'.

Может быть кто-то сталкивался с такой проблемой и знает как она решается?
1 viktor_vv
 
23.05.11
10:43
Делаk через
Select
from
  OPENQuery('Текст запроса к ДБФ','Имя LinkedServer')
2 Fenikus
 
23.05.11
10:43
+(0)То есть, если имя таблицы начинается с цифры, то для такого запроса это считается ошибкой. Видимо, поэтому в sql версии 1С имена таких таблиц начинаются со знака _
3 Fenikus
 
23.05.11
10:44
(1) хорошо, попробую, спасибо
4 ДенисЧ
 
23.05.11
10:44
SELECT TOP 100 * FROM ServerDBF...[1sconst]
?
5 viktor_vv
 
23.05.11
10:46
(4) О до этого не допетрил, надо попробовать.
6 Fenikus
 
23.05.11
10:47
(4) Спасибо большое! Это помогло
7 VladZ
 
23.05.11
10:50
(1) Сначала имя сервера, потом запрос.
8 viktor_vv
 
23.05.11
11:06
Согласен. По памяти писал. Если уж быть точнее, то

Select
from
 OPENQuery(ИмяLinkedServer,'Текст запроса к ДБФ')
9 Fenikus
 
24.05.11
08:03
Теперь у меня такая проблема:
Если база дбф находится на том же компьютере, что и SQL Server, все работает хорошо. Если же я подключаю базу, которая находится на другом сервере, то в SQL Query Analize все запросы отрабатываются нормально, а когда пытаюсь из 1С-ки запустить, то выдается такая ошибка - Could not initialize data source object of OLE DB provider 'VFPOLEDB'.

И ничего поделать с этим не могу :(
10 ДенисЧ
 
24.05.11
08:22
Под какой учёткой работает сервер? У него есть права на сеть?
11 Fenikus
 
24.05.11
08:25
(10)Можно уточнить вопрос?
12 ДенисЧ
 
24.05.11
08:35
(11) можно. Уточняй.
13 Fenikus
 
24.05.11
08:39
(12) Уточняю, сервер работает под администратором, на сеть права есть.
14 ДенисЧ
 
24.05.11
08:40
(13) Эээ... Точно служба SQL Server работает под админом? О_о
15 Fenikus
 
24.05.11
08:45
(14) У службы MSSQLSERVER вход в систему с системной учетной записью. У системной учетной записи права администратора.
16 ДенисЧ
 
24.05.11
08:47
(15) Под system?
А ничО, что system не имеет прав на доступ к сетевым ресурсам по умолчанию?
17 Fenikus
 
24.05.11
08:48
ок, как дать system права на доступ к сетевым ресурсам?
18 ДенисЧ
 
24.05.11
08:49
(17) лучше не надо. Заведи спецучётку.
19 Кириллка
 
24.05.11
08:49
да провайдер на скуле не установлен.
20 Fenikus
 
24.05.11
08:50
(19)установлен, я ж говорю, что в SQL Query Analize все запросы отрабатываются нормально
21 Fenikus
 
24.05.11
08:51
и таблицы в связанном сервере все вижу
22 Кириллка
 
24.05.11
08:52
"а когда пытаюсь из 1С-ки запустить" - как?
23 Fenikus
 
24.05.11
08:57
(22) прямой запрос, при помощи ODBCRecordset
24 Кириллка
 
24.05.11
09:00
+23 из 1с на виндовс?
25 Fenikus
 
24.05.11
09:06
(24) не понял вопроса. Вообще, если база dbf локально, то все работает и из 1С и из SQL Query Analize. А когда пытаюсь подключиться к базе dbf по сети, то и происходит ошибка, описанная выше.
(18)завел спецучетку, запустил под ней SQL Server, теперь база dbf даже связываться не хочет...
26 Fenikus
 
24.05.11
09:06
(24)1С на виндовс
27 Кириллка
 
24.05.11
09:10
(26)а, понятно. Такое бывает у некоторых иногда.
28 Fenikus
 
24.05.11
09:13
(27)с этим ничего не поделаешь, а проблему решать надо.
29 Кириллка
 
24.05.11
09:16
да ты код покажи - (22)!!
30 Fenikus
 
24.05.11
09:19
(29) Пожалуйста
Запрос = СоздатьОбъект("ODBCRecordset");

ТекстЗапроса = "
|SELECT TOP 100
|*
|FROM LinkedServerName...sc84
|";

тз = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
тз.ВыбратьСтроку();
31 Кириллка
 
24.05.11
09:40
(30)видимо, секьюрити контекст не докрутил, при линковании. QA и 1с у тебя ведь под разными учетками работают?
32 Fenikus
 
24.05.11
09:57
(31) Ага, 1С работает под пользователем sa, а QA через windows authentication. Только я все равно не пойму, как решить можно эту проблему :(
33 Fenikus
 
24.05.11
10:12
(31)Ну что, подскажешь, как докрутить секьюрити контекст при линковании?
34 Кириллка
 
24.05.11
10:14
(33)Пример C, только логины наоборот: http://msdn.microsoft.com/en-us/library/aa259581(v=SQL.80).aspx
35 Кириллка
 
24.05.11
10:14
+34 ну или интерактивно, при линковании.
36 Fenikus
 
24.05.11
10:38
(34,35)Не, че-то нифига не помогает.
Вот, что выдает QA, если зайти в него под пользователем sa
Could not initialize data source object of OLE DB provider 'VFPOLEDB'.
[OLE/DB provider returned message: Invalid path or file name.]
OLE DB error trace [OLE/DB Provider 'VFPOLEDB' IDBInitialize::Initialize returned 0x80040e21].
37 Кириллка
 
24.05.11
10:46
(36)все должно работать, делай аккуратно.
38 Fenikus
 
24.05.11
13:41
(37)Делал, делал аккуратно, но ничего не помогает.
В общем в настройках связанного сервера на вкладке Security есть табличка, в которой нужно указать локального пользователя и соответствующее ему удаленное имя пользователя и пароль. Дело еще в том, что домена у нас в конторе нет, и я не могу понять, какое необходимо указывать удаленное имя пользователя и соответственно пароль к нему. Какие бы я варианты не использовал, ничего не получается.
39 Fenikus
 
24.05.11
13:51
Может быть еще подумать, как из 1С подключиться к серверу, используя Виндовс аутентификацию?
40 Fenikus
 
24.05.11
14:00
Как заставить работать связанный сервер по сети? для пользователей SQL Server?
41 viktor_vv
 
24.05.11
14:05
А на закладке Security под табличкой  с пользователями где стоит переключатель ? Я у себя просто для ДБФ базы в логинах вообще ничего не указывал и внизу второй пункт выбирал.
42 viktor_vv
 
24.05.11
14:06
И сервер под ситстемной учеткой и все работает.
43 Fenikus
 
24.05.11
14:08
(41,42)внизу также второй пункт. У тебя путь к базам дбф сетевой?
44 viktor_vv
 
24.05.11
14:09
И базы ДБФ по сети цепляются к SQL. Но правда домен есть, может поэтому и работает.
45 Fenikus
 
24.05.11
14:30
(44)Забыл еще сказать, что при подключении через терминал все работает