2010-07-17 55 views

回答

3

不要使用sp_helplogins:使用sys.server_principals

SELECT * FROM sys.server_principals WHERE name = 'bob' 

如果你想sp_helplogins的第二個結果集,那麼你就必須使用C#或東西,因爲加載一個臨時表將只捕獲1號的結果集。

sys.server_principals相對應的是sys.database_principals

FYI:是的db_owner在每個數據庫了。你真的想做什麼...?

編輯,註釋後,類似:

EXEC sp_MSForEachDb ' 
USE ? 
IF DATABASE_PRINCIPAL_ID (''myloginname'') IS NOT NULL 
    EXEC sp_addrolemember ''db_datareader'', ''myloginname'' 
' 
+0

我想查找哪些數據庫屬於特定用戶並在腳本下運行:USE DbName GO EXEC sp_addrolemember db_datareader, myloginname GO Stan 2010-07-17 09:22:54

1

您可以轉移一個存儲過程的結果集到一個新表,例如

create table #results (...) 
insert into #results execute myproc 
select * from #results where ... 

這有點煩瑣,因爲你必須相當精確地對結果集數據類型進行反向工程,以避免造成錯誤。

+1

如果什麼SP 2個返回結果集? – Stan 2010-07-17 08:25:50

+0

那麼,如果人們需要改進SP輸出結果集,人們會做什麼? – Stan 2010-07-17 08:30:06

+1

我剛剛檢查過MSDN,看來所有結果集都加載到一個表中。如果結果集在列定義中存在差異,那恐怕沒有用。 – 2010-07-17 08:31:59