April 16, 2015 at 10:05 am
We have a legacy database that have hundreds of stored procedures.
The previous programmar uses a string like servername.databasename.dbo.tablename in the stored procedures.
We now have migrated the database to a new server. The old server is either needed to be replaced by the new server name, or remove it.
I don't know why he used servername as part of the fully qualified name, we don't use linked servers. So I think better removing the servername in all the stored procedures.
I know I can do a generate script, and replace the text and then use alter procedure to recreate all the stored procedures. But since hundreds of them, is there a programmatically way to replace them?
Thanks
April 16, 2015 at 10:32 am
some pretty good discussion here:
April 16, 2015 at 10:48 am
You can get the schema, name and DDL for the stored procs from INFORMATION_SCHEMA.ROUTINES. Something like this...
DECLARE @buildSprocsScript nvarchar(max) ='';
SELECT @buildSprocsScript += 'DROP PROC '+specific_schema+'.'+specific_name+char(13)+'GO'+char(13)
+REPLACE(ROUTINE_DEFINITION,'<what you want to replace>','<replace with>')+' GO'+char(13)
FROM INFORMATION_SCHEMA.ROUTINES
SELECT @buildSprocsScript;
EXEC(@buildSprocsScript)
This is not a complete solution and would need to be updated to suit your needs but should give you an idea of how to move forward. It goes without saying: test, test, test.... I would try this out on a dummy box a few times to look for any gotcha's.
-- Itzik Ben-Gan 2001
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy