我是按照这里的代码操作的
http://blog.csdn.net/xman_78tom/article/details/5912164
数据库是2005,dll已经编译好了,存放的路径也是对的
可是在执行
- SQL code
create assembly AutoTran authorization dbo from 'd:/clrAutoTran.dll'with permission_set= external_access;
的时候报错
消息 6502,级别 16,状态 7,第 1 行
CREATE ASSEMBLY 失败,因为它无法读取物理文件'd:/clrAutoTran.dll': 50(不支持该请求。)。
请问是什么情况?
------解决方案--------------------
d:/clrAutoTran.dll这个dll存在吗?
------解决方案--------------------
- SQL code
DECLARE @SamplesPath nvarchar(1024)SELECT @SamplesPath = REPLACE(physical_name, 'Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf', 'Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\') FROM master.sys.database_files WHERE name = 'master';CREATE ASSEMBLY HelloWorld FROM @SamplesPath + 'HelloWorld\CS\HelloWorld\bin\debug\HelloWorld.dll'WITH PERMISSION_SET = SAFE;
------解决方案--------------------
这个路径的杠杠是不是该反过来打
d:/clrAutoTran.dll
-->
d:\clrAutoTran.dll
这样看看
------解决方案--------------------
参考:
需要 CREATE ASSEMBLY 权限。
如果指定 PERMISSION_SET = EXTERNAL_ACCESS,则 SQL Server 登录必须具有对服务器的 EXTERNAL ACCESS ASSEMBLY 权限。如果指定 PERMISSION_SET = UNSAFE,则需要 sysadmin 固定服务器角色的成员身份。
如果程序集已经存在于数据库中,则用户必须是将上载的程序集所引用的所有程序集的所有者。若要使用文件路径上载程序集,则当前用户必须是经过 Windows 身份验证的登录名或 sysadmin 固定服务器角色的成员。执行 CREATE ASSEMBLY 的用户的 Windows 登录名必须对此语句中加载的共享和文件具有读取权限。
http://msdn.microsoft.com/zh-cn/library/ms189524.aspx