Простой способ программно получить все хранимые процедуры

Попробуйте это:

{{#each data}}
    <p>{{plan_name}}</p>>
    {{#each test}}
        {{activity_name}}
        {{comment}}
    {{/each}}
{{/each}}
11
задан marc_s 9 May 2016 в 20:49
поделиться

9 ответов

Просто считайте вывод ИЗБРАННОГО ИМЕНИ от SYS.PROCEDURES, затем вызовите должностное лицо sp_HelpText SPNAME для каждой хранимой процедуры, Вы получите официальный набор документов с одной строкой текста на строку.

6
ответ дан 3 December 2019 в 02:03
поделиться

Это сообщение в блоге предлагает выполнить это против Вашей базы данных:

select * from sys.procedures
2
ответ дан 3 December 2019 в 02:03
поделиться

Можно использовать SMO для этого. В первую очередь, добавьте ссылки на эти блоки к Вашему проекту:

  • Microsoft. SqlServer. ConnectionInfo
  • Microsoft. SqlServer. Smo
  • Microsoft. SqlServer. SmoEnum

Они расположены в GAC (обзор к папке C:\WINDOWS\assembly).

Используйте следующий код как пример сценариев хранимых процедур:

using System;
using System.Collections.Generic;
using System.Data;
using Microsoft.SqlServer.Management.Smo;

class Program
{
   static void Main(string[] args)
   {
      Server server = new Server(@".\SQLEXPRESS");
      Database db = server.Databases["Northwind"];
      List<SqlSmoObject> list = new List<SqlSmoObject>();
      DataTable dataTable = db.EnumObjects(DatabaseObjectTypes.StoredProcedure);
      foreach (DataRow row in dataTable.Rows)
      {
         string sSchema = (string)row["Schema"];
         if (sSchema == "sys" || sSchema == "INFORMATION_SCHEMA")
            continue;
         StoredProcedure sp = (StoredProcedure)server.GetSmoObject(
            new Urn((string)row["Urn"]));
         if (!sp.IsSystemObject)
            list.Add(sp);
      }
      Scripter scripter = new Scripter();
      scripter.Server = server;
      scripter.Options.IncludeHeaders = true;
      scripter.Options.SchemaQualify = true;
      scripter.Options.ToFileOnly = true;
      scripter.Options.FileName = @"C:\StoredProcedures.sql";
      scripter.Script(list.ToArray());
   }
}

См. также: SQL Server: SMO сценарии основ.

22
ответ дан 3 December 2019 в 02:03
поделиться
;WITH ROUTINES AS (
    -- CANNOT use INFORMATION_SCHEMA.ROUTINES because of 4000 character limit
    SELECT o.type_desc AS ROUTINE_TYPE
            ,o.[name] AS ROUTINE_NAME
            ,m.definition AS ROUTINE_DEFINITION
    FROM sys.sql_modules AS m
    INNER JOIN sys.objects AS o
        ON m.object_id = o.object_id
)
SELECT *
FROM ROUTINES
2
ответ дан 3 December 2019 в 02:03
поделиться

Я думаю, что это - то, что Вы действительно ищете:

select SPECIFIC_NAME,ROUTINE_DEFINITION from information_schema.routines

Существует тонна других полезных столбцов там также...

0
ответ дан 3 December 2019 в 02:03
поделиться

Можно написать код C# для выполнения следующего запроса на базе данных.

Select * from sys.procedures
0
ответ дан 3 December 2019 в 02:03
поделиться

Можно использовать:

DataTable  dtProcs = sqlConn.GetSchema("Procedures", new string[] { databaseName });
DataTable  dtProcParams = sqlConn.GetSchema("ProcedureParameters", new string[] { databaseName });

Можно также получить все виды другой информации о схеме как таблицы, индексы и т.д. при необходимости в них.

Можно получить информацию о GetSchema () здесь и информацию о Наборах Схемы SQL Server здесь

Править: Извините, это не помогает с фактическими сценариями информации, но я предполагаю, что это - полезная информация, чтобы иметь.

2
ответ дан 3 December 2019 в 02:03
поделиться

Проблемы с языком Python - вещи, которые терпят неудачу очень непонятными способами

  • Использование изменяемых аргументов по умолчанию.

  • Начальные нули означают восьмеричное число. 09 - очень непонятная синтаксическая ошибка в Python 2.x

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

Проблемы с дизайном Python

  • Тратить время на самоанализ (например, попытки автоматически определить типы или идентичность суперкласса или что-то другое). Во-первых, это очевидно из чтения первоисточника. Что еще более важно, время, потраченное на странный самоанализ Python, обычно указывает на фундаментальную неспособность понять полиморфизм. 80% вопросов самоанализа Python по SO - это неспособность получить полиморфизм.

  • Тратить время на код для гольфа. Тот факт, что ваша ментальная модель вашего приложения состоит из четырех ключевых слов («делаю», «что», «я», «имею в виду»), не означает, что вы должны создать для этого гипер-сложную интроспективную структуру, управляемую декоратором. Python позволяет поднять СУХОЙ до уровня глупости. Остальные вопросы самоанализа Python по SO пытаются свести сложные проблемы к кодированию упражнений в гольф.

  • Monkeypatching.

  • Неспособность фактически прочитать стандартную библиотеку и изобретение колеса.

  • Конфликт интерактивного типа как- вы идете на Python с подходящей программой. Когда вы печатаете в интерактивном режиме, вы можете потерять контроль над переменной и использовать globals () . Кроме того, пока вы печатаете, почти все глобально. В правильных программах вы никогда не потеряете переменную,

0
ответ дан 3 December 2019 в 02:03
поделиться

Если вы откроете банку отражателя в sqlmetal.exe (автономная часть LINQ-to-SQL, которая генерирует код из базы данных), вы увидите, какие операторы SQL он использует для получения списка всех сохраненных процедуры и функции. SQL подобен, но не идентичен в этом ответе .

0
ответ дан 3 December 2019 в 02:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: