我有一个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"."
}
有关如何解决此问题的任何建议?
答案 0 :(得分:2)
是的,这是一个非常明显的错误。您需要确保您的网站设置的任何帐户都可以运行,因为它应该有权更新/插入给定的表格。
由于用户似乎尚未在连接字符串中设置。它将使用web方法运行的任何方式。所以,find out what that account is和grant适当的烫发。它在开发中工作,因为它可能在您的帐户下运行,可能可以完全访问您的开发数据库。
答案 1 :(得分:1)
用户没有足够的权限在prod环境中执行更新。 您必须向正在运行的用户授予更新权限