2017-03-01 37 views
0

建立并使用.NET Framework 4.5SQL Server数据库项目和.NET Framework 3.5的不能使用的TimeZoneInfo类

试图将其部署到SQL Server 2008数据库成功地部署到SQL Server 2012数据库,实现了.NET框架3.5是必需的。走进开发机(Win 7的)Windows功能和全面启动3.5

测试Windows应用程序的项目可以申报一个TimeZoneInfo类对象时,其.NET架构属性为3.5

SQL Server数据库项目不能,代码中TimeZoneInfo的所有实例现在都是红色的。

因此,似乎在.NET Framework 3.5具有从一个SQL Server数据库中的受限“访问”项目

我有双重检查目标平台是SQL Server 2008的

尝试设置SQLCLR权限级别变为不安全。没有不同。

创建了一个新的虚拟空SQL Server数据库项目,它的行为相同。 4.5在3.5时感到高兴。

我没有早期的IDE在这台机器上,所以不能说它是否是VS2015的特性与否。

其他信息可以帮助别人; 在追求阿列克谢的参考资料,从而得到一个可编译的项目后,我在S.O上找到了以下内容。导致在SqlServer 2008数据库上成功部署。

1)将项目权限级别设置为安全。 (您将使组件不安全以后使用SSMS)

2)使用SSMS有足够的权限执行

  • EXEC sp_changedbowner的 '山' ALTER DATABASE MyDatabaseName SET TRUSTWORTHY ON

  • 更改数据库[ MyDatabaseName] set Trustworthy ON

3)部署项目

4)使用SSMS执行

  • ALTER ASSEMBLY [MyAssemblyName] WITH PERMISSION_SET =不安全;

UDF现在可用。

+1

您是否检查文档以查看是否符合所有要求(如引用的程序集)?如果您没有搜索权限 - https://msdn.microsoft.com/zh-cn/library/system.timezoneinfo(v=vs.90).aspx –

+0

Thx Alexei。项目需要参考mscorlib 2和system.core.3.5。当它使用Framework 3.5和TimeZoneInfo时。如果你把它作为答案,我会打勾。关于Bob –

+0

我不介意在.NET 3.5和/或SQL Server 2008中看不到某些内容。为什么?停止使用10年前的软件,就是这样。 – abatishchev

回答

0

按说TimeZoneInfo类有不安全的代码,所以你必须要做到这一点,使之与SQL Server 2008工作:

因为你要拨打的一个HostProtectionAttribute(几的方法的方法在TimeZoneInfo中),您的程序集(调用此方法的程序集)也必须编录为不安全。

所以我的假设是你需要打开Project > Properties > Build > Allow Unsafe Code复选框。

请参阅thisthis论坛获取更多信息。

相关问题