c#
  • sql
  • sql-server
  • sql-server-2008
  • permissions
  • 2012-04-19 17 views 0 likes 
    0

    私はC#アプリケーションを持っているし、次は私のWeb.configファイルからの抜粋です:クエリはデバッグモードでは動作しますが、デプロイメントモードでは動作しませんか?

    [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アプリケーションの実行:コード自体で

    <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> 
    

    、私はこのようなクエリを持っています私はそれをデバッグするが、私はそれを公開すると完全に良い、クエリが失敗します。 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

    1

    ユーザーは、prod環境で更新を実行するための十分な権限を持っていません。 実行中のユーザーに更新権限を与える必要があります

    +0

    +1ありがとうございます。 – Legend

    関連する問題