2013-05-28 3 views
0

Я хочу переименовать таблицы и представления, которые используются в хранимых процедурах. Есть ли способ найти и заменить имена таблиц в хранимых процедурах, возможно, есть инструмент для ms sql server (я использую ms sql server 2012).Найти и заменить содержимое хранимых процедур ms sql server

ответ

2

Вы можете использовать DBvisualizer .. он в значительной степени работает со всеми базами данных и с ms sql тоже, вы можете сделать все, что вы упомянули, используя это.

+0

thx для консультации. Я наконец нашел этот инструмент http://www.red-gate.com/products/sql-development/sql-search/ – Mandragorasprout

2

SQL Server не может позволить вам непосредственно ОБНОВЛЕНИЕ определения объектов (представлений и хранимых Proceduress в вашем случае), присутствующих в системе каталогов, даже после установки опции «Разрешить обновления» до 1.

Следующий код сгенерируйте требуемый скрипт ALTER и вы можете запускать их вручную после просмотра определений ([ModifiedDefinition]), или вы можете прокручивать каждое значение [ModifiedDefinition] и запускать его с помощью sp_executesql.

SELECT 
    b.Name                  AS [ObjectName], 
    CASE WHEN b.type ='p' THEN 'Stored Procedure' 
     WHEN b.type ='v' THEN 'View' 
     ELSE b.TYPE 
    END                   AS [ObjectType] 
    ,a.definition                AS [Definition] 
    ,Replace ((REPLACE(definition,'OLD Value','New Value')),'Create','ALTER') AS [ModifiedDefinition] 
FROM sys.sql_modules a 
JOIN 
( select type, name,object_id 
    from sys.objects 
    where type in (
      'p' -- procedures 
      ,'v'--views 
        ) 
    and is_ms_shipped = 0 
)b 
ON a.object_id=b.object_id 

И как всегда, будьте осторожны с производственными данными и делайте резервные копии перед выполнением массовых изменений в определениях объектов!

Смежные вопросы