系統規格
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從表列表中的存儲過程。該存儲過程看起來 像這樣...服務器主體「XYuser」不能訪問數據庫「YDB」當前安全環境下
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.
google搜索錯誤消息後,我進行了如下修正...
- 刪除用戶ReadUser從 BHAVMSQL02 - >數據庫 - > Mattercentre_dev - >安全 - >用戶
從BHAVMSQL02設置ReadUser - > 安全性 - 具有以下 設置>登錄...
一般
登錄名 - readUser
密碼 - XXXXXXXXXXXX
確認 - XXXXXXXXXXXX
默認數據庫 - master
默認lg - 英國英語
其他的東西 - 取消設置個服務器角色 僅公共設置
用戶映射 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
我重新運行存儲過程並再次執行它,我仍然有同樣的 錯誤消息。
我已經在堆棧溢出看這個問題,並建議的解決方案 類似於我自己。