H.2. tds_fdw â подклÑÑение к базам даннÑÑ , иÑполÑзÑÑÑим пÑоÑокол TDS #
ÐодÑÐ»Ñ tds_fdw пÑедоÑÑавлÑÐµÑ Ð¾Ð±ÑÑÑÐºÑ ÑÑоÑонниÑ
даннÑÑ
tds_fdw, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑаÑÑÑÑ Ðº базам даннÑÑ
, иÑполÑзÑÑÑим пÑоÑокол TDS (Tabular Data Stream, поÑок ÑаблиÑнÑÑ
даннÑÑ
), напÑÐ¸Ð¼ÐµÑ Sybase и Microsoft SQL Server.
ÐÐ»Ñ ÑÑой обÑÑÑки ÑÑебÑеÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека, ÑеализÑÑÑÐ°Ñ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ DB-Library, напÑÐ¸Ð¼ÐµÑ FreeTDS. ÐбÑÑÑка бÑла пÑоÑеÑÑиÑована Ñ FreeTDS, но не Ñ Ð¿ÑопÑиеÑаÑнÑми ÑеализаÑиÑми DB-Library.
H.2.1. ÐгÑаниÑÐµÐ½Ð¸Ñ #
ÐÑи вклÑÑÑнном
match_column_namesподдеÑживаÑÑÑÑ ÑÑловиÑWHEREи вÑÐ½Ð¾Ñ ÑÑолбÑов наÑÑжÑ. Ðднако вÑÐ½Ð¾Ñ Ð½Ð°ÑÑжÑJOINи пиÑÑÑие опеÑаÑии не поддеÑживаÑÑÑÑ.DML-опеÑаÑии
INSERT,UPDATEиDELETEÑо ÑÑоÑонними ÑаблиÑами не поддеÑживаÑÑÑÑ.
H.2.2. УÑÑановка tds_fdw #
tds_fdw поÑÑавлÑеÑÑÑ Ð²Ð¼ÐµÑÑе Ñ Postgres Pro Standard в виде оÑделÑного пакеÑа tds_fdw (подÑобнÑе инÑÑÑÑкÑии по ÑÑÑановке пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ Ð² Ðлаве 16).
УÑÑановиÑе ÑаÑÑиÑение tds_fdw Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE EXTENSION.
H.2.3. ÐаÑÑÑойка tds_fdw #
H.2.3.1. УпÑавление набоÑами Ñимволов/кодиÑовкой #
ХоÑÑ Ð¼Ð½Ð¾Ð³Ð¸Ðµ новÑе веÑÑии пÑоÑокола TDS Ð´Ð»Ñ ÑвÑзи Ñ ÑеÑвеÑом иÑполÑзÑÑÑ ÑолÑко ÑÑандаÑÑ USC-2, FreeTDS пÑеобÑазÑÐµÑ UCS-2 в клиенÑÑкÑÑ ÐºÐ¾Ð´Ð¸ÑÐ¾Ð²ÐºÑ Ð¿Ð¾ ваÑÐµÐ¼Ñ Ð²ÑбоÑÑ. ЧÑÐ¾Ð±Ñ ÑÑÑановиÑÑ ÐºÐ»Ð¸ÐµÐ½ÑÑкÑÑ ÐºÐ¾Ð´Ð¸ÑовкÑ, можно задаÑÑ Ð´Ð»Ñ Ð¿ÐµÑеменной client charset знаÑение freetds.conf. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ The freetds.conf File (Ñайла freetds.conf) и Localization and TDS 7.0 (локализаÑии и TDS 7.0).
ÐÑи полÑÑении Ñказанной ниже оÑибки во вÑÐµÐ¼Ñ ÑабоÑÑ Microsoft SQL Server Ñ Ð´Ð°Ð½Ð½Ñми Unicode Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑÐ½Ð°Ñ Ð½Ð°ÑÑÑойка:
NOTICE: DB-Library notice: Msg #: 4004, Msg state: 1, Msg: Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier., Server: PILLIUM\SQLEXPRESS, Process: , Line: 1, Level: 16
ERROR: DB-Library error: DB #: 4004, DB Msg: General SQL Server error: Check messages from the SQL Server, OS #: -1, OS Msg: (null), Level: 16
Ð Ñаком ÑлÑÑае пÑидÑÑÑÑ Ð²ÑÑÑнÑÑ ÑказаÑÑ Ð² Ñайле freetds.conf веÑÑÐ¸Ñ tds 7.0 или вÑÑе. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ Ð¤Ð°Ð¹Ð»Ð° freetds.conf и ÐÑбоÑа веÑÑии пÑоÑокола TDS.
H.2.3.2. ÐаÑÑÑойка заÑиÑÑованнÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑений к MSSQL #
Такие подклÑÑÐµÐ½Ð¸Ñ Ð½Ð°ÑÑÑаиваÑÑÑÑ Ð² Ñайле freetds.conf. ÐайдиÑе "ÑиÑÑование" в Ñазделе Ñайла freetds.conf settingsfreetds.conf.
H.2.4. ÐÑполÑзование #
ЧÑÐ¾Ð±Ñ Ð¾Ð±ÐµÑпеÑиÑÑ Ð´Ð¾ÑÑÑп к базе даннÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ tds_fdw, вÑполниÑе ÑледÑÑÑие Ñаги:
СоздайÑе обÑÐµÐºÑ ÑÑоÑоннего ÑеÑвеÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ CREATE SERVER, коÑоÑÑй бÑÐ´ÐµÑ Ð¿ÑедÑÑавлÑÑÑ ÐºÐ°Ð¶Ð´ÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , доÑÑÑпнÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ.
СоздайÑе ÑопоÑÑавление полÑзоваÑелей Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ CREATE USER MAPPING Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ полÑзоваÑÐµÐ»Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , коÑоÑÐ¾Ð¼Ñ Ð½Ñжно ÑазÑеÑиÑÑ Ð´Ð¾ÑÑÑп к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑÑоÑÐ¾Ð½Ð½ÐµÐ¼Ñ ÑеÑвеÑÑ.
СоздайÑе ÑÑоÑоннÑÑ ÑаблиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ CREATE FOREIGN TABLE или IMPORT FOREIGN SCHEMA Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑаблиÑÑ, к коÑоÑой нÑжно полÑÑиÑÑ Ð´Ð¾ÑÑÑп.
H.2.4.1. Создание ÑÑоÑоннего ÑеÑвеÑа #
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ ÑÑоÑонний ÑеÑвеÑ, вÑполниÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE SERVER Ñо ÑледÑÑÑими паÑамеÑÑами:
servernameÐÐ¼Ñ ÑеÑвеÑа, адÑÐµÑ Ð¸Ð»Ð¸ Ð¸Ð¼Ñ Ñзла ÑÑоÑоннего ÑеÑвеÑа. ÐнаÑением Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ DSN, как Ñказано в
freetds.conf. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÑÐ°Ð·Ð´ÐµÐ»Ñ ÐоиÑк по имени FreeTDS. Ðожно задаÑÑ Ð² ÑÑом паÑамеÑÑе ÑпиÑок имÑн ÑеÑвеÑов, ÑазделÑннÑй запÑÑÑми, Ñогда бÑдÑÑ Ð²ÑполнÑÑÑÑÑ Ð¿Ð¾Ð¿ÑÑки подклÑÑиÑÑÑÑ Ðº ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑеÑвеÑÑ Ð´Ð¾ ÑÐµÑ Ð¿Ð¾Ñ, пока не бÑÐ´ÐµÑ ÑÑÑановлено пеÑвое подклÑÑение. Такой ÑпиÑок Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкого пеÑеклÑÑÐµÐ½Ð¸Ñ Ð½Ð° ÑезеÑвнÑй ÑеÑвеÑ.ÐбÑзаÑелÑнÑй: да
ÐнаÑение по ÑмолÑаниÑ: 127.0.0.1
portÐоÑÑ ÑÑоÑоннего ÑеÑвеÑа. ÐмеÑÑо ÑÑого его можно ÑказаÑÑ Ð²
freetds.conf(еÑлиservernameÑвлÑеÑÑÑ DSN).ÐбÑзаÑелÑнÑй: неÑ
databaseÐаза даннÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð½Ð° ÑÑом ÑеÑвеÑе
ÐбÑзаÑелÑнÑй: неÑ
dbuseÐÑли
dbuseÑавен 0, tds_fdw подклÑÑиÑÑÑ Ð½Ð°Ð¿ÑÑмÑÑ Ðºdatabase. ÐÑлиdbuseне Ñавен 0, tds_fdw подклÑÑиÑÑÑ Ðº базе даннÑÑ ÑеÑвеÑа по ÑмолÑаниÑ, а заÑем вÑбеÑÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , вÑзвав ÑÑнкÑиÑdbuse()библиоÑеки DB-Library. ЧÑÐ¾Ð±Ñ Ð¸ÑполÑзоваÑÑ Azure, длÑdbuseÐ½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ Ð·Ð½Ð°Ñение 0.ÐбÑзаÑелÑнÑй: неÑ
Ðо ÑмолÑаниÑ: 0
languageЯзÑк, иÑполÑзÑемÑй Ð´Ð»Ñ ÑообÑений, и локалÑ, иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ ÑоÑмаÑов даÑ. РболÑÑинÑÑве ÑиÑÑем Ð´Ð»Ñ FreeTDS по ÑмолÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкий (СШÐ). ÐеÑоÑÑно, Ð¸Ñ Ñакже можно измениÑÑ Ð²
freetds.conf. Ðа дополниÑелÑной инÑоÑмаÑией по ÑÑой наÑÑÑойке Ð´Ð»Ñ MS SQL Server обÑаÑиÑеÑÑ Ðº ÑазделÑSET LANGUAGEin MS SQL Server (SET LANGUAGE в MS SQL Server), а Ð´Ð»Ñ Sybase ASE â к Ñазделам Sybase ASE login options (ÐаÑамеÑÑÑ Ð²Ñ Ð¾Ð´Ð° в Sybase ASE) иSET LANGUAGEin Sybase ASE (SET LANGUAGE в Sybase ASE).ÐбÑзаÑелÑнÑй: неÑ
character_setÐлиенÑÑÐºÐ°Ñ ÐºÐ¾Ð´Ð¸Ñовка, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¿Ñи подклÑÑении. РпÑоÑоколе TDS веÑÑии 7.0 и вÑÑе Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð²Ñегда иÑполÑзÑеÑÑÑ UCS-2, поÑÑÐ¾Ð¼Ñ Ð² ÑÐ°ÐºÐ¸Ñ ÑлÑÑаÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ð¸Ñего не делаеÑ. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº ÑÐ°Ð·Ð´ÐµÐ»Ñ Localization and TDS 7.0 (локализаÑÐ¸Ñ Ð¸ TDS 7.0).
ÐбÑзаÑелÑнÑй: неÑ
tds_versionÐеÑÑÐ¸Ñ Ð¿ÑоÑокола TDS, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ ÑÑого ÑеÑвеÑа. Ðа подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº Ñазделам Choosing a TDS protocol version (ÐÑÐ±Ð¾Ñ Ð²ÐµÑÑии пÑоÑокола TDS) и History of TDS Versions (ÐÑÑоÑÐ¸Ñ Ð²ÐµÑÑий TDS).
ÐбÑзаÑелÑнÑй: неÑ
msg_handlerФÑнкÑиÑ, иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ð¾Ð±ÑабоÑÑика ÑообÑений TDS. ÐопÑÑÑимо одно из ÑледÑÑÑÐ¸Ñ Ð·Ð½Ð°Ñений:
notice: ÑообÑÐµÐ½Ð¸Ñ TDS пÑеобÑазÑÑÑÑÑ Ð² замеÑÐ°Ð½Ð¸Ñ PostgreSQLblackhole: ÑообÑÐµÐ½Ð¸Ñ TDS игноÑиÑÑÑÑÑÑ
ÐбÑзаÑелÑнÑй: неÑ
Ðо ÑмолÑаниÑ:
blackholefdw_startup_costСÑоимоÑÑÑ, коÑоÑÐ°Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿Ñи планиÑовании запÑоÑов Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð´ÐµÑжек иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑой обÑÑÑки ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ .
ÐбÑзаÑелÑнÑй: неÑ
fdw_tuple_costСÑоимоÑÑÑ, коÑоÑÐ°Ñ Ð¸ÑполÑзÑеÑÑÑ Ð¿Ñи планиÑовании запÑоÑов Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð´ÐµÑжек вÑбоÑки ÑÑÑок Ñ ÑÑого ÑеÑвеÑа.
ÐбÑзаÑелÑнÑй: неÑ
sqlserver_ansi_modeСÑоимоÑÑÑ, коÑоÑÐ°Ñ Ð¸ÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð·Ð´ÐµÑжек вÑбоÑки ÑÑÑок Ñ ÑÑого ÑеÑвеÑа, иÑполÑзÑемÑÑ Ð¿Ñи планиÑовании запÑоÑов.
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ SQL Server. УÑÑановка знаÑениÑ
trueвклÑÑÐ¸Ñ ÑледÑÑÑие паÑамеÑÑÑ ÑÑоÑоннего ÑеÑвеÑа поÑле ÑÑпеÑного подклÑÑÐµÐ½Ð¸Ñ Ðº немÑ:CONCAT_NULLS_YIELDS_NULL ONANSI_NULLS ONANSI_WARNINGS ONQUOTED_IDENTIFIER ONANSI_PADDING ONANSI_NULL_DFLT_ON ON
ÐÑи паÑамеÑÑÑ Ð² Ñелом ÑопоÑÑÐ°Ð²Ð¸Ð¼Ñ Ñ Ð¿Ð°ÑамеÑÑом SQL Server
ANSI_DEFAULTS. ÐаÑамеÑÑsqlserver_ansi_mode, напÑоÑив, в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ акÑивиÑÑÐµÑ ÑледÑÑÑие паÑамеÑÑÑ:CURSOR_CLOSE_ON_COMMITIMPLICIT_TRANSACTIONS
ÐÑо ÑооÑвеÑÑÑвÑÐµÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑобÑÑвеннÑÑ Ð´ÑайвеÑов ODBC и OLEDB Ð´Ð»Ñ SQL-ÑеÑвеÑов, коÑоÑÑе Ñвно оÑклÑÑаÑÑ ÑÑи паÑамеÑÑÑ, еÑли не наÑÑÑоено инаÑе.
ÐбÑзаÑелÑнÑй: неÑ
Ðо ÑмолÑаниÑ:
false
ÐекоÑоÑÑе паÑамеÑÑÑ ÑÑоÑонней ÑаблиÑÑ Ñакже могÑÑ Ð±ÑÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ð½Ð° ÑÑовне ÑеÑвеÑа. Рним оÑноÑÑÑÑÑ:
ÐÑÐ¸Ð¼ÐµÑ H.1. Создание ÑÑоÑоннего ÑеÑвеÑа
CREATE SERVER mssql_svr
FOREIGN DATA WRAPPER tds_fdw
OPTIONS (servername '127.0.0.1', port '1433', database 'tds_fdw_test', tds_version '7.1');H.2.4.2. Создание ÑопоÑÑавлений полÑзоваÑелей #
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ ÑопоÑÑавление полÑзоваÑелÑ, вÑполниÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE USER MAPPING Ñо ÑледÑÑÑими паÑамеÑÑами:
usernameÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑÑÑÑной запиÑи на ÑÑоÑоннем ÑеÑвеÑе
Ðажно
ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе Azure SQL, Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð´Ð»Ñ ÑÑоÑоннего ÑеÑвеÑа должно бÑÑÑ Ð² ÑоÑмаÑе
username@servername. ÐÑли иÑполÑзÑеÑÑÑ ÑолÑко Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, аÑÑенÑиÑикаÑÐ¸Ñ Ð·Ð°Ð²ÐµÑÑиÑÑÑ Ð¾Ñибкой.ÐбÑзаÑелÑнÑй: да
passwordÐаÑÐ¾Ð»Ñ ÑÑÑÑной запиÑи на ÑÑоÑоннем ÑеÑвеÑе
ÐбÑзаÑелÑнÑй: да
ÐÑÐ¸Ð¼ÐµÑ H.2. Создание ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ
CREATE USER MAPPING FOR postgres
SERVER mssql_svr
OPTIONS (username 'sa', password '');H.2.4.3. Создание ÑÑоÑонней ÑаблиÑÑ #
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ ÑÑоÑоннÑÑ ÑаблиÑÑ, вÑполниÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ CREATE FOREIGN TABLE Ñо ÑледÑÑÑими паÑамеÑÑами:
query#СÑÑока запÑоÑа, иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº ÑÑоÑонней ÑаблиÑе
ÐбÑзаÑелÑнÑй: Ðа (взаимоиÑклÑÑаÑÑий Ñ
table_name)schema_name#Ð¡Ñ ÐµÐ¼Ð°, в коÑоÑой Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ ÑаблиÑа. ÐÐ¼Ñ ÑÑ ÐµÐ¼Ñ Ñакже можно вклÑÑиÑÑ Ð²
table_name.ÐбÑзаÑелÑнÑй: неÑ
table_name#ТаблиÑа на ÑÑоÑоннем ÑеÑвеÑе, к коÑоÑой вÑполнÑеÑÑÑ Ð·Ð°Ð¿ÑоÑ
ÐÑевдонимÑ: ÑаблиÑа
ÐбÑзаÑелÑнÑй: Ðа (взаимоиÑклÑÑаÑÑий Ñ
query)match_column_names#СопоÑÑавиÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑе ÑÑолбÑÑ Ñ ÑдалÑннÑми, ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°Ñ Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° в ÑаблиÑÐ°Ñ Ð²Ð¼ÐµÑÑо иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ÑÑдка, в коÑоÑом они поÑвлÑÑÑÑÑ Ð² набоÑе ÑезÑлÑÑаÑов. ТÑебÑеÑÑÑ Ð´Ð»Ñ
WHEREи вÑноÑа ÑÑолбÑов наÑÑжÑ.ÐбÑзаÑелÑнÑй: неÑ
use_remote_estimate#ÐÑениÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑаблиÑÑ, вÑполнив какÑÑ-нибÑÐ´Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð½Ð° ÑдалÑнном ÑеÑвеÑе, как опÑеделено в
row_estimate_method, вмеÑÑо иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ñной оÑенки, как опÑеделено вlocal_tuple_estimateÐбÑзаÑелÑнÑй: неÑ
local_tuple_estimate#ÐокалÑно Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð¾Ñенка колиÑеÑÑва коÑÑежей, коÑоÑÐ°Ñ Ð¸ÑполÑзÑеÑÑÑ, когда оÑклÑÑÑн паÑамеÑÑ
use_remote_estimateÐбÑзаÑелÑнÑй: неÑ
row_estimate_method#ÐÐ¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð¾Ð´Ð½Ð¾ из ÑледÑÑÑÐ¸Ñ Ð·Ð½Ð°Ñений:
execute: вÑполниÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð° ÑдалÑнном ÑеÑвеÑе и полÑÑиÑÑ ÑакÑиÑеÑкое колиÑеÑÑво ÑÑÑок в запÑоÑеshowplan_all: полÑÑиÑÑ Ð¾ÑÐµÐ½ÐºÑ ÐºÐ¾Ð»Ð¸ÑеÑÑва ÑÑÑок Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ MS SQL ServerSET SHOWPLAN_ALL
ÐбÑзаÑелÑнÑй: неÑ
Ðо ÑмолÑаниÑ:
execute
ÐÑÐ¸Ð¼ÐµÑ H.3. Создание ÑÑоÑонней ÑаблиÑÑ
ÐÑполÑзование опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ table_name:
CREATE FOREIGN TABLE mssql_table (
id integer,
data varchar)
SERVER mssql_svr
OPTIONS (table_name 'dbo.mytable', row_estimate_method 'showplan_all');ÐÑполÑзование опÑеделений schema_name и table_name:
CREATE FOREIGN TABLE mssql_table (
id integer,
data varchar)
SERVER mssql_svr
OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all');ÐÑполÑзование опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ query:
CREATE FOREIGN TABLE mssql_table (
id integer,
data varchar)
SERVER mssql_svr
OPTIONS (query 'SELECT * FROM dbo.mytable', row_estimate_method 'showplan_all');УÑÑановка имени ÑаÑположенного ÑдалÑнно ÑÑолбÑа:
CREATE FOREIGN TABLE mssql_table (
id integer,
col2 varchar OPTIONS (column_name 'data'))
SERVER mssql_svr
OPTIONS (schema_name 'dbo', table_name 'mytable', row_estimate_method 'showplan_all');H.2.4.4. ÐмпоÑÑ ÑÑоÑонней ÑÑ ÐµÐ¼Ñ #
ЧÑÐ¾Ð±Ñ Ð¸Ð¼Ð¿Ð¾ÑÑиÑоваÑÑ ÑÑоÑоннÑÑ ÑÑ ÐµÐ¼Ñ, вÑполниÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ IMPORT FOREIGN SCHEMA Ñо ÑледÑÑÑими паÑамеÑÑами:
import_defaultУпÑавлÑÐµÑ Ð²ÐºÐ»ÑÑением вÑÑажений ÑÑолбÑов
DEFAULTв опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑаблиÑÐбÑзаÑелÑнÑй: неÑ
Ðо ÑмолÑаниÑ: false
import_not_nullУпÑавлÑÐµÑ Ð²ÐºÐ»ÑÑением огÑаниÑений ÑÑолбÑов
NOT NULLв опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑаблиÑÐбÑзаÑелÑнÑй: неÑ
Ðо ÑмолÑаниÑ: true
ÐÑÐ¸Ð¼ÐµÑ H.4. ÐмпоÑÑ ÑÑоÑонней ÑÑ ÐµÐ¼Ñ
IMPORT FOREIGN SCHEMA dbo
EXCEPT (mssql_table)
FROM SERVER mssql_svr
INTO public
OPTIONS (import_default 'true');H.2.4.5. Ðадание пеÑеменнÑÑ #
ЧÑÐ¾Ð±Ñ Ð·Ð°Ð´Ð°ÑÑ Ð¿ÐµÑеменнÑÑ, вÑполниÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SET.
ÐоÑÑÑÐ¿Ð½Ñ ÑледÑÑÑие пеÑеменнÑе:
tds_fdw.show_before_row_memory_statsÐÑводиÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ ÐºÐ¾Ð½ÑекÑÑа памÑÑи в жÑÑнал Postgres Pro пеÑед вÑбоÑкой каждой ÑÑÑоки
tds_fdw.show_after_row_memory_statsÐÑводиÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ ÐºÐ¾Ð½ÑекÑÑа памÑÑи в жÑÑнал Postgres Pro поÑле вÑбоÑки каждой ÑÑÑоки
tds_fdw.show_finished_memory_statsÐÑвеÑÑи ÑÑаÑиÑÑÐ¸ÐºÑ ÐºÐ¾Ð½ÑекÑÑа памÑÑи в жÑÑнал Postgres Pro поÑле завеÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑоÑа
ÐÑÐ¸Ð¼ÐµÑ H.5. Ðадание пеÑеменной
postgres=# SET tds_fdw.show_finished_memory_stats=1; SET
H.2.4.6. ÐÑоÑмоÑÑ Ð·Ð°Ð¿ÑоÑа, вÑданного на ÑдалÑнно ÑаÑположенной ÑиÑÑеме #
ЧÑÐ¾Ð±Ñ Ð¿ÑоÑмоÑÑеÑÑ Ð·Ð°Ð¿ÑоÑ, вÑданнÑй в ÑдалÑнно ÑаÑположенной ÑиÑÑеме, вÑполниÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ EXPLAIN [ VERBOSE ].
H.2.5. ÐвÑÐ¾Ñ #
ÐжеÑÑ ÐонÑи