3

入力として DateTime2 を受け取り、別の DateTime2 を返す SQLCLR 関数を作成しようとしています。この投稿に基づいて、パラメーターを C# 型の DateTime に変更し、必要な精度のレベルを提供しました。ただし、入力は null になる可能性があるため、DateTime にしたいと思いますか?; 戻り型も。

using System;
using Microsoft.SqlServer.Server;

namespace SqlServer.Functions {
    public class UserDefinedFunctions {
        [SqlFunction(DataAccess = DataAccessKind.None)]
        public static DateTime? GetLocalTimeFromGMT(DateTime? dateTime) {
            if (dateTime.HasValue)
                return DateTime.SpecifyKind(dateTime.Value, DateTimeKind.Utc).ToLocalTime();
            else
                return (DateTime?)null;
        }
    }
}

問題は、デプロイしようとすると次のエラーが発生することです。

エラー 1 タイプ 'Nullable`1' が見つかりません。存在しないか権限がないためです。SqlServer.関数

Sql Server 2008 と Visual Studio 2008 を使用しています。

4

1 に答える 1

1

残念ながら、Visual Studio 2008 は、Null 許容型を含む、SQL Server 2008 で追加された多くの新機能を備えた SQLCLR 関数の展開をサポートしていません。この問題で Bob Beauchemin が提出したConnect 項目を確認できます。これは、Visual Studio 2010 用に修正されています。

SQLCLR で System.Core および System.Xml.Linq アセンブリを使用できることを Visual Studio に示す Connect 項目に回避策がリストされています。それ以外の場合は、関数をデータベースに手動でデプロイできます。

于 2010-05-27T19:49:35.920 に答える