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

标签 c# sql-server clr .net-assembly

我有一个方法可以从用 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 调用它时,没有任何反应(文件没有改变)。怎么了?

最佳答案

您的 SQLServer 登录名需要具有对该文件的权限。有可能当它尝试读/写文件时失败并出现异常,但异常被 try catch

抑制了

关于c# - 使用 SQL 过程替换文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951638/

相关文章:

c# - 使用C#连接在线MySQL数据库-用户没有权限

c# - MySQL中两个表的递归语句

sql - SQL Server 2005中如何检查是否存在尚未提交的事务?

c++ - 带有托管 C++ dll 的加载程序锁(regsvr32 R6033 错误)

c# - 如何创建支持 UTF-8 的最简单的 PHP Get API?

sql - 子查询列的总和

c# - "SqlParameterCollection only accepts non-null SqlParameter type objects, not String objects"

c# - 构造函数是初始化值还是 CLR?

C# Entity Framework 4 Common Language Runtime 检测到无效程序错误?

c# - 文件上传 Dropbox v2.0 API