Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OPENROWSET + ХП  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
Выполняю запрос
 SELECT * FROM OPENROWSET('SQLNCLI', 'Server=SQLserv;Trusted_Connection=yes;',
 'exec SQLserv.DataBase.dbo.StoredProc')  


Ошибка :
Пользователю "......" не удалось войти в систему.

Делаю такой же запрос на другом сервере (конечно, с имением другого сервера), то запрос выполняется.

В чем может быть причина ошибки на первом сервере?
22 мар 13, 10:32    [14080558]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
В том что у пользователя "......" нет доступа ко второму.
22 мар 13, 10:35    [14080574]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
запрос
 SELECT * FROM OPENROWSET('SQLNCLI', 'Server=SQLserv;Trusted_Connection=yes;',
 'exec SQLserv.DataBase.dbo.StoredProc')  

выполняется на том же сервере где и находится хп StoredProc.
22 мар 13, 10:40    [14080624]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
andMegaM,

потому что ,скорее всего залинковав сервер сам на себя - права на линкед сервер вы не выдали вообще
22 мар 13, 11:10    [14080840]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
Maxx
права на линкед сервер вы не выдали вообще


Как это проверить? давно не занимался связанными серверами
22 мар 13, 11:22    [14080924]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
andMegaM,

проще всего правай клавиша мышки на линкед сервер (Properties) и вторая папочка - Security
22 мар 13, 11:28    [14080963]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Я здесь один не вижу никакого линкованного сервера?
22 мар 13, 11:28    [14080969]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
pkarklin,

вы правы,скоре всего ..бо выглядеть должно так

SELECT * FROM OPENROWSET(SQLserv, 'exec DataBase.dbo.StoredProc')  
или
exec SQLserv.DataBase.dbo.StoredProc
22 мар 13, 11:31    [14080994]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Maxx,

Только в первой строке должен быть OPENQUERY. ;)
22 мар 13, 11:38    [14081041]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
pkarklin,

угу... есть такое дело
22 мар 13, 11:39    [14081046]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
SELECT * FROM OPENROWSET(SQLserv, 'exec DataBase.dbo.StoredProc')  

Выдает ошибку : Неправильный синтаксис около конструкции ")".

exec SQLserv.DataBase.dbo.StoredProc

работает, но результат этого запроса я не могу вставить во временную таблицу.Именно из-за этого я решил использовать OPENROWSET.

НА MSSQL2005
SELECT * FROM OPENROWSET('SQLNCLI', 'Server=SQLserv;Trusted_Connection=yes;',
 'exec SQLserv.DataBase.dbo.StoredProc')  

работает

а на MSSQL2008
SELECT * FROM OPENROWSET('SQLNCLI', 'Server=SQLserv2;Trusted_Connection=yes;',
 'exec SQLserv2.DataBase.dbo.StoredProc')  

не работает

Где-то что-то в настройках, а вот где и что именно не знаю
22 мар 13, 11:44    [14081076]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
andMegaM
Где-то что-то в настройках, а вот где и что именно не знаю


Вы от нас скрываете, но Вам то виден пользователь

автор
Пользователю "......" не удалось войти в систему.


у которого нет доступа ко второму серверу.
22 мар 13, 11:51    [14081129]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
SELECT * FROM OPENQUERY(SQLserv, 'exec DataBase.dbo.StoredProc') 

как правильно заметил pkarklin
22 мар 13, 11:58    [14081197]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
pkarklin

автор
Пользователю "......" не удалось войти в систему.


у которого нет доступа ко второму серверу.


Пользователю "мой домен\sqlserv$" не удалось войти в систему
22 мар 13, 12:03    [14081239]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
andMegaM
Пользователю "мой домен\sqlserv$" не удалось войти в систему


И что непонятно?
22 мар 13, 12:55    [14081707]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
serpentariy
Member

Откуда:
Сообщений: 265
exec SQLserv.DataBase.dbo.StoredProc

работает, но результат этого запроса я не могу вставить во временную таблицу.Именно из-за этого я решил использовать OPENROWSET.

А, что
Insert Into [Временная таблица] exec SQLserv.DataBase.dbo.StoredProc

не работает?
22 мар 13, 12:55    [14081708]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Гость333
Member

Откуда:
Сообщений: 3683
serpentariy
А, что
Insert Into [Временная таблица] exec SQLserv.DataBase.dbo.StoredProc

не работает?

Не работает, если ХП выдаёт несколько наборов данных с различающейся структурой.
create procedure #test
as
select 1 as a;
select 3 as b, 4 as c;
go
create table #test1 (a int, b int);
insert #test1 exec #test;
select * from #test1;
go
drop procedure #test;
drop table #test1;
go

Msg 213, Level 16, State 7, Procedure #test_____0000A718, Line 3
Column name or number of supplied values does not match table definition.


Если в примере заменить "select 1 as a" на "select 1 as a, 2 as d", тогда работает.
22 мар 13, 13:05    [14081782]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Гость333,
и если в самой хп есть insert exec тоже уже рабоать не будет
тут вчера была тема ж про insert exec с разными рекордсетами
22 мар 13, 13:06    [14081805]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
Insert Into [Временная таблица] exec SQLserv.DataBase.dbo.StoredProc


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

Я хотел использовать след конструкцию:
SELECT * INTO #tmptable FROM OPENROWSET('SQLNCLI', 'Server=SQLserv;Trusted_Connection=yes;',
 'exec SQLserv.DataBase.dbo.StoredProc')  



Смотрю пользователей
  select * from sys.server_principals


Пользователя "мой домен\sqlserv$" вообще на этом сервере нет.
Также просматриваю пользователей на втором сервере , где запрос работает. Так и там нет пользователя "мой домен\sqlserv2$"

Может кто подскажет как использовать OPENROWSET от конкретного пользователя? из синтаксиса OPENROWSET не понимаю как построить запрос
22 мар 13, 13:12    [14081865]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
Гость333
Member

Откуда:
Сообщений: 3683
andMegaM
Смотрю пользователей
  select * from sys.server_principals

И делаете это с правами sysadmin?
22 мар 13, 13:39    [14082122]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET + ХП  [new]
andMegaM
Member

Откуда: ***
Сообщений: 474
Гость333
andMegaM
Смотрю пользователей
  select * from sys.server_principals

И делаете это с правами sysadmin?


нет не sysadmin
22 мар 13, 13:44    [14082176]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить