PolyBase uzyskuje dostęp do danych nierelacyjnych i relacyjnych i łączy je z poziomu SQL Server. Począwszy od SQL Server 2019, PolyBase obsługuje dane z backendów, dla których dostępny jest sterownik ODBC.
Wypróbowaliśmy PolyBase z naszym sterownikiem Salesforce ODBC, aby przeszukiwać dane Salesforce z SQL Server 2019.
Aby rozpocząć:
- Zainstaluj i uzyskaj licencję na sterownik ODBC Salesforce.com na komputerze, na którym jest zainstalowany program SQL Server.
Potrzebujesz kompilacji 2.0.3 sterownika ODBC Salesforce.com, który jest obecnie dostępny po skontaktowaniu się z zespołem pomocy technicznej Easysoft ().
- W programie Microsoft SQL Server Management Studio połącz się z instancją programu SQL Server obsługującą technologię PolyBase. Aby sprawdzić, czy PolyBase jest zainstalowany, uruchom to zapytanie:
SELECT SERVERPROPERTY ('IsPolyBaseInstalled') AS IsPolyBaseInstalled;
Jeśli PolyBase jest zainstalowany, to zapytanie zwróci:
1
- Musisz również upewnić się, że PolyBase jest włączony:
EXEC SP_CONFIGURE @CONFIGNAME = 'polybase enabled', @CONFIGVALUE = 1; RECONFIGURE WITH OVERRIDE;
- Jeśli jeszcze tego nie zrobiłeś, uruchom usługi PolyBase (SQL Server PolyBase Engine, SQL Server PolyBase Data Movement) w aplikacji Windows Services.
- Utwórz zewnętrzne źródło danych PolyBase:
CREATE DATABASE PolyBaseDB USE PolyBaseDB CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'p455w0rd'; CREATE DATABASE SCOPED CREDENTIAL PolyBaseSalesforce WITH IDENTITY = 'myuser, Secret = 'p455w0rd'; CREATE EXTERNAL DATA SOURCE salesforce_data_source WITH ( LOCATION = 'odbc://Salesforce', CONNECTION_OPTIONS = 'DRIVER={Easysoft Salesforce ODBC Driver}; UID=mysalesforceuser@mydomain; PWD=mypassword;TOKEN=1234ABCDEF;', CREDENTIAL = PolyBaseSalesforce );
- Utwórz lokalną tabelę SQL Server, która będzie przechowywać zdalne dane Salesforce. Ta tabela lokalna jest przeznaczona dla tabeli Account Salesforce:
CREATE EXTERNAL TABLE Account([Id] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL, [IsDeleted] TINYINT NOT NULL, [MasterRecordId] NCHAR(18) COLLATE Latin1_General_CI_AS, [Name] NVARCHAR(255) COLLATE Latin1_General_CI_AS NOT NULL, [Type] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [ParentId] NCHAR(18) COLLATE Latin1_General_CI_AS, [BillingStreet] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [BillingCity] NVARCHAR(40) COLLATE Latin1_General_CI_AS, [BillingState] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [BillingPostalCode] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [BillingCountry] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [BillingStateCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [BillingCountryCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [BillingLatitude] FLOAT(53), [BillingLongitude] FLOAT(53), [BillingAddress] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [ShippingStreet] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [ShippingCity] NVARCHAR(40) COLLATE Latin1_General_CI_AS, [ShippingState] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [ShippingPostalCode] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [ShippingCountry] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [ShippingStateCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [ShippingCountryCode] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [ShippingLatitude] FLOAT(53), [ShippingLongitude] FLOAT(53), [ShippingAddress] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [Phone] NVARCHAR(40) COLLATE Latin1_General_CI_AS, [Fax] NVARCHAR(40) COLLATE Latin1_General_CI_AS, [AccountNumber] NVARCHAR(40) COLLATE Latin1_General_CI_AS, [Website] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [PhotoUrl] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [Sic] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [Industry] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [AnnualRevenue] FLOAT(53), [NumberOfEmployees] INT, [Ownership] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [TickerSymbol] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [Description] NVARCHAR(4000) COLLATE Latin1_General_CI_AS, [Rating] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [Site] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [OwnerId] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL, [CreatedDate] DATETIME2(0) NOT NULL, [CreatedById] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL, [LastModifiedDate] DATETIME2(0) NOT NULL, [LastModifiedById] NCHAR(18) COLLATE Latin1_General_CI_AS NOT NULL, [SystemModstamp] DATETIME2(0) NOT NULL, [LastActivityDate] DATE, [LastViewedDate] DATETIME2(0), [LastReferencedDate] DATETIME2(0), [Jigsaw] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [JigsawCompanyId] NVARCHAR(20) COLLATE Latin1_General_CI_AS, [AccountSource] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [SicDesc] NVARCHAR(80) COLLATE Latin1_General_CI_AS, [CustomerPriority__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [SLA__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [Active__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [NumberofLocations__c] FLOAT(53), [UpsellOpportunity__c] NVARCHAR(255) COLLATE Latin1_General_CI_AS, [SLASerialNumber__c] NVARCHAR(10) COLLATE Latin1_General_CI_AS, [SLAExpirationDate__c] DATE) WITH (LOCATION='Account', DATA_SOURCE= salesforce_data_source)
- Zapytaj o dane zdalne:
SELECT Id FROM dbo.Account WHERE Id = '001i000000AOq3DXYZ'