我正在尝试编写一个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。
答案 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程序集,它们应该适合您。否则,您可以手动将该功能部署到数据库。