Как включить схему в сценарии хранимых процедур SQL Server? - PullRequest
1 голос
/ 10 декабря 2011

Я пытаюсь заставить SMO схему квалифицировать имена объектов для хранимых процедур, UDF и представлений, но по какой-то причине это не работает. У меня есть хранимая процедура без схемы, и мне нужно предварительно добавить к ней схему по умолчанию:

У меня есть этот код:

var procs = from sp in _smoDB.StoredProcedures.OfType<StoredProcedure>()
              where !sp.IsSystemObject && !sp.IsEncrypted
              select sp;

foreach ( StoredProcedure sproc in procs ) {

    var script = sproc.Script( ScriptOption.SchemaQualify );
    var scriptText = script[3];

}

Когда я получаю доступ к тексту сценария, он не помещает имя схемы (dbo) перед сохраненной процедурой. Кто-нибудь может объяснить это?

1 Ответ

4 голосов
/ 10 декабря 2011

Я не работал со SMO в 2008 / R2 (только 2005), поэтому я могу что-то упустить, но вот что я попробую:

var procs = from sp in _smoDB.StoredProcedures.OfType<StoredProcedure>()
            where !sp.IsSystemObject && !sp.IsEncrypted               
            select sp; 

var options = new ScriptOptions();         // reusable ScriptOptions object
options.SchemaQualify = true;
options.EnforceScriptingOptions = true;    // surprise!
foreach ( StoredProcedure sproc in procs ) 
{
    var script = sproc.Script( options );     
    var scriptText = script[3];  
}

(я не проверял это)

Я предполагаю, что хранимая процедура была изначально создана без указания схемы, и это то, что в сценарии. Чтобы получить сценарий с квалификацией схемы, вам нужно применить параметры сценария, и все комментарии и форматирование будут потеряны (вот статья MSDN ).

Я полагаю, что это применимо и к представлениям и функциям.

...