Поиск хранимой процедуры в среде SQL Server 2008 Management Studio

#sql #sql-server-2008

#sql #sql-server-2008

Вопрос:

Я новичок в Windows servers, и у меня есть, надеюсь, быстрый вопрос. Я ищу хранимую процедуру в SQL Server 2008 Management Studio. Я запустил этот запрос,

 SELECT name, type
FROM dbo.sysobjects
WHERE (type = 'P')
 

Который возвращает список хранимых процедур. Тот, кого я ищу, есть в списке. Теперь мне нужно знать, как и где это найти. Я просматриваю структуру с левой стороны и вижу несколько папок «Хранимых процедур», но я не вижу элемента, который я ищу, ни в одном из списков. Есть ли SQL, чтобы показать мне хранимую процедуру, или мне нужно открыть ее в SQL Server Management Studio? Может ли это также быть проблемой с разрешениями у пользователя, с которым я подключаюсь?

Спасибо за любую помощь в этом.

Комментарии:

1. Под базами данных у меня есть только системные базы данных и моментальные снимки базы данных, я не вижу свою фактическую базу данных.. Именно там, где я думал, будет хранимая процедура. Спасибо.

Ответ №1:

Вы всегда можете просмотреть содержимое хранимой процедуры с помощью sp_helptext:

 sp_helptext 'mystoredprocname'
 

Вы также можете найти хранимые процедуры с помощью

1) Выбор вашей базы данных и ее расширение

2) Расширение узла программируемости

3) Расширение узла хранимых процедур

4) Поиск по списку хранимых процедур до тех пор, пока вы не найдете ту, которую ищете

Комментарии:

1. Потрясающе, это так помогло. Теперь я могу видеть процедуру, каков наилучший способ обновить эти хранимые процедуры. Нужно ли мне иметь возможность видеть их под узлом программируемости, потому что я их там не вижу, но я могу запустить sp_helptext и другой запрос, чтобы увидеть его.

2. Самый простой способ — перейти к хранимой процедуре в левой навигации, щелкнуть по ней правой кнопкой мыши и выбрать Изменить. В окне запроса будет сгенерирован сценарий изменения процедуры, который затем можно изменить. Когда вы закончите с вашими изменениями, вы можете нажать кнопку Выполнить, чтобы изменить содержимое хранимой процедуры в базе данных.

Ответ №2:

Это звучит как проблема с разрешениями. Возвращает ли это что-нибудь для вас?

 use YourDatabaseName;
GO

sp_helptext 'YourSchemaName.YourProcedureName';
 

Комментарии:

1. Да, sp_helptext возвращает мне информацию, он возвращает процедуру. Однако я не могу найти ее в процедурах хранения, и мне нужно ее отредактировать. Любая помощь приветствуется.

2. @SkylerCain Измените «ПРОЦЕДУРУ СОЗДАНИЯ», которая была возвращена, на «ПРОЦЕДУРУ ИЗМЕНЕНИЯ» и внесите свои изменения.

3. Ты мой герой дня, Джо. Спасибо.

Ответ №3:

Я считаю, что запрос для этого:

 select * 
from yourDB.information_schema.routines 
where routine_type = 'PROCEDURE'
 

Однако, если вы не видите свою базу данных, более вероятно, что у пользователя, которого вы используете, нет доступа.

Комментарии:

1. Если вы публикуете образцы кода, XML или данных, ПОЖАЛУЙСТА , выделите эти строки в текстовом редакторе и нажмите на кнопку «образцы кода» ( { } ) на панели инструментов редактора, чтобы красиво оформить и выделить синтаксис!

Ответ №4:

Я использую это очень удобное расширение, которое позволяет вам искать и быстро находить SQL в SQL Server Management Studio. Вы можете быстро искать текст SQL в хранимых процедурах, функциях, представлениях и т. Д. Что касается моего написания, это бесплатный инструмент, посмотрите и узнайте о нем больше: http://www.red-gate.com/products/sql-development/sql-search /

Ответ №5:

Мы часто следуем синтаксису:

 create procedure procedureName
.........
 

Если вы сделали это, ваша хранимая процедура будет создана в соответствии со схемой dbo вашей базы данных, в которой вы выполнили сценарий создания процедуры.

Теперь на всякий случай, если вы хотите переместить свой SP в нужную схему, вам нужно изменить свой SP

 alter procedure [schemaName].[USP_SP]
 

Ответ №6:

У меня есть сценарий для этого. вот оно:

 --=====================================================================================
-- looking at all databases to find a stored procedure named @spName
-- marcelo miorelli
-- 1-april-2014
--=====================================================================================
DECLARE @SQL NVARCHAR(max)
    ,@spName VARCHAR(100) = 'usp_sel_CAEval4_comments' -- THE PROCEDURE THAT I AM LOOKING FOR

SELECT @SQL = STUFF((
            SELECT CHAR(10)   ' UNION ALL '             CHAR(10)    
' SELECT '   quotename(NAME, '''')   ' AS DB_NAME '     CHAR(10)   
'         , SCHEMA_NAME(s.schema_id)  AS THE_SCHEMA '   CHAR(10)   
'         , s.name  COLLATE Latin1_General_CI_AS AS THE_NAME '   CHAR(10)   
'  FROM '   quotename(NAME)   '.sys.procedures s '   CHAR(10)     
' WHERE s.name = @spName 
  AND s.[type] = ''P'''
            FROM sys.databases
            ORDER BY NAME
            FOR XML PATH('')
                ,TYPE
            ).value('.', 'nvarchar(max)'), 1, 11, '')

--PRINT @SQL

EXECUTE sp_executeSQL @SQL
    ,N'@spName varchar(100)'
    ,@spName