3

SQL Server 用に C# で記述されたファイルから文字列を削除する方法があります。

[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 から呼び出しても何も起こりません (ファイルは変更されません)。どうしたの?

4

1 に答える 1

2

SQLServer ログインには、そのファイルへのアクセス許可が必要です。ファイルを読み書きしようとすると、例外で失敗する可能性がありますが、例外はtry catch

于 2012-10-18T09:42:21.400 に答える