2017-04-12 172 views
1

我目前正在爲我們的應用程序從本地遷移到Azure。目前,應用程序使用跨數據庫查詢,而Azure SQL服務器不再支持這種查詢...無賴SQL Server外部表中的計算列

但是:作爲隧道盡頭的燈,我們介紹:外部表! 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 ... 
); 

一些代碼被排除在外,因爲它是WAAY到大...

以及創建外部我第一次嘗試表:

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數據庫項目並未接受所示的方法。

問候並提前致謝! John

回答

1

外部表定義的行爲有點像遠程表的投影視圖。因此,您不需要在外部表中重複計算列的定義,只需包含計算列名稱及其數據類型,該數據類型應該是該函數在遠程表中返回的數據類型。這是有意義的,因爲您希望列計算在遠程數據庫上完成,而不是在本地執行。