Пользовательский столбец SQL Server 2019 Polybase MongoDB не найден во внешней таблице

Я настраиваю Polybase для Azure CosmosDB (MongoDB API) в SQL Server 2019 и застрял при создании внешней таблицы.

Я создал один образец документа в Cosmos DB со следующим определением:

{
    "_id" : ObjectId("5ecc3fcd7791b617982fefa0"),
    "id" : "1",
    "products" : "2009",
    "item" : "Car",
    "type" : "Racecar"
}

Вырезано с портала Azure для сбора образцов

Когда я запускаю следующую инструкцию:

CREATE EXTERNAL TABLE mongodb.Products 
( 
[_id] NVARCHAR(24) COLLATE Latin1_General_CI_AS NOT NULL,  
[id] NVARCHAR(10) COLLATE Latin1_General_CI_AS,
[products] NVARCHAR(10) COLLATE Latin1_General_CI_AS,
[item] NVARCHAR(10) COLLATE Latin1_General_CI_AS,
[type] NVARCHAR(10) COLLATE Latin1_General_CI_AS
) 
WITH ( 
LOCATION='Sales.Products', 
DATA_SOURCE= CosmosDB  
); 

Я получаю сообщение:

Msg 105083, Level 16, State 1, Line 1
105083;The following columns in the user defined schema are incompatible with the external table schema for table 'Products': user defined column: 'id' was not found in the external table, user defined column: 'products' was not found in the external table, user defined column: 'item' was not found in the external table, user defined column: 'type' was not found in the external table. The detected external table schema is: ([_id] NVARCHAR(24) COLLATE Latin1_General_100_CI_AS NOT NULL).

Связь вроде бы хорошая. Если я изменю Sales.Product, я получу сообщение о том, что таблица не существует.


person Memko    schedule 26.05.2020    source источник
comment
Latin1_General_CI_AS - это другое сопоставление, чем Latin1_General_100_CI_AS. Хотя теоретически они обе являются кодовой страницей 1252, они обрабатывают некоторые буквы типа Ǹ и ǹ иначе.   -  person AlwaysLearning    schedule 27.05.2020


Ответы (1)


Я наконец смог решить эту проблему. Похоже, если вы пытаетесь подключиться к Azure CosmosDB Mongo DB API, вам нужно будет отредактировать файл на вашем SQL Server.

Вам нужно найти C: \ Program Files \ Microsoft SQL Server \ MSSQL15.MSSQLSERVER \ MSSQL \ Binn \ Polybase \ ODBC Drivers \ PolyBase ODBC Driver для MongoDb.ini

и измените две строки

Из (не работает): Драйвер = Драйвер ODBC PolyBase для MongoDb \ 2.3.8 \ MongoDBODBCsb64.dll Установка = Драйвер ODBC PolyBase для MongoDb \ 2.3.8 \ MongoDBODBCsb64.dll

Чтобы (работает) Driver = Драйвер ODBC PolyBase для MongoDb \ MongoDBODBCsb64.dll Настройка = Драйвер ODBC PolyBase для MongoDb \ MongoDBODBCsb64.dll

Это было решение, предоставленное службой поддержки Microsoft.

person Memko    schedule 11.06.2020