假设使用sp_helplognis,想要使用过滤器UserName=db_owner
查看结果集。除了将原始结果集输出到临时表,然后在该临时表上查询之外,还有什么方法吗?感谢。
答案 0 :(得分:3)
请勿使用sp_helplogins:使用sys.server_principals
SELECT * FROM sys.server_principals WHERE name = 'bob'
如果你想要sp_helplogins的第二个结果集,那么你必须使用c#或者其他东西,因为加载临时表只会捕获第一个结果集。
sys.server_principals的等价物也是sys.database_principals
仅供参考:db_owner已经在每个数据库中。你真的想做什么......?
在评论后编辑,例如:
EXEC sp_MSForEachDb '
USE ?
IF DATABASE_PRINCIPAL_ID (''myloginname'') IS NOT NULL
EXEC sp_addrolemember ''db_datareader'', ''myloginname''
'
答案 1 :(得分:1)
您可以将sproc的结果集转移到新表中,例如
create table #results (...)
insert into #results execute myproc
select * from #results where ...
这有点繁琐,因为您必须非常精确地对结果集数据类型进行反向工程,以避免出现错误。