2017-03-04 13 views
0

私の理解では、基礎テーブルがUDFに基づいて計算カラムを持つ一時テーブルを設定することはできません。 Computed Columns In Azure SQL Server 2016 Temporal Tables一時テーブルを持つ計算カラム

推奨される手順は

  • 最初ににあなたの計算列を追加し、システムのバージョン管理
  • をオフにしている。しかし、私はそれはあなたが特定のプロセスに従うならば、これは可能なはずであることを示唆し見てきましたベーステーブル
  • 履歴テーブル
  • に適切な静的型を持つ列を追加し、得られた計算カラム
  • の「タイプ」を確認します10
  • システムのバージョン管理を有効にする

このソリューションはAzureでのみ動作する可能性があります。私は、datetimeタイプのUDF計算カラムを持つテーブルを使用してSQL標準で試しましたが、成功しませんでした。誰でもこれを動作させることができましたか?もしそうなら、シンプルなTSQLの例を共有してください。

TNX

答えて

0

同じ状況がアズールと非アズール的環境のためです。

同じデータベースに関数 - >tempdbを作成する必要があります。 tempdbで関数を作成すれば動作します。しかし、SQL Serverの再起動中に破棄されます。機能付き計算列は、データベースモデルによって制限されます。

あなたが言及した解決策は、row versioningfeathureのテーブルです。しかし、機能のための同じルール。

例:

-- have to use tempdb 
    use tempdb 
    go 

    -- UDF 
    create function [dbo].ReturnSeven() 
    returns int 
    with schemabinding 
    begin 
     return 7 
    end 

    -- table 
    if object_id('tempdb..#TmpSevenTable') is not null drop table #TmpSevenTable 
    create table #TmpSevenTable (
     pk int not null unique, 
     seven as dbo.ReturnSeven() persisted, 
     mpl_seven as pk * dbo.ReturnSeven() persisted) 

    insert into #TmpSevenTable (pk) select 1 
    insert into #TmpSevenTable (pk) select 3 

    -- look at computed columns 
    select * from #TmpSevenTable 
+0

私は従っていないことを確認。計算カラムを持つテーブルに一時テーブルを設定できるようにするには、まず、計算カラムがtempDBに基づいている関数を追加する必要があることを示唆していますか?明らかにするために、私のベースのテーブルと履歴テーブルはTempDBにありません。私は、計算カラムの宣言でtempDBの関数を使用することはできないと思います。このように、私はあなたの提案されたソリューションがどのように動作するのか理解していません。私にTSQLの例を教えてもらえますか? –

+0

ようこそ。 – Deadsheep39

+2

ありがとうございます。しかし、説明したのは一時テーブルであり、一時テーブルではありません。 –

関連する問題