2015-11-17 3 views
0

Я знаю, что большинство людей будут давать ответы, как, щелкните правой кнопкой мыши имя базы данных, выберите задачу, создавать сценарии и т.д. Большинство людей дают подробный ответ в Интернете включают StackOverflowподход импортировать хранимые процедуры/экспорт SQL Server

I уже Знаю, что давно.

Мой вопрос - любые предложения по написанию сценариев для экспорта/импорта хранимых процедур. Если мне нужно делать только 5 или 10, это не большая проблема. Мне просто нужно выбрать правильные. Если есть много таких, как 50 или более, это боль и неизбежные ошибки. Иногда, чтобы облегчить жизнь, мы хотим экспортировать/импортировать с помощью суффикса, такого как *test.sql.

Любое предложение с использованием SQL-скриптов, команд C# или dos для этого?

Благодаря

ответ

0

Почему ты меченый этот вопрос с C#, когда вы просите ответы в SQL или DOS сценария?

Этот сценарий CMD капли все хранимые процедуры, имена которых начинаются с «УСП»:

FOR /F "tokens=* USEBACKQ" %%F IN (`sqlcmd -S %SERVER% -d %DATABASE% -Q "select name from sys.objects where type = 'P'" `) DO (echo %%F | findstr "^usp" >nul 2>&1 && sqlcmd -S %SERVER% -d %DATABASE% -Q "drop procedure %%F") 

Это все на одной линии и% SERVER% и% DATABASE% идентификации сервера и базы данных.

Этот скрипт загружает все хранимые процедуры из текущего каталога, имена которых соответствуют «usp * .sql». Для вызова методов типа данных XML вам необходимо установить QUOTED_IDENTIFIER.

for %%f in (usp*.sql) do sqlcmd -S %SERVER% -d %DATABASE% -I -i %%f 
+0

Спасибо. Какой параметр предназначен для экспорта? Я просто сделал sqlcmd помощь, и я не мог найти экспорт или скрипт. Одна из причин написания пакета - экспортировать кучу файлов. Вы выполнили процедуру капли. Это по-прежнему полезно, хотя я бы не хотел писать пакетную программу, чтобы удалить пакет SP. Это слишком большой риск. О, причина, по которой я отмечаю C#, мне просто интересно, есть ли API для этого. Если пакет может это сделать, он служит цели – user12345

+0

«Как экспортировать хранимые процедуры в текстовые файлы» (http://www.sqlservercentral.com/Forums/Topic205892-5-1.aspx) показывает несколько методов. Вероятно, вы хотите открыть базу данных в SSMS, щелкните правой кнопкой мыши имя базы данных и выберите «Задачи -> Сгенерировать скрипты»; затем следуйте за мастером. –

+0

Задачи -> Сгенерировать скрипты - это шаг, который я уже знаю. Однажды мне пришлось экспортировать 50+ sp. Это была боль, и в итоге я экспортировал тот, который я не должен был экспортировать. Я тоже пропущу пару. Когда мне нужно экспортировать 50+ sp в 500+ sp, вероятность щелчка на неправильном SP очень вероятна. Я снова собираюсь сделать то же самое. На этот раз я должен подготовить сценарии для кого-то другого. Было бы неплохо, если бы было проще. Я попробую BCP_utility, http://www.kodyaz.com/t-sql/bcp-and-sp_helptext-to-script-store-procedures-into-seperate-files.aspx, надеюсь, это поможет – user12345

0

Поскольку вы отметили также C#. С .NET вы можете сделать это, используя Microsoft.SqlServer.Smo. Существует StoredProcedure class. Этот подход дает вам действительно большой контроль над задачей, которую вы хотите достичь. Пример использования вы можете найти here, также используя PowerShell.

Вот отрывок я соединил, который может помочь вам (использует Microsoft.SqlServer.Smo, Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Management.Sdk.Sfc DLL):

var serverConnection = new ServerConnection(new SqlConnection(ConnectionString)); 
var server = new Server(serverConnection); 
foreach (StoredProcedure sp in server.Databases["YourDB"].StoredProcedures) 
{ 
    if (sp.Name.Contains("yourSubstring")) 
    { 
     System.IO.File.WriteAllText(sp.TextHeader + Environment.NewLine + sp.TextBody); 
    } 
} 
Смежные вопросы