Технические характеристики системы
Microsoft SQL Server Management Studio 9.00.4035.00
Microsoft Analysis Services Client Tools 2005.090.4035.00
Microsoft Data Access Components (MDAC) 2000.085.1132.00
(xpsp.080413-0852)
Microsoft MSXML 2.6 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 7.0.5730.13
Microsoft .NET Framework 2.0.50727.1433
Operating System 5.1.2600
В SQL Server 2005 с именем BHAVMSQL02 у меня есть две базы данных Mattercentre_dev и CMSNET_DEV . Mattercentre_dev имеет хранимую процедуру, которая создает список из таблицы в CMSNET_DEV . Хранимая процедура выглядит
как это ...
USE [Mattercentre_dev]
GO
/****** Object: StoredProcedure [dbo].[UDSPRBHPRIMBUSTYPE]
Script Date:02/12/2009 10:18:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[UDSPRBHPRIMBUSTYPE] WITH EXECUTE AS 'Readuser' AS
DECLARE @SERVERNAME nvarchar(30)
DECLARE @DBASE nvarchar(30)
DECLARE @SQL nvarchar(2000)
SET @SERVERNAME = Convert(nvarchar,
(SELECT spData FROM dbSpecificData WHERE spLookup = 'CMSSERVER'))
SET @DBASE = Convert(nvarchar,
(SELECT spData FROM dbSpecificData WHERE spLookup = 'CMSDBNAME'))
SET @SQL =
'SELECT
null as Code
, ''(not specified)'' as Description
UNION SELECT
clnt_cat_code as Code
, clnt_cat_desc as Description
FROM '
+ @SERVERNAME + '.' + @DBASE + '.dbo.hbl_clnt_cat
WHERE
inactive = ''N''
ORDER BY Description'
PRINT @SQL
EXECUTE sp_executeSQL @SQL
@SERVERNAME == 'BHAVMSQL02'
@DBASE == 'CMSNET_DEV'
Когда хранимая процедура была выполнена, появилось следующее сообщение об ошибке ...
The server principal "ReadUser" is not able to access the database "CMSNET_DEV" under the current security context.
После поиска сообщения об ошибке, я выполнил следующее исправление ...
- Удалил пользователя ReadUser из
BHAVMSQL02 -> Базы данных ->
Mattercentre_dev -> Безопасность -> Пользователи
Настройка ReadUser из BHAVMSQL02 ->
Безопасность -> Вход со следующим
Настройки ...
Общее
Имя пользователя - readUser
Пароль - ххххххххххх
Подтвердите - xxxxxxxxxxxx
ДБ по умолчанию - мастер
по умолчанию lg - британский английский
Все остальное - Unset
Роли сервера
Единственный общедоступный набор
Пользовательские сопоставления
CMSNET_DEV - ReadUser - dbo
Членство в роли базы данных - db_owner, общедоступный
Mattercentre_dev - ReadUser - dbo
Членство в роли базы данных - db_owner, общедоступный
Затем я запустил следующий скрипт ...
ALTER DATABASE CMSNET_DEV SET TRUSTWORTHY ON
GO
ALTER DATABASE mattercentre_dev SET TRUSTWORTHY ON
GO
Я перезапустил хранимую процедуру и выполнил ее снова, и у меня все еще остается то же самое
сообщение об ошибке.
Я посмотрел этот вопрос в Переполнении стека и предложенных решениях.
похожи на мои.