【问题标题】:The SELECT permission was denied on the object 'Notes', database 'Sticky', schema 'dbo'对象“Notes”、数据库“Sticky”、模式“dbo”的 SELECT 权限被拒绝
【发布时间】:2011-03-27 21:16:36
【问题描述】:

它出现在这里:

            SyncAdapter notesSyncAdapter = notesBuilder.ToSyncAdapter();
        ((SqlParameter)notesSyncAdapter.SelectIncrementalInsertsCommand.Parameters["@sync_last_received_anchor"]).DbType = System.Data.DbType.Binary;
        ((SqlParameter)notesSyncAdapter.SelectIncrementalInsertsCommand.Parameters["@sync_new_received_anchor"]).DbType = System.Data.DbType.Binary;

用户拥有表、模式和数据库的所有权限。 知道这仍然会引发什么异常吗?

更多细节: SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();

builder["数据源"] = "achernar"; builder["用户 ID"] = "sbbf974"; builder["密码"] = "随便"; builder["Integrated Security"] = false; builder["初始目录"] = "sticky";

【问题讨论】:

  • 这里有一些建议:stackoverflow.com/questions/1196793/…
  • 略读。谢谢。更多细节: SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder(); // 1. 准备服务器数据库连接并将其附加到同步代理 builder["Data source"] = "achernar"; builder["用户 ID"] = "sbbf974"; builder["密码"] = "随便"; builder["Integrated Security"] = false; builder["初始目录"] = "sticky";
  • SQL Lite 是从哪里来的?
  • 在 syncguru.com 上展示的第一个演示之后,我尝试将 sqlite db 与 sql server 2008 同步

标签: c# sql sql-server-2008 microsoft-sync-framework


【解决方案1】:

问题出在用户身上,正如 Abe 猜测的那样。 用户是 dbo,这意味着虽然它应该拥有所有权限,但它没有。 所以我所做的是创建另一个登录,我为其赋予了以下数据库角色:public、db_datareader、db_datawriter。 现在可以了。

【讨论】:

  • 一旦有答案,请接受您自己的答案,以便将此问题标记为已解决。很高兴您找到了解决方案 - 我从未听说过 DBO 用户无权做所有事情。
【解决方案2】:

您确定您的代码和数据库已正确同步吗?如果可以,我建议让您的一位同事检查以下内容。有时,一双新的眼睛可以捕捉到你一直忽略的东西......

  • 您是否在代码中引用了正确的数据库(而不是 开发数据库)
  • 您是否以您在代码中认为的用户身份进行连接
  • 该用户在您要连接的数据库中是否具有权限

我知道这听起来可能很明显,但我认为值得让其他人为您仔细检查。我知道我以前被这个抓住过......

【讨论】:

  • 是的。我已经使用添加新 LocalDataCacheItem 时弹出的向导测试了凭据/设置。
【解决方案3】:

谁是“用户”?我更相信 SQL Server,它明确指出当前连接没有权限。同步框架通过 IIS 和 ISAPI 遍历多个层,直到它到达数据库,因此您最好弄清楚使用了哪些凭据。 IIS 层是否存在模拟?约束委派?同步框架客户端是否使用什么(NTLM/Digest/Basic/Nothing)向 IIS 进行身份验证?

【讨论】:

    【解决方案4】:

    尝试删除

    Trusted_Connection=True;
    

    Integrated Security=True;
    

    来自您的 C# 代码的连接字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      相关资源
      最近更新 更多