SQL CLR和可空的datetime参数

时间:2010-05-27 15:39:42

标签: c# .net tsql sql-server-2008 sqlclr

我正在尝试编写一个SQLCLR函数,该函数将DateTime2作为输入并返回另一个DateTime2。基于此post我将参数更改为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.Functions

我正在使用Sql Server 2008和Visual Studio 2008。

1 个答案:

答案 0 :(得分:1)

不幸的是,Visual Studio 2008不支持部署SQLCLR功能,其中包括SQL Server 2008中添加的许多新功能,包括Nullable Types。你可以在这个问题上看到Connect item Bob Beauchemin,这个问题已经针对Visual Studio 2010修复了。

Connect项中列出了一种解决方法,它向Visual Studio指示它可以使用SQLCLR中的System.Core和System.Xml.Linq程序集,它们应该适合您。否则,您可以手动将该功能部署到数据库。