Sql server 如何比较两个SQL数据库之间的安全设置/访问权限?
执行SP以检查谁当前登录到开发数据库中的SQL工作正常。但在LIVE数据库中执行相同的SP只返回1条可运行记录 这两个数据库驻留在同一个物理SQL server中。使用一些外部免费软件和共享软件比较了2个数据库,没有发现任何差异,尤其是在用户和角色或数据库属性方面 如果您有任何解决方案或建议,将不胜感激 感谢David.Chu.ca提供以下存储过程Sql server 如何比较两个SQL数据库之间的安全设置/访问权限?,sql-server,Sql Server,执行SP以检查谁当前登录到开发数据库中的SQL工作正常。但在LIVE数据库中执行相同的SP只返回1条可运行记录 这两个数据库驻留在同一个物理SQL server中。使用一些外部免费软件和共享软件比较了2个数据库,没有发现任何差异,尤其是在用户和角色或数据库属性方面 如果您有任何解决方案或建议,将不胜感激 感谢David.Chu.ca提供以下存储过程 *====================================================== USE [SAFEQA] GO /*
*======================================================
USE [SAFEQA]
GO
/****** Object: StoredProcedure [dbo].[sp_checkUserID] Script Date: 12/09/2009 09:11:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[sp_checkUserID]
WITH EXECUTE AS OWNER
AS
begin
DECLARE @retTable TABLE (
SPID int not null
, Status varchar (50) not null
, Login varchar (50) not null
, HostName varchar (50) not null
, BlkBy varchar(50) not null
, DBName varchar (50) null
, Command varchar (50) not null
, CPUTime int not null
, DiskIO int not null
, LastBatch varchar (50) not null
, ProgramName varchar (100) null
, SPID2 int not null
, REQUESTID INT)
INSERT INTO @retTable EXEC sp_who2
SELECT Status, Login, HostName, DBName, Command, CPUTime, ProgramName -- *
FROM @retTable
--WHERE Login not like 'sa%' -- if not intereted in sa
ORDER BY Login, HostName
END
*====================================================================
非特权帐户只能从sp_who/sp_who2查看自己的会话。特别是,在数据库作用域模拟上下文下以所有者身份执行的代码将无法看到任何其他会话 请参阅如何将数据库模拟上下文提升到服务器的示例,该示例实际上是关于读取会话DMV的 如果我大胆猜测一下,生产和开发之间的区别在于,在生产中,数据库SAFEQA没有被标记为可信的
有关更多详细信息,请参见。感谢Remus Rusanu的快速回复。实际上,即使使用SA帐户运行上述SP,它也只返回1条记录。当我尝试执行sp_who/sp_who2时,它会返回所有记录。对于如下所示的数据库连接字符串,是否将其标记为可信?CONSTR=Driver={SQLServer本机客户端10.0};服务器=spl-vmsql08;可信连接=是;Database=safeqa谁执行该过程并不重要。请阅读提供的链接。要使数据库可信,系统管理员必须将其标记为可信。不是连接字符串选项。嗨,Remus Rusanu,SP在我将数据库设置为可信任后工作。非常感谢你的建议!