У меня есть один сервер Azure SQL, на котором у меня есть несколько баз данных. Мне нужно иметь возможность запрашивать эти базы данных, и на данный момент я решаю эту проблему с помощью внешних таблиц. Проблема с этим решением заключается в том, что внешние таблицы не поддерживают все те же типы данных, что и обычные таблицы.
Согласно следующей статье, решение несовместимых типов данных заключается в использовании других похожих во внешней таблице. https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-data-types#unsupported-data-types.
DDL для таблицы в DB1
CREATE TABLE [dbo].[ActivityList](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Registered] [datetime] NULL,
[RegisteredBy] [varchar](50) NULL,
[Name] [varchar](100) NULL,
[ak_beskrivelse] [ntext] NULL,
[ak_aktiv] [bit] NULL,
[ak_epost] [bit] NULL,
[Template] [text] NULL
CONSTRAINT [PK_ActivityList] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
DDL для внешней таблицы в DB2
CREATE EXTERNAL TABLE [dbo].[NEMDBreplicaActivityList]
(
[ID] [int] NOT NULL,
[Registered] [datetime] NULL,
[RegisteredBy] [varchar](50) NULL,
[Name] [varchar](100) NULL,
[ak_beskrivelse] [nvarchar](4000) NULL,
[ak_aktiv] [bit] NULL,
[ak_epost] [bit] NULL,
[Template] [varchar](900) NULL
)
WITH (DATA_SOURCE = [DS],SCHEMA_NAME = N'dbo',OBJECT_NAME = N'ActivityList')
При запросе внешней таблицы NEMDBreplicaActivityList возникает следующая ошибка
Ошибка при получении данных из server.database.windows.net.db1. Полученное базовое сообщение об ошибке было: «PdwManagedToNativeInteropException ErrorNumber: 46723, MajorCode: 467, MinorCode: 23, Severity: 16, State: 1, ErrorInfo: ak_beskrivelse, исключение типа« Microsoft.SqlServer.DataWarehouse.Tds.PdwManagedTrown »было сгенерировано. '.
Я попытался определить столбец ak_beskrivelse как другие допустимые типы данных внешних таблиц, такие как varchar, с тем же результатом.
К сожалению, мне не разрешено редактировать тип данных столбцов в таблице db1.
Я предполагаю, что ошибка связана с типом данных. Есть идеи, как это исправить?
ak_beskrivelse
4000 символов? Если больше, попробуйте nvarchar (MAX). Точно так же varchar (MAX) дляTemplate
, если более 8000 символов. - person Dan Guzman   schedule 17.06.2018