|
| 1 | +-- Create database scoped credential to connect to MySQL server |
| 2 | +-- Provide appropriate credentials to MySQL server in below statement. |
| 3 | +-- If you are using SQL Server Management Studio then you can replace the parameters using |
| 4 | +-- the Query menu, and "Specify Values for Template Parameters" option. |
| 5 | +IF NOT EXISTS(SELECT * FROM sys.database_scoped_credentials WHERE name = 'MySQL80-user') |
| 6 | + CREATE DATABASE SCOPED CREDENTIAL [MySQL80-user] |
| 7 | + WITH IDENTITY = 'mssql-user' |
| 8 | + , SECRET = 'sql19tw0mysql'; |
| 9 | + |
| 10 | +-- Create external data source that points to MySQL server |
| 11 | +-- The tokens '%u' and '%p' is used to reference the credential information. |
| 12 | +-- |
| 13 | +IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'MySQL80') |
| 14 | + CREATE EXTERNAL DATA SOURCE MySQL80 |
| 15 | + WITH (LOCATION = 'odbc://uc-win19-vm.redmond.corp.microsoft.com' |
| 16 | + , CONNECTION_OPTIONS = 'Driver={MySQL 8.0 ODBC Driver Unicode Driver};User name=%u;Passwword=%p' |
| 17 | + , CREDENTIAL = [MySQL80-user]); |
| 18 | + |
| 19 | +-- Create external table over inventory table on MySQL server |
| 20 | +-- |
| 21 | +IF NOT EXISTS(SELECT * FROM sys.external_tables WHERE name = 'mysql_version') |
| 22 | + CREATE EXTERNAL TABLE mysql_version |
| 23 | + ( |
| 24 | + [sys_version] NVARCHAR(5) NOT NULL, |
| 25 | + [mysql_version] NVARCHAR(6) NOT NULL |
| 26 | + ) |
| 27 | + WITH (LOCATION = 'sys.version', DATA_SOURCE = MySQL80); |
| 28 | + |
| 29 | +SELECT * FROM mysql_version; |
| 30 | + |
| 31 | +/* |
| 32 | +IF NOT EXISTS(SELECT * FROM sys.external_tables WHERE name = 'mysql_tables') |
| 33 | + CREATE EXTERNAL TABLE mysql_tables |
| 34 | + ( |
| 35 | + TABLE_CATALOG nvarchar(64), |
| 36 | + TABLE_SCHEMA nvarchar(64), |
| 37 | + TABLE_NAME nvarchar(64), |
| 38 | + TABLE_TYPE nvarchar(64), |
| 39 | + ENGINE nvarchar(64), |
| 40 | + VERSION smallint, |
| 41 | + ROW_FORMAT nvarchar(64), |
| 42 | + TABLE_ROWS bigint, |
| 43 | + AVG_ROW_LENGTH bigint, |
| 44 | + DATA_LENGTH bigint, |
| 45 | + MAX_DATA_LENGTH bigint, |
| 46 | + INDEX_LENGTH bigint, |
| 47 | + DATA_FREE bigint, |
| 48 | + AUTO_INCREMENT bigint, |
| 49 | + CREATE_TIME datetime2, |
| 50 | + UPDATE_TIME datetime2, |
| 51 | + CHECK_TIME datetime2, |
| 52 | + TABLE_COLLATION nvarchar(64), |
| 53 | + CHECKSUM bigint, |
| 54 | + CREATE_OPTIONS nvarchar(256), |
| 55 | + TABLE_COMMENT nvarchar(256) |
| 56 | + ) |
| 57 | + WITH (LOCATION = 'information_schema.tables', DATA_SOURCE = MySQL80); |
| 58 | +
|
| 59 | +SELECT * FROM mysql_tables; |
| 60 | +*/ |
| 61 | +-- Cleanup |
| 62 | +/* |
| 63 | +DROP EXTERNAL TABLE mysql_tables |
| 64 | +DROP EXTERNAL DATA SOURCE MySQL80 |
| 65 | +DROP DATABASE SCOPED CREDENTIAL [MySQL80-user] |
| 66 | +*/ |
0 commit comments