SQL Server 2019 配置 PolyBase 访问外部 Mongodb

https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-configure-mongodb?view=sqlallproducts-allversions

 

以前版本访问外部数据源使用的是 链接服务器,SQL Server 2019 可以配置 PolyBase 访问 Hadoop、Azure Blob Storage、SQL Server、Oracle、Teradata、MongoDB 。当然需要安装 PolyBase 查询服务

 

当前配置 PolyBase 访问外部 Mongodb ,参考:Configure PolyBase to access external data in MongoDB

    USE master
    GO
    exec sp_configure 'polybase enabled',1
    reconfigure with override
    go
     
     
    USE Test
    GO
     
    -- 1. 创建 MASTER KEY
    -- DROP MASTER KEY
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo'
    GO
     
    -- 2. 创建数据库范围凭证
    -- DROP DATABASE SCOPED CREDENTIAL MongoDBCredentials
    CREATE DATABASE SCOPED CREDENTIAL MongoDBCredentials
    WITH IDENTITY = 'admin', Secret = 'admin'  -- mongodb 访问账号密码
    GO
     
    -- 3. 创建外部数据源
    -- DROP EXTERNAL DATA SOURCE MongoInstance
    CREATE EXTERNAL DATA SOURCE MongoInstance
    WITH (
        LOCATION = 'mongodb://10.10.10.9:27017',    --mongodb服务器
        PUSHDOWN = ON,
        CREDENTIAL = MongoDBCredentials,            --上面创建的凭证
        CONNECTION_OPTIONS = 'ssl=false;'
    )
    GO
     
    -- 4. 创建独立的 mongodb 模式
    CREATE SCHEMA MongoDB
    GO
     
    -- 5. 创建外部虚拟表,引用的是上面定义的外部数据源(数据类型要求与mongdo中一致,报错时可看到)
    -- DROP EXTERNAL TABLE MongoDB.tab
    CREATE EXTERNAL TABLE MongoDB.tab(
        [_id] NVARCHAR(24) NOT NULL,    --其他字段运行为NULL, 因为非结构化
        [id] FLOAT(53) NULL,
        [name] NVARCHAR(4000) NULL,
        [size] FLOAT(53) NULL
    )
    WITH (
        LOCATION='local.tab',  --对应mongodb中的 <database>.<collection>
        DATA_SOURCE= MongoInstance --上面创建的数据源
    )
    GO
     
    -- 6. 创建统计信息
    CREATE STATISTICS OrdersOrderKeyStatistics ON MongoDB.tab([id]) WITH FULLSCAN

 

因为官方文档资料不是很清除,踩了一些坑,上面的脚本已补充说明。

创建数据源若不使用 CONNECTION_OPTIONS = 'ssl=false;' ,则报错如下:

消息 105082,级别 16,状态 1,第 44 行
105082;一般 ODBC 错误: [Microsoft][MongoDBODBC] (110) Error from MongoDB Client: No suitable servers found (`serverSelectionTryOnce` set): [connection closed calling ismaster on '10.10.10.9:27017'] (Error Code: 13053) Additional error <2>:ErrorMsg: [Microsoft][MongoDBODBC] (110) Error from MongoDB Client:No suitable servers found (`serverSelectionTryOnce` set): [connection closed calling ismaster on '10.10.10.9:27017'] (Error Code: 13053), SqlState: HY000, NativeError: 110 。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值