Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
Здравствуйте!

Есть SQL-запрос, который работает нормально. Если запустить через другой сервер, то выдает сообщение "32-разрядный поставщик OLE DB "MSOLAP" не может быть загружен как внутрипроцессный на 64-разрядной версии SQL Server.". В Объекты сервера - Поставщики имеется поставщик MSOLAP. А также прилинкованный сервер, в котором находится данные OLAP с типом SSAS.
+SQL-запрос
USE SM

GO

	SELECT		
		CAST(F1."[Города].[Город].[Город].[MEMBER_CAPTION]" AS NVARCHAR(50))AS [Город],
		CAST(F1."[Measures].[Отгрузки шт]" AS DECIMAL (12,0)) AS [Отгрузки шт]
	FROM OPENROWSET(
		'MSOLAP',
		'Provider=MSOLAP.3;...',
		'SELECT
			[Measures].[Отгрузки шт]
		ON 0,
			[Города].[Город].[Город]
		ON 1
		FROM 
			(SELECT [Время].[Месяц].&[2018-05-01T00:00:00] ON 0 FROM PROFIT)'
				) AS F1
Я правильно понимаю, нужно какие то драйвера установить на этом сервере, чтобы работало? Если да, то какие?
25 июн 18, 07:48    [21517624]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
Первый и второй сервер отличаются и по версии, и по битности. Не меняя регистрацию библиотек на втором сервере, возможно в запросе изменить провайдера? Если да, то как?
...
    OPENROWSET(
	'MSOLAP',
	'Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=profit;Data Source=xxx.yyy.ru;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error',
	'SELECT
             ...
25 июн 18, 10:25    [21517865]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
В запросе возможно указать битность в параметрах подключения?
25 июн 18, 13:11    [21518428]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
Владислав Колосов
Member

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

Похоже, что путем openrowset Вы не пройдёте. Потребуется создать слой взаимодействия с удалёнными данными - приложение, SSIS пакет и тому подобное.
25 июн 18, 13:27    [21518486]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
Получается на том сервере надо менять библиотеку. Только вот возникает вопрос, может ли потом негативно влиять на другие процессы?

Ссылка
25 июн 18, 13:42    [21518529]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
Владислав Колосов
Похоже, что путем openrowset Вы не пройдёте
А OPENQUERY?
27 июн 18, 12:10    [21524715]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
Другой сервер работает на версии SQL Server 2016, то для его SSAS родным является библиотека версии 7.Скорректировал запрос.
...
    OPENROWSET(
	'MSOLAP.7',
	'Provider=MSOLAP.7;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=profit;Data Source=xxx.yyy.ru;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error',
	'SELECT
             ...

Ошибка несоответствия битности заменой версии решена, но возникает другая: "Не удалось создать экземпляр поставщика OLE DB "MSOLAP.7" для связанного сервера "(null)"."

Эту проблему как можно решить?
29 июн 18, 07:39    [21530260]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2344
ferzmikk,

попробуйте не использовать версию в строке подключения.
система сама в состоянии определить последнюю установленную на клиенте и согласовать с версией сервера.
если все-таки требуется именно библиотека для 2016, то убедитесь, что она присутствует в системе где установлен SQL-сервер.

причем, чем больше строка подключения соответствует правилам для провайдера MSOLAP, тем меньше проблем
(не помню точно на какой версии но "Data Source" работало, а "Datasource" не работало, хотя и описано в документации)

все остальные проблемы только из-за безопасности. (SQL-сервер работает например под "Локальная система", а подключение к SSAS только через виндовую авторизацию). пробуйте в этих случаях указывать имя пользователя и пароль в строке подключения (хоть и написано что это только для НТТР, все равно помогает).
29 июн 18, 10:06    [21530499]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
ShIgor
если все-таки требуется именно библиотека для 2016, то убедитесь, что она присутствует в системе где установлен SQL-сервер.
Через SQL как это узнать?
29 июн 18, 12:07    [21530928]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2344
ferzmikk,

обладая соответствующими правами например так:
set nocount on
declare @subkeyname nvarchar(max)
declare @k table([subkeyname] nvarchar(max)) 
declare @r table([key] nvarchar(max), [value] nvarchar(max), [data] nvarchar(max))
insert into @k exec master..xp_regenumkeys N'HKEY_CLASSES_ROOT', N'\'
declare c cursor for select subkeyname from @k where subkeyname like N'MSOLAP%' and subkeyname not like N'%ErrorLookup%' and subkeyname not like N'%ConnectDialog%'
open c
fetch next from c into @subkeyname
while @@fetch_status = 0
begin 
  insert into @r([value], [data]) exec master..xp_regenumvalues 'HKEY_CLASSES_ROOT', @subkeyname 
  update @r set [key] = @subkeyname where [key] is null
  fetch next from c into @subkeyname
end
close c
deallocate c
select [key], [data] from @r
29 июн 18, 16:19    [21531675]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

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

Спасибо!

Запустив SQL-запрос на первом сервере, то есть SQL Server Express на моем компе - вывел 66 строк. Запустив на другом SQL-сервере, где находится на самом сервере, - 4 строки.
key data
MSOLAP MSOLAP 10.0 OLE DB Provider
MSOLAP.4 MSOLAP 10.0 OLE DB Provider
MSOLAP.7 MSOLAP 13.0 OLE DB Provider
MSOLAP.8 MSOLAP 14.0 OLE DB Provider

Получается надо какие то компоненты установить?
30 июн 18, 04:50    [21532557]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
А если запустить на первом сервере, где работает запрос к OLAP, то выводит такой результат
+
key data
MSOLAP MSOLAP 13.0 OLE DB Provider
MSOLAP.4 MSOLAP 10.0 OLE DB Provider
MSOLAP.5 MSOLAP 11.0 OLE DB Provider
MSOLAP.7 MSOLAP 13.0 OLE DB Provider
MSOlapAdmin2.MSOLAPAggregation MSOLAPAggregation Class
MSOlapAdmin2.MSOLAPAggregation.1 MSOLAPAggregation Class
MSOlapAdmin2.MSOLAPAggregations MSOLAPAggregations Class
MSOlapAdmin2.MSOLAPAggregations.1 MSOLAPAggregations Class
MSOlapAdmin2.MSOLAPAuxiliarie MSOLAPAuxiliarie Class
MSOlapAdmin2.MSOLAPAuxiliarie.1 MSOLAPAuxiliarie Class
MSOlapAdmin2.MSOLAPAuxiliaries MSOLAPAuxiliaries Class
MSOlapAdmin2.MSOLAPAuxiliaries.1 MSOLAPAuxiliaries Class
MSOlapAdmin2.MSOLAPClient MSOLAPClient Class
MSOlapAdmin2.MSOLAPClient.1 MSOLAPClient Class
MSOlapAdmin2.MSOLAPCubeSecurities MSOLAPCubeSecurities Class
MSOlapAdmin2.MSOLAPCubeSecurities.1 MSOLAPCubeSecurities Class
MSOlapAdmin2.MSOLAPCubeSecurity MSOLAPCubeSecurity Class
MSOlapAdmin2.MSOLAPCubeSecurity.1 MSOLAPCubeSecurity Class
MSOlapAdmin2.MSOLAPDatabase MSOLAPDatabase Class
MSOlapAdmin2.MSOLAPDatabase.1 MSOLAPDatabase Class
MSOlapAdmin2.MSOLAPDatabases MSOLAPDatabases Class
MSOlapAdmin2.MSOLAPDatabases.1 MSOLAPDatabases Class
MSOlapAdmin2.MSOLAPDetail MSOLAPDetail Class
MSOlapAdmin2.MSOLAPDetail.1 MSOLAPDetail Class
MSOlapAdmin2.MSOLAPDetails MSOLAPDetails Class
MSOlapAdmin2.MSOLAPDetails.1 MSOLAPDetails Class
MSOlapAdmin2.MSOLAPDimension MSOLAPDimension Class
MSOlapAdmin2.MSOLAPDimension.1 MSOLAPDimension Class
MSOlapAdmin2.MSOLAPDimensions MSOLAPDimensions Class
MSOlapAdmin2.MSOLAPDimensions.1 MSOLAPDimensions Class
MSOlapAdmin2.MSOLAPExtLevel MSOLAPExtLevel Class
MSOlapAdmin2.MSOLAPExtLevel.1 MSOLAPExtLevel Class
MSOlapAdmin2.MSOLAPExtLevels MSOLAPExtLevels Class
MSOlapAdmin2.MSOLAPExtLevels.1 MSOLAPExtLevels Class
MSOlapAdmin2.MSOLAPExtMeasure MSOLAPExtMeasure Class
MSOlapAdmin2.MSOLAPExtMeasure.1 MSOLAPExtMeasure Class
MSOlapAdmin2.MSOLAPExtMeasures MSOLAPExtMeasures Class
MSOlapAdmin2.MSOLAPExtMeasures.1 MSOLAPExtMeasures Class
MSOlapAdmin2.MSOLAPLastError MSOLAPLastError Class
MSOlapAdmin2.MSOLAPLastError.1 MSOLAPLastError Class
MSOlapAdmin2.MSOLAPLevel MSOLAPLevel Class
MSOlapAdmin2.MSOLAPLevel.1 MSOLAPLevel Class
MSOlapAdmin2.MSOLAPLevels MSOLAPLevels Class
MSOlapAdmin2.MSOLAPLevels.1 MSOLAPLevels Class
MSOlapAdmin2.MSOLAPLockManager MSOLAPLockManager Class
MSOlapAdmin2.MSOLAPLockManager.1 MSOLAPLockManager Class
MSOlapAdmin2.MSOLAPMeasure MSOLAPMeasure Class
MSOlapAdmin2.MSOLAPMeasure.1 MSOLAPMeasure Class
MSOlapAdmin2.MSOLAPMeasures MSOLAPMeasures Class
MSOlapAdmin2.MSOLAPMeasures.1 MSOLAPMeasures Class
MSOlapAdmin2.MSOLAPModel MSOLAPModel Class
MSOlapAdmin2.MSOLAPModel.1 MSOLAPModel Class
MSOlapAdmin2.MSOLAPModels MSOLAPModels Class
MSOlapAdmin2.MSOLAPModels.1 MSOLAPModels Class
MSOlapAdmin2.MSOLAPPartition MSOLAPPartition Class
MSOlapAdmin2.MSOLAPPartition.1 MSOLAPPartition Class
MSOlapAdmin2.MSOLAPPartitions MSOLAPPartitions Class
MSOlapAdmin2.MSOLAPPartitions.1 MSOLAPPartitions Class
MSOlapAdmin2.MSOLAPRole MSOLAPRole Class
MSOlapAdmin2.MSOLAPRole.1 MSOLAPRole Class
MSOlapAdmin2.MSOLAPRoles MSOLAPRoles Class
MSOlapAdmin2.MSOLAPRoles.1 MSOLAPRoles Class
MSOlapAdmin2.MSOLAPSource MSOLAPSource Class
MSOlapAdmin2.MSOLAPSource.1 MSOLAPSource Class
MSOlapAdmin2.MSOLAPSources MSOLAPSources Class
MSOlapAdmin2.MSOLAPSources.1 MSOLAPSources Class
Не знаю какую библиотеку надо ставить на втором сервере. Скажите, какую надо установить? Случайно не MSOlapAdmin2.MSOLAPClient?
3 июл 18, 13:09    [21539078]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2344
ferzmikk,

не надо ничего ставить. оставь MSOLAP в провайдере без всяких номеров версий. разбирайся с правами.

OPENROWSET(
'MSOLAP',
'Provider=MSOLAP;Initial Catalog=profit;Data Source=xxx.yyy.ru;M...

оранжевое выкинь вообще
4 июл 18, 00:38    [21541055]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
ShIgor
все остальные проблемы только из-за безопасности. (SQL-сервер работает например под "Локальная система", а подключение к SSAS только через виндовую авторизацию). пробуйте в этих случаях указывать имя пользователя и пароль в строке подключения (хоть и написано что это только для НТТР, все равно помогает).
ShIgor
разбирайся с правами.
Даже если проблема в доступе, то будет возвращать ошибку "Не удалось создать экземпляр поставщика OLE DB "MSOLAP.7" для связанного сервера "(null)"."?

+
...
    OPENROWSET(
	'MSOLAP.7',
	'Provider=MSOLAP.7;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=profit;Data Source=xxx.yyy.ru;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;User ID=...; Password=...;',
	'SELECT
             ...

...
    OPENROWSET(
	'MSOLAP.7',
	'Provider=MSOLAP.7;Integrated Security=TRUE;Persist Security Info=True;Initial Catalog=profit;Data Source=xxx.yyy.ru;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;User ID=...;',
	'SELECT
             ...
4 июл 18, 08:42    [21541245]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
Не знаю, поможет это или нет, но на всякий случай скидываю скриншот, где видны списки различных поставщиков в двух серверах

К сообщению приложен файл. Размер - 17Kb
4 июл 18, 08:58    [21541283]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
Извиняюсь, перепутал сервера, наоборот

К сообщению приложен файл. Размер - 17Kb
4 июл 18, 09:55    [21541484]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
ShIgor
разбирайся с правами.
Есть специальный SQL-запрос, который проверяет права, запущенный через соответствующий сервер? И если сравнивать права у двух серверов, то конкретно с чем сравнивать?
4 июл 18, 10:56    [21541745]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2344
ferzmikk,

1. Как соединяешься с SQL-сервером.
2. Под какой учетной записью работает SQL-сервер.
3. Под какой учетной записью работает SSAS-сервер.
4. Есть-ли у учетной записи SQL-сервера на доступ к SSAS.
5. Не ограничены-ли права в OLAP БД.
4 июл 18, 15:22    [21542949]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
В общем через терминал сервера в консоле MS SQL Management Studio запрос выполняется. Но если подключиться через консоль с локального рабочего места на тот же SQL то запрос перестает работать. Выдает сообщение "Не удалось проинициализировать объект источника данных поставщика OLE DB "MSOLAP" для связанного сервера "(null)".
30 июл 18, 12:14    [21614048]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2344
ferzmikk,

вопросы выше, пока на них не будет ответа я тоже ничего не могу предложить.
и номера версий SQL и SSMS напомните, везде на серверах и клиентах
30 июл 18, 14:23    [21614846]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

Откуда:
Сообщений: 2060
ShIgor
1. Как соединяешься с SQL-сервером.
Есть два сервера. Первый и второй сервер. Через первый сервер - запрос работает. Через второй сервер - не работает.

Через терминал второго сервера в консоли MS SQL Management Studio запрос выполняется. Но если подключиться через консоль с локального рабочего места на тот же SQL то запрос перестает работать.
2. Под какой учетной записью работает SQL-сервер.
Доменная учетка MSSQLUser на этих двух серверах.
3. Под какой учетной записью работает SSAS-сервер.
NT Service\MSSQLServerOLAPService - служебная учетка, не доменная
ShIgor
и номера версий SQL и SSMS напомните, везде на серверах
На первом сервере, где работает запрос - 2012. На втором сервере, где не работает запрос - 2016.
и клиентах
MS SQL Managment Studio 2012.
31 июл 18, 12:13    [21617358]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
komrad
Member

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

выполните этот запрос на обоих серверах с вашего рабочего места

select net_transport,auth_scheme,endpoint_id,encrypt_option from sys.dm_exec_connections where session_id=@@spid 
31 июл 18, 12:30    [21617513]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
ferzmikk
Member

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

на первом сервере
net_transport auth_scheme endpoint_id encrypt_option
TCP SQL 4 FALSE


На втором сервере
net_transport auth_scheme endpoint_id encrypt_option
TCP KERBEROS 4 FALSE
31 июл 18, 12:40    [21617554]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
komrad
Member

Откуда:
Сообщений: 5245
ferzmikk
komrad,

на первом сервере
net_transport auth_scheme endpoint_id encrypt_option
TCP SQL 4 FALSE


На втором сервере
net_transport auth_scheme endpoint_id encrypt_option
TCP KERBEROS 4 FALSE


ну, если вы не перепутали сервера, то налицо разница в SPN-x
31 июл 18, 12:48    [21617585]     Ответить | Цитировать Сообщить модератору
 Re: На другом сервере не работает запрос  [new]
komrad
Member

Откуда:
Сообщений: 5245
komrad
ferzmikk
komrad,

на первом сервере
net_transport auth_scheme endpoint_id encrypt_option
TCP SQL 4 FALSE


На втором сервере
net_transport auth_scheme endpoint_id encrypt_option
TCP KERBEROS 4 FALSE


ну, если вы не перепутали сервера, то налицо разница в SPN-x


а вы к первому сиквелу коннектитесь под сиквельной учеткой , но ко второму под виндовой, так получается?
31 июл 18, 12:58    [21617648]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить