Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SQL过程替换文件中的字符串_C#_Sql Server_Clr_.net Assembly - Fatal编程技术网

C# 使用SQL过程替换文件中的字符串

C# 使用SQL过程替换文件中的字符串,c#,sql-server,clr,.net-assembly,C#,Sql Server,Clr,.net Assembly,我有一种方法可以从用C#for SQL Server编写的文件中删除字符串: [SqlProcedure] public static void fileReplace(string path, string patternToReplace, string stringForReplace) { using (SqlConnection connection = new SqlConnection("context connection=true")) { co

我有一种方法可以从用C#for 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
创建程序集文件utils
来自“\.dll”
具有权限设置=外部访问权限
去
创建过程文件替换(
@路径nvarchar(最大值)
,@patterToReplace-nvarchar(最大值)
,@stringForReplace nvarchar(最大值)
)
作为外部名称FileUtils.FileUtils.fileReplace;
去

C#中的方法工作正常,但当我从SQL Server调用它时,什么都没有发生(文件没有更改)。有什么问题吗?

您的SQLServer登录需要具有该文件的权限。当它尝试读取/写入文件时,可能会出现异常,但异常被
try-catch

抑制。您能记录您可能遇到的异常吗?谢谢!此文件已被其他进程使用。