Hej, Det som dyker upp i min hjärna är att du gör en fråga mot systemtabellerna och tar därigenom fram en temporärtabell med namn på alla de sp som du vill ändra ägare på. Sen rasslar du igenom den med en CURSOR och skapar dynamiskt strängar innehållande den kod som ska exekveras för varje sp och sen kör du en exec på den.Byta ägare på SP:s
Jag har en databas och på den vill jag byta "owner". Jag använde change_dbowner men den byta inte ägare på mina Stored Procedures.
Visst kan jag gå igenom alla SP och köra sp_changeobjectowner men det är ganska många. Kan jag inte på något sätt ändra owner på alla SP på en gång?
//PutteSv: Byta ägare på SP:s
Ex:
set @newowner = 'pelle'
FETCH NEXT FROM #Curs into @objname
WHILE @@FETCH_STATUS = 0 BEGIN
@SQLSTR = 'sp_changeobjectowner ' + @objname +','+ @newowner
exec (@SQLSTR)
FETCH NEXT FROM #Curs into @objname
END
På svenska för den som inte är så bevandrad i TSQL blir detta:
- Sätt ägarnamnet till Pelle
- Hämta första från den skapade cursorn och lägg i @objname
- Medan det gick ok att hämta ny rad:
- Konkatenera ihop en sträng med kos som ska exekveras
t ex "sp_changeobjectowner sp_GetKund, Pelle"
- Exekvera koden
- Försök hämta nästa rad ur cursorn
Kanske inte en så smidig lösning om du behöver gör detta ofta men det hoppas jag verkligen inte.
Mer om cursor finns i Books Online
//Mikael Sand