SQL Server外部表中的计算列

时间:2017-04-12 09:43:18

标签: sql-server azure azure-sql-database external-tables

我目前正在为我们的应用程序从内部部署迁移到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数据库项目不接受所指示的方法。

关心并提前感谢您! 约翰

1 个答案:

答案 0 :(得分:1)

外部表定义有点像视图作为远程表的投影。因此,您不需要在外部表中重复计算列的定义,只需要包含计算列名及其数据类型,该名称应该是远程表中函数返回的数据类型。这是有意义的,因为您希望列计算在远程数据库上完成,而不是在本地完成。