对象“Notes”在数据库“Sticky”中的模式“dbo”上被拒绝了SELECT权限。

5

它出现在这里:

            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["Data source"] = "achernar"; builder["User ID"] = "sbbf974"; builder["Password"] = "whatever"; builder["Integrated Security"] = false; builder["Initial Catalog"] = "sticky";

这里有一些建议:https://dev59.com/znM_5IYBdhLWcg3w2XLw - Ben Griswold
浏览了一下。谢谢。 更多细节: SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder(); // 1. 准备服务器数据库连接并将其附加到同步代理 builder["Data source"] = "achernar"; builder["User ID"] = "sbbf974"; builder["Password"] = "whatever"; builder["Integrated Security"] = false; builder["Initial Catalog"] = "sticky"; - user228137
SQL Lite在这一切中扮演了什么角色? - leppie
在 syncguru.com 展示的第一个演示之后,我的尝试是将 SQLite 数据库与 SQL Server 2008 同步。 - user228137
4个回答

3
问题出在用户身上,正如Abe所猜测的那样。 该用户是dbo,这意味着尽管它应该拥有所有权限,但实际上却没有。 因此,我创建了另一个登录名,并赋予了以下数据库角色:public、db_datareader、db_datawriter。 现在它可以正常工作了。

请在您的答案可用时接受它,以便将此问题标记为已解决。很高兴您找到了解决方案-我从未听说过DBO用户没有权利做任何事情。 - SqlRyan

1

您确定代码和数据库已正确同步吗?如果可以的话,我建议让您的同事检查以下内容。有时候新鲜的眼睛可以发现您一直忽略的问题...

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

我知道这听起来可能很明显,但我认为让其他人再次为您进行确认是值得的。我知道我以前就因为这个问题被卡住了...


是的。我已经通过使用添加新的LocalDataCacheItem时弹出的向导测试了凭据/设置。 - user228137

0

试着删除

Trusted_Connection=True;

或者

Integrated Security=True;

从您的 C# 代码的连接字符串中。


0

谁是“用户”?我更相信 SQL Server 明确说明当前连接没有权限。同步框架经过多个层次,通过 IIS 和 ISAPI 直到达到数据库,因此您最好弄清楚使用的凭据。在 IIS 层面上是否发生了模拟?受限委派?同步框架客户端使用什么(NTLM/Digest/Basic/Nothing)对 IIS 进行身份验证?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接