Pergunta

No SQL Server quando você seleciona para modificar um SP ou UDF ele carrega os objetos consulta alter em uma janela de consulta. São estas consultas acessível em uma tabela do sistema para que eu possa armazenar as declarações alter em algum lugar? Parece que syscomments tem alguns objetos, mas não todos eles.

Graças

Foi útil?

Solução

Não use syscomments , porque syscomments.text é nvarchar(4000) e como resultado irá truncar qualquer coisa que for mais longo.

Use sys.sql_modules porque definition é nvarchar(max), não vai truncar código longo.

usar isso para ver o texto de um determinado procedimento, visão ou função:

SELECT * FROM sys.sql_modules WHERE object_id=object_id('YourProcedure')

Use isto para obter o nome, o tipo e texto de qualquer procedimento, visão ou função:

SELECT DISTINCT
    o.name AS Object_Name,o.type_desc, m.definition
    FROM sys.sql_modules        m 
        INNER JOIN sys.objects  o ON m.object_id=o.object_id
    WHERE m.object_id=object_id('CPT_SP_IRA_ComboBox_IncidentStatus')

Outras dicas

Eu não sou inteiramente certo o que está pedindo, mas você pode ver procedimentos armazenados com a seguinte consulta:

SELECT SO.Type,SO.Name,SC.Text
FROM sysobjects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
AND SO.Type = 'P'
ORDER BY SO.Name

Se você estiver após diferentes tipos de objetos, dê uma olhada sys. sysobjects para os diferentes tipos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top