2016-12-20 8 views
0

У нас есть выделенный облачный сервер, на котором размещаются SQL Server 2014 и Microsoft Dynamics CRM 2016, который работает без проблем.Excel не получает данные с SQL Server

У меня есть запрос, который получает данные из вида FilteredOpportunities, который я могу запускать в SQL Server Management Studio в качестве пользователя Windows, но не пользователя SQL (отображает только имена столбцов), когда я пытаюсь запустить его в SQL Server Management Studio на моем ноутбуке с использованием пользователя sql (не может использовать проверку подлинности Windows, поскольку она не находится в том же домене), она возвращает имена столбцов и ничего больше.

У учетной записи есть все разрешения, которые вы могли бы подумать о предоставлении им, чтобы попытаться получить данные, но они не сдвинутся с места.

+0

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

+0

Независимо от того, учетная запись SSMS возвращает имена столбцов. У меня нет другой машины для тестирования. –

+0

Однако, когда запрос выполняется на сервере, он доволен –

ответ

1

Вы не можете запрашивать отфильтрованные виды CRM с помощью SQL-пользователя. Для этого вам нужно будет использовать пользователя Windows.

Если вы хотите напрямую запросить SQL-пользователя, вы можете использовать базовую таблицу dbo.OpportunityBase. Это не будет применяться к модели безопасности CRM.

Вместо этого вы можете захотеть использовать один из веб-сервисов CRM для поддерживаемого доступа к данным с принудительной моделью безопасности. Если ваша цель - получить данные в Excel, она напрямую поддерживается для использования веб-служб. См. Export to an Excel dynamic worksheet.

0

Я нашел ответ. Немного неудобный бит работает. Я могу подключиться к базе данных с пользователем SQL (потому что я не могу использовать проверку подлинности Windows, поскольку я нахожусь в другом домене), тогда я могу добавить код в верхнюю часть моего существующего кода, чтобы олицетворять пользователя правами на чтение данных. Для тех, кто интересуется кодом:

DECLARE @uid uniqueidentifier 

SET @uid = convert(uniqueidentifier, '((UID of the user you want to impersonate))') 

SET CONTEXT_INFO @uid