2013-08-23 101 views
-1

我在C#中創建一個CLR用戶定義函數爲您的意思是在我的網站實施和SQL Server部署的DLL來讀取CLR函數使用的文本文件2008無法在部署到SQL Server 2008的

但閱讀文本文件後的字典返回空白。

下面是代碼的某些部分,但問題是在閱讀文本文件:

public Spelling() 
{ 
     try 
     { 
      string fileContent = File.ReadAllText("C:/Bgtext/big.txt"); 
      List<string> wordList = fileContent.Split('\n').ToList(); 

      foreach (var word in wordList) 
      { 
       string trimmedWord = word.Trim().ToLower(); 
       if (_wordRegex.IsMatch(trimmedWord)) 
       { 
        if (_dictionary.ContainsKey(trimmedWord)) 
         _dictionary[trimmedWord]++; 
        else 
         _dictionary.Add(trimmedWord, 1); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      ex.Message.ToString(); 
     } 

    } 

    [SqlFunction(Name = "CorrectWords", DataAccess = DataAccessKind.Read)] 
    public static string correctwords(string words) 
    { 
     string[] arr = words.Split(' '); 

     for (int i = 0; i <= arr.Length - 1; i++) 
     { 
      arr[i] = Correct(arr[i]); 
     } 

     StringBuilder correctedwords = new StringBuilder(); 

     foreach (string value in arr) 
     { 
      correctedwords.Append(value); 
      correctedwords.Append(' '); 
     } 

     return correctedwords.ToString(); 
    } 

是否有任何特定的位置,我需要把我的big.txt文件部署DLL到SQL Server或之後這是一個權限問題還是有其他方式來閱讀文本文件?

+0

也許你應該用這個異常而不是'ex.Message.ToString();'來實現什麼,到底是什麼? –

回答

1

你之前授予permision數據庫做文件I/O

這裏是我的CLS項目之一(當然我的開發機)

create assembly MB from 'C:\Projects_DotNet\ABC\adlib\adlib\bin\Debug\adlib.dll' 
    with permission_set = external_access 

您也可以運行相當於一個例子改變裝配命令

檢查安全性,類似於一個Hello World存儲過程添加到

[SqlProcedure] 
    public static void hello(SqlString yousaid) 
    { 
    if (yousaid.IsNull) 
    { 
     yousaid = "Not too chatty are you " + Environment.UserDomainName + "\\" + Environment.UserName; 
     SqlContext.Pipe.Send("Mercedes Benz says, '" + yousaid.ToString() + "'\n"); 
    } 
    else 
    { 
     SqlContext.Pipe.Send("The CLR proc says, you said '" + yousaid.ToString() + "'\n"); 
    } 
    } 

用「要回顯的東西」打電話給你 - 確保它有效,然後用空值調用hello並查看CLR運行的安全上下文。然後,您可以驗證文件的NT權限等。

您還可以使用SqlContext.Pipe.Send方法作爲顯示調試信息的簡單方法。

+0

SQL Server進程還可以訪問'C:/ Bgtext/big.txt'嗎? –

+0

我嘗試了所有三個permission_Set = SAFE,UNSAFE,EXTERNAL_ACCESS,但它不起作用。 – user1087769

+0

如何將訪問權限設置爲文本文件,我試圖與所有人共享文件夾,並將所有訪問權限 – user1087769