我目前正在为我们的应用程序从内部部署迁移到Azure。目前,应用程序使用跨数据库查询,Azure SQL服务器不再支持这种查询... bummer
但是:作为隧道尽头的灯,我们介绍:外部表! Whoehoe!
这里有一个问题:我根本没有问题将外部数据库移植到外部表,但是对于一个使用计算值的teenie weenie列。
这是外部数据库中的表:
CREATE TABLE [dbo].[Table] (
...bla bla bla...
[DF_Installaties_MaxGebruikers] DEFAULT ((-1)) NOT NULL,
[Rublengte] INT CONSTRAINT [DF_Installaties_Rublengte] DEFAULT ((6)) NOT NULL,
[schooldbserver] AS ([dbo].[getpubliek_ip_adres]([p_sqlserver])),
[p_SQLserver] INT CONSTRAINT [DF_Installaties_schooldbserverEqualsDezeServer] DEFAULT ((1)) NOT NULL,
[klaskalendersOpnieuwMaken] INT CONSTRAINT
.... bla bla bla ...
);
一些代码被遗漏了,因为它可能会变得很大......
我第一次尝试创建外部表是:
CREATE EXTERNAL TABLE [ExternalScheme].[ExternalTable]
(
... bla bla bla ...
, [Rublengte] INT NOT NULL
, [schooldbserver] AS ([dbo].[getpubliek_ip_adres]([p_sqlserver]))
, [p_SQLserver] INT NOT NULL
, [klaskalendersOpnieuwMaken] INT NOT NULL
... bla bla bla ...
WITH
(
DATA_SOURCE = [ExternalDataSource]
);
再一些bla bla bla被遗漏到了问题的重点
所以真正的问题是:我该怎么做? Sql数据库项目不接受所指示的方法。
关心并提前感谢您! 约翰
答案 0 :(得分:1)
外部表定义有点像视图作为远程表的投影。因此,您不需要在外部表中重复计算列的定义,只需要包含计算列名及其数据类型,该名称应该是远程表中函数返回的数据类型。这是有意义的,因为您希望列计算在远程数据库上完成,而不是在本地完成。