/ / Кръстосана собственост на база данни Веригата не успее: няма достъп до базата данни - sql-server, sql-server-2008, сигурност, собственост

Кръстосана собственост на база данни Веригата не успее: няма достъп до базата данни - sql-server, sql-server-2008, сигурност, собственост

Аз имам:

  • Единствен Microsoft SQL Server 2008 R2
  • Две бази данни с няколко таблици: DB1 и DB2 (и двете със същия собственик)
  • Изглед в DB1, DB1.dbo.View1, че SELECT * FROM DB2.dbo.Table1
  • Роля, ViewRole, в DB1 даде SELECT разрешение на изгледа (няма други разрешения)
  • Потребител на Windows, DOMAINuser, със зададена роля на сървъра public, който принадлежи към DB1 "s ViewRole

Когато потребителят се опита да ИЗБИРА от изгледа, получавам грешката:

Основният сървър "DOMAINuser" не може да получи достъп до базата данни "DB2" под текущия контекст на сигурността

Опитах се (и надявам се, че успя) да активирам кръстосаната собственост на кръстосана база данни, използвайки и двете:

EXEC sp_configure "Cross DB Ownership Chaining", "1";RECONFIGURE

и

EXEC sp_dboption DB1, "db chaining", "true"
EXEC sp_dboption DB2, "db chaining", "true"

За да потвърдите, че настройката е направена, изпълнявам:

SELECT name, owner_sid, is_db_chaining_on FROM sys.databases

и резултатът е:

name  owner_sid           is_db_chaining_on
DB1   0x0105...DCB510000  1
DB2   0x0105...DCB510000  1

Така че, защо няма да може потребителят да избере от изгледа? Няма да има грешка, ако изгледът се избира само от таблица в DB1.

Всеки има някакви предложения за това, което може да съм пропуснал или неразбран?

Отговори:

2 за отговор № 1

Потребителят на прозорци трябва да има достъп до двете бази данни, за да може да използва верига за собственост на кръстосани данни.

Трябва също да деактивирате опцията на ниво сървър за сигурност и да активирате опцията само в базите данни.

Можете да прочетете повече за него тук www.mssqltips.com/sqlservertip/1782/understanding-cross-database-ownership-chaining-in-sql-server/