Ich hatte ein ähnliches Problem, bei dem ich die gleiche Fehlermeldung für einen Benutzer erhielt. Ich denke, wenn ich meinen Fehler mitteile, kann ich das Problem aufklären, die Frage beantworten und andere davor bewahren, denselben Fehler zu machen.
Ich wollte, dass ein Benutzer Zugriff auf 4 bestimmte Ansichten hat, ohne Zugriff auf die zugrundeliegenden Tabellen zu haben (oder auf irgendetwas anderes in der DB, was das betrifft).
Zunächst gab ich ihnen die Datenbankrollenmitgliedschaft "db_denydatareader", weil ich dachte, dass dies sie daran hindern würde, irgendetwas aus irgendeiner Tabelle oder Ansicht auszuwählen (was es auch tat - wie ich dachte), obwohl ich dann "select" für diese 4 Ansichten gewährte, in der Annahme, dass es so funktionieren würde, wie ich es beabsichtigte - tat es aber nicht.
Die richtige Vorgehensweise ist einfach pas gewähren Sie ihnen die Rolle db_datareader und gewähren Sie einfach "select" für die Elemente, auf die der Benutzer Zugriff haben soll. Das Ergebnis der obigen Vorgehensweise war, dass der Benutzer auf absolut nichts außerhalb dieser 4 Ansichten zugreifen konnte - die Tabellen, auf denen diese Ansichten basieren, sind für diesen Benutzer ebenfalls nicht verfügbar.