Есть ли способ получить T-SQL, сгенерированный мастером сценариев SSMS? - PullRequest
1 голос
/ 06 марта 2012

Я использую SQL Server 2008.

Я пытаюсь записать в сценарий все свои хранимые процедуры, и в SSMS это очень легко сделать, щелкнув правой кнопкой мыши по моей базе данных, затем перейдя к Задачам -> Создать сценарии. Я установил свои параметры, и все хорошо.

Я хотел бы получить фактический T-SQL, который выполняет мастер сценариев, чтобы мне не приходилось проходить и выбирать все мои параметры каждый раз, когда я хочу это сделать. Я хочу просто открыть скрипт и нажать Run. Есть ли способ скопировать скрипт, который выполняет сам мастер? Или мне просто нужно делать это каждый раз вручную?

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Вы можете сделать это с помощью довольно простого скрипта powershell, используя SMO Framework. Вам нужно будет установить SQL Server Management Studio, чтобы фреймворк был поднят. Вы должны изучить это дальше, но базовая структура будет:

[Void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")

$srv = new-object "Microsoft.SqlServer.Management.SMO.Server" 'MyServer'

$db = New-Object "Microsoft.SqlServer.Management.SMO.Database"
$db = $srv.Databases['MyDatabase']

$scr = New-Object "Microsoft.SqlServer.Management.Smo.Scripter"
$scr.Server = $srv

$scr.options.filename = 'C:\SomeFolder\MyExports.SQL'

$db.StoredProcedures | where-object {$_.IsSystemObject -eq $False} | %{$scr.Script($_)}

Возможно, вам придется изменить некоторые дополнительные параметры. MSDN имеет довольно подробный обзор структуры здесь.

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

0 голосов
/ 06 марта 2012

Если все, что вам нужно, это «сценарий всех процедур», и это одноразовая вещь, вы можете открыть Детали обозревателя объектов в Management Studio, выделить Хранимые процедуры в Обозревателе объектов, затем Ctrl + A, щелкнуть правой кнопкой мыши, скрипт как> ...

Если вы хотите немного более автоматизированный способ, на рынке есть несколько продуктов сравнения схем, так что вам не нужно заботиться о сценарии, который Management Studio использует для создания сценария для одного объекта. В качестве бонуса будет намного проще синхронизировать другие, более сложные объекты - просто попробуйте сгенерировать сценарий для таблицы самостоятельно, и вы увидите, что это не пикник. Я рассматриваю множество вариантов в этом сообщении в блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...