2012-04-19 146 views
0

我有一個C#應用程序,以下是從我的Web.config文件的摘錄:查詢在調試模式下工作,但不在部署模式下工作?

<connectionStrings> 
    <add name="MyDB" connectionString="Data Source=MACHINENAME\\SQLEXPRESS;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=true" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
    <system.web> 
    <authentication mode="Windows" /> 
    <identity impersonate="false" /> 
    </system.web> 

在代碼本身,我有這樣的查詢:

[WebMethod] 
public string InsertField(string str1, string str2, string str3) 
{ 

    string sql = @" 
      UPDATE DBNAME.dbo.TableName SET Field2 = '{2}', Modified_At=GETDATE() WHERE Field1 = '{0}' AND Field2 = '{1}'; 

      IF @@ROWCOUNT = 0 
       INSERT INTO DBNAME.dbo.TableName (Field1, Field2, Field3, Modified_At) 
       VALUES('{0}', '{1}', '{2}', GETDATE()) 
      "; 

    sql = String.Format(sql, str1, str2, str3); 

    try 
    { 
      string ConString = Constants.connString; 
      con = new SqlConnection(ConString); 

      cmd = new SqlCommand(sql, con); 
      con.Open(); 
      cmd.ExecuteNonQuery(); 
      return "Success"; 
    } 
    catch (Exception x) 
    { 
      return x.Message; 
      //Response.Write(x); 
    } 

} 

我運行Web應用程序當我調試它時非常好,但是當我發佈它時,查詢失敗。使用Firebug進行調試會產生以下錯誤:

{ 
    "d": "The UPDATE permission was denied on the object "TableName", database "DBName", schema "dbo".\r\nThe INSERT permission was denied on the object "TableName", database "DBName", schema "dbo"." 
} 

有關如何解決此問題的任何建議?

回答

2

是的,這是一個非常明顯的錯誤。您需要確保您的網絡設置爲運行的任何帳戶,因爲應該有權更新/插入給定的表。

由於用戶似乎沒有在連接字符串中設置。它將使用任何web方法運行。所以,find out what that account isgrant適當的燙髮。它在開發中工作,因爲它可能在您的帳戶下運行,可能完全訪問您的開發數據庫。

+0

+1謝謝。很好的答案! – Legend 2012-04-19 06:47:30

1

用戶沒有足夠的權限在您的產品環境中執行更新。 您必須將更新權限授予您正在運行的用戶

+0

+1謝謝你的回覆。 – Legend 2012-04-19 06:47:51

相關問題