使用SQL存储过程替换文件中的字符串

3

我有一种用于从C#中的SQL Server文件中删除字符串的方法:

[SqlProcedure]
public static void fileReplace(string path, string patternToReplace, string stringForReplace)
{
    using (SqlConnection connection = new SqlConnection("context connection=true"))
    {
        connection.Open();
        try
        {
            File.WriteAllText(path, Regex.Replace(File.ReadAllText(path), patternToReplace, stringForReplace));
        }
        catch (Exception e)
        {
        }
    }
}

在SQL Server中,汇编和存储过程是这样创建的:

CREATE ASSEMBLY FileUtils 
  FROM '<path>\<name>.dll'
  WITH PERMISSION_SET = EXTERNAL_ACCESS
GO

CREATE PROCEDURE fileReplace (
         @path             nvarchar(max)  
       , @patterToReplace  nvarchar(max)  
       , @stringForReplace nvarchar(max)  
      )
AS EXTERNAL NAME FileUtils.FileUtils.fileReplace;
GO

C#中的方法没有问题,但是当我从SQL Server中调用它时,什么也没有发生(文件没有改变)。出了什么问题?


1
你能记录下可能出现的异常吗? - Simon
1个回答

2

您的SQLServer登录需要具有对该文件的权限。当尝试读/写文件时可能会出现异常,但是由于try catch语句抑制了异常。


谢谢!此文件已被其他进程使用。 - user1733773

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接