2013-01-29 4 views
4

Мне нужно часто редактировать хранимые процедуры Microsoft SQL, и я нашел традиционный способ (Open MSSMS -> расширить дерево баз данных, развернуть дерево хранимых процедур и определить фильтр по имени SP) очень длинный. Я ищу способ (командной строки), такой как «sp_helptext», но способ, который фактически откроет для меня хранимую процедуру для редактирования.Быстрый способ изменения хранимой процедуры MS SQL

Спасибо.

+4

Используйте 'EXEC sp_HelpText 'Имя процедуры' .Создайте результат и вставьте его в ssms и используйте' Alter Procedure' вместо 'create', чтобы изменить sp .But вместо этого лучше всего использовать' filter 'настроек в папке хранимой процедуры. – praveen

+1

скопируйте его и сохраните в файл, сохраните его на рабочем столе: o – WKordos

+1

Почему вы редактируете хранимые процедуры напрямую? Вы должны работать со сценариями SQL в исходном элементе управления, поэтому вы открываете скрипт, редактируете его и выполняете его для изменения процедуры. Существует много способов сделать это в зависимости от ваших предпочтительных инструментов и системы управления версиями, но прямое редактирование объектов базы данных - очень плохая идея. – Pondlife

ответ

1

Заканчивать Редгейт SQL Prompt. При этом вы можете правой кнопкой мыши имя ХП и нажмите кнопку «ALTER»

RED GATE SQL PROMPT

+0

Я обнаружил, что иногда RED GATE показывает мне контент из его кеша и его не самую последнюю версию ... Может быть, потому, что я использую старую версию. – Omtechguy

+0

Есть предложения по обновлению, которые я обычно нажимаю каждый раз, а потом – Diginari

+0

Если вы попробуете экспериментальные функции (вы найдете их в меню SQL Prompt), вы можете включить опцию «Автоматическое обновление». –

2

не Там нет прямых команд, как

MODIFY dbname.schemaname.spname 

У вас есть 3 варианта, которые используют TSQL, помимо традиционного графического интерфейса, как с помощью SSMS

EXEC sp_helptext dbname.schemaname.spname'; 

SELECT OBJECT_DEFINITION (OBJECT_ID(dbname.schemaname.spname')); 

SELECT definition 
FROM sys.sql_modules 
WHERE object_id = (OBJECT_ID(dbname.schemaname.spname')); 

К сожалению, все эти варианты будут приводить к потере форматирование.

Вы пытаетесь использовать здесь две технологии.

  1. SQL и SQLSyntax
  2. SQL, инструмент управления

Это, вероятно, не представляется возможным использовать TSQL манипулировать Management Studio, которая является то, что вы, кажется, хотят. Я боюсь, вырезать и вставить ваш единственный вариант.

Радж

3

Существует способ: я разрабатываю SSMSBoost - надстройка для SSMS. Он позволяет открывать сценарии объектов непосредственно из редактора SQL.

  1. В SQL Editor Поместите курсор на имя хранимой процедуры

  2. Hit F2 и процедура будет по сценарию в новом окне.

Нажатие Ctrl-F2 найдет объект в дереве проводника объектов, чтобы вы могли использовать другие команды SSMS, щелкнув правой кнопкой мыши его.

Надеюсь, это поможет.

+0

Я предпочитаю утилиты с открытым исходным кодом. вы знаете? – Omtechguy

+1

Есть несколько надстроек с открытым кодом, но они не выполняют то, что задается здесь в этом вопросе. Моя надстройка не является открытым исходным кодом, но может быть использована в настоящее время бесплатно –

0

Вот код, который вы можете использовать для запуска процедуры sp_helptext, которая вернет вам таблицу строк, которую вы можете записать в файл, который создаст хранимую процедуру. Затем вы можете передать имя файла в командную строку SSMS, чтобы открыть этот файл непосредственно при открытии SQL Server Manager.

ех) ВСС tempFile.sql

using (SqlConnection con = new SqlConnection ("Connection String Here")) 
{ 
    using (SqlCommand cmd = con.CreateCommand()) 
    { 
     cmd.CommandText = "sp_helptext @procName"; 
     cmd.CommandType = CommandType.Text; 

     cmd.Parameters.AddWithValue("procName", "Name Of Stored Proc Here"); 

     con.Open(); 

     using (SqlDataReader rdr = cmd.ExecuteReader()) 
     { 
      while (rdr.Read()) 
      { 
       /* 
       You will get the CREATE PROC text here 
       Do what you need to with it. For example, write 
       to a .sql file 
       */ 
      } 
     } 
    } 
} 
0

Никогда не используйте SSMS (или SSMS надстроек) для сценария, сохраненных проки для изменения. Сохраненные procs всегда должны открываться непосредственно из вашего исходного элемента управления. Если у вас нет этих объектов в исходном элементе управления, вам нужно это сделать. SP - это код, их нужно обрабатывать так же, как и другой код.Неверно редактировать скрипты sps из-за пределов системы управления версиями.

0

Использовать этот

SELECT ROUTINE_DEFINITION from INFORMATION_SCHEMA.ROUTINES 
where ROUTINE_NAME = 'YourStoredProcedureName' 

Надеется, что это помогает.

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