我有一个小应用程序,它使用带有CLR存储过程的SQL Server 2005 Express。它已成功安装并运行在运行XP和Vista的许多计算机上。
要创建程序集,执行以下SQL(更改名称以保护无辜者):
CREATE ASSEMBLY myAssemblyName FROM 'C:\PathToAssembly\myAssembly.dll
在运行Vista并且具有一些非常积极的安全策略限制的一台计算机(反映其他安装计算机的测试计算机)上,我收到以下错误:
消息6218,级别16,状态2,服务器域\ servername,行2 程序集“myAssembly”的CREATE ASSEMBLY失败,因为程序集“myAssembly”验证失败。检查引用的程序集是否是最新的并且在数据库中是否可信(对于external_access或unsafe)。 CLR Verifier错误消息(如果有的话)将跟随此消息
[:myProcSupport.Axis :: Proc1] [mdToken = 0x6000004] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc2] [mdToken = 0x6000005] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc3] [mdToken = 0x6000006] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis ::。ctor] [mdToken = 0x600000a] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc4] [mdToken = 0x6000001] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc5] [mdToken = 0x6000002] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc6] [mdToken = 0x6000007] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc7] [mdToken = 0x6000008] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc8] [mdToken = 0x6000009] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc8] [mdToken = 0x600000b] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作。
[:myProcSupport.Axis :: Proc9] [mdToken = 0x600000c] [HRESULT 0x8007000E] - 没有足够的存储空间来完成此操作....
C#DLL定义为SAFE
,因为它只使用数据库中包含的数据。 DLL通常没有签名,但我提供了一个签名版本来测试并收到相同的结果。
安装由其他人完成,我无法访问该框,但他们正在执行我提供的脚本并在其他计算机上工作。
我试图找到有关此错误的信息,超出了脚本提供的结果,但我没有找到任何有用的信息。
执行脚本以创建程序集的人使用管理员帐户登录,以管理员身份运行CMD,通过Windows身份验证连接到数据库,已添加到dbo_owner角色,并添加到服务器角色SysAdmin希望这是一个权限问题。这没有任何改变。
我是否需要针对此环境以不同方式配置SQL Server 2005 Express?
除了SQLCMD的输出之外,是否记录了此错误?什么可能导致此错误? Vista的安全策略会导致这种情况吗?
我无法访问计算机(客户正在进行测试)因此我无法自行检查该框。
TIA
答案 0 :(得分:1)
如果此代码在其他服务器上用作SAFE
,那么我首先检查以确保.NET安装到正确的版本(包括更新)。也可能是其中一个.NET DLL存在问题,需要修复它。
关于以下错误消息:
没有足够的存储空间来完成此操作。
实际上是“内存不足”错误(代码= ERROR_OUTOFMEMORY):要么没有足够的OR或者没有权限(以某种方式)使用它,要么没有可用的文件句柄等。
其他提及此错误:
因此,如果此问题确实与内存有关,则可能与以下内容有关:
/3GB
开关?如果带有错误的服务器的配置与未收到错误的计算机相同:
然后,如果不工作的计算机的安全设置不同,则需要检查SQL Server NT服务的“登录身份”帐户。它是本地系统帐户吗?这是本地登录吗?是域登录吗?如果问题与安全设置有关,那么这就是我要开始寻找的地方。如果服务使用的是本地系统帐户,请尝试使用本地或域登录(无论如何,这是一种更好的做法)。如果登录已经是本地用户或域用户,请检查安全策略如何影响该用户和该登录所属的任何Windows组。