/ / Stored Proc достъп до множество бази данни на същия сървър FAILS - съхранени процедури, sql-server-2008-r2, кръстосана база данни

Съхранявани Proc достъп до множество бази данни на същия сървър FAILS - съхранени процедури, sql-server-2008-r2, кръстосана база данни

Опитвам се да стартирам запомнената процедура от aограничено разрешение за вход, на което сте получили разрешения за запомнената процедура. Запазената процедура има достъп до 2 бази данни, които съществуват на същия сървър. Когато изпълнявам запомнената процедура, получавам грешка, която гласи:

Главният сървър "LimitedUser" не може да получи достъп до базата данни "Database2" под текущия контекст на сигурността.

Някои фон: Наскоро бях натоварена с целта мигрирането на нашите 2 различни сървъра за бази данни в една база данни. Аз архивирах и изнасях необходимите бази данни и ги възстанових в новия сървър. По-старите бази данни са MS sql сървър 2000 (за Database 2) и MS sql сървър 2005 (за база данни 1 - където се намира споменатия по-горе съхранен proc)

Намерих няколко причини, които изглежда показват товазащото импортирах базите данни, собствениците бяха различни и това би причинило проблем. Така че аз бях "exec sp_changedbowner" sa "" на двете бази данни, за да се уверим, че имат същия собственик. Все още имам същата грешка при стартирането на съхранения proc от LimitedUser. Много други примери на различни форумни сайтове се занимават с бази данни, които са на различни сървъри ... и трябва да използват отворени команди за заявки. Не вярвам, че това е необходимо.

Когато го стартирам като потребител, който има повече администраторски разрешения, съхраненият proc работи добре. Така че въпросът ми е: какви разрешения да задам, за да позволи това действие от LimitedUser?

Благодаря!

Отговори:

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

LimitedUser има нужда от разрешения за Database2 да направикаквото и да е съхранената процедура в тази база данни, верифицирането на собствеността ще работи само в рамките на една и съща база данни (освен ако не активирате опцията за сървър Cross Property Ownership Chaining, която не препоръчвам, тъй като разгражда контейнера на базата данни като граница на сигурността).

Така например, имате db1 и db2, има съхранен proc в db1, който изпълнява select * от db2.dbo.table1

За това трябва LimitedUser да има:

  • изпълнете разрешения в базата данни db1 за процедурата
  • изберете разрешения на table1 в db2