Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
Wrangler
Starting Member
35 Posts |
Posted - 2011-04-21 : 14:48:11
|
I need to clean up 2 databases within one Stored Procedure if possible. The problem is changing from one database to another doesn't seem to work inside the SP. The database never changes from DB_A. Is this possible in a SP? If so, how? ThanksUSE DB_AGOALTER PROCEDURE dbo.Delete_Login_User @userID as VARCHAR(10)ASBEGINUSE DB_BIF EXISTS (SELECT * FROM sys.database_principals WHERE name = @userID)DROP USER @userIDUSE DB_CIF EXISTS (SELECT * FROM sys.database_principals WHERE name = @userID)DROP USER @userIDIF EXISTS (SELECT * FROM sys.server_principals WHERE name = @userID)DROP LOGIN @userIDEND |
|
tkizer
Almighty SQL Goddess
38200 Posts |
Posted - 2011-04-21 : 16:21:41
|
You can use sp_executesql so that the DROP statements run under the right context.Try this:ALTER PROCEDURE dbo.Delete_Login_User @userID as VARCHAR(10)ASBEGINDECLARE @sql nvarchar(100)SET @sql = 'DROP USER ' + @userIDIF EXISTS (SELECT * FROM DB_B.sys.database_principals WHERE name = @userID) EXEC DB_B..sp_executesql @sqlIF EXISTS (SELECT * FROM DB_C.sys.database_principals WHERE name = @userID) EXEC DB_C..sp_executesql @sqlSET @sql = 'DROP LOGIN ' + @userIDIF EXISTS (SELECT * FROM master.sys.server_principals WHERE name = @userID) EXEC master..sp_executesql @sqlEND Tara KizerMicrosoft MVP for Windows Server System - SQL Serverhttp://weblogs.sqlteam.com/tarad/Subscribe to my blog |
 |
|
Wrangler
Starting Member
35 Posts |
Posted - 2011-04-21 : 16:38:27
|
Tara, that worked perfect. Thank you! |
 |
|
tkizer
Almighty SQL Goddess
38200 Posts |
|
|
|
|