【发布时间】:2017-05-16 19:28:36
【问题描述】:
在 Microsoft SQL Server 中,我想调用一个 dll 程序集作为触发器
这是我的 C# 代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WriteTimeInfile
{
public class Program
{
public static void Main(string[] args)
{
File.AppendAllText(@"C:\Users\Vivien\Desktop\date.txt",
DateTime.Now.ToString() + Environment.NewLine);
}
}
}
这是我的属性面板:
然后我在 SQL Server 中创建程序集,它似乎可以工作并创建一个程序集:
CREATE ASSEMBLY triggertest
FROM 'C:\Users\Vivien\Documents\visual studio 2015\Projects\WriteTimeInfile\WriteTimeInfile\bin\Release\WriteTimeInfile.dll'
WITH PERMISSION_SET = SAFE
但是当我尝试创建触发器时,我尝试按照link 中的说明进行操作:
CREATE TRIGGER tri_Publishes_clr
ON STATION
FOR INSERT
AS EXTERNAL NAME triggertest.[WriteTimeInfile.WriteTimeInfile.Program].Main
我收到一个错误
在程序集“WriteTimeInfile”中找不到类型“WriteTimeInfile.WriteTimeInfile.Program”。
没有任何作用
你能帮帮我吗?
【问题讨论】:
-
它不起作用,但谢谢你的链接
-
PERMISSION_SET = SAFE写入文件也不起作用。 -
你说得对,我刚刚意识到这个问题,就像我的代码因为没有 System.Security.Permissions.FileIOPermission 而无法工作
-
@MartinSmith 和 Vivien:正确,
SAFE在这里不起作用。请参阅我刚刚添加到我的答案中的两个注释(在该行下方)。
标签: sql sql-server triggers sqlclr