내 데이터베이스에 저장 프로 시저를 만드는 SQL 스크립트를 생성하는 Powershell 스크립트를 작성하려고합니다. 여기에 내가 무엇을 가지고 :이 오류와 함께 실패SMO 스크립터로 스크립트를 생성 할 때 프로 시저를 스크립팅하는 방법은 무엇입니까?
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')| out-null
Function to-array ($c)
{
foreach($item in $c)
{
$result += @($item)
}
$result
}
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') "LOCALHOST"
$scrp = new-object ('Microsoft.SqlServer.Management.Smo.Scripter') ($s)
$dbs = $s.Databases
$fa = $dbs["FinancialAid"]
$scrp.Options.ScriptData = $True
$scrp.Options.AllowSystemObjects = $False
$scrp.Options.FileName = 'StoredProcedures.sql'
$scrp.Options.ToFileOnly = $True
# Finally the stored procedures
$sparray = to-array($fa.StoredProcedures)
$scrp.EnumScript($sparray)
:
Exception calling "EnumScript" with "1" argument(s): "Script failed for Server 'LOCALHOST'. "
At H:\Visual Studio 2012\FinancialAidApplication\Financial Aid Application\FinancialAidApplication\main\src\FinancialAidApp
\SQL-Scripts\sp.ps1:28 char:17
+ $scrp.EnumScript <<<< ($sparray)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
출력 파일을 보면, 나는 그것이 대단한 시작 부분에서 내 저장 프로 시저를 않는 것을 볼 수 있지만, 다음에는 많은 시스템 절차가 있습니다. 마지막은
sys.sp_fulltext_table
입니다.
내가 이미 $scrp.Options.AllowSystemObjects = $False
을 지정했기 때문에이 시스템 절차가 포함되는 이유를 알지 못합니다. 나는 시스템 절차와 오류 메시지를 없애고 싶습니다.
한 가지 : 나는 $ scrp.Script'가 스크립트 "데이터를"거부 $ scrp.EnumScript''때문에'사용했다 (그리고 나는 그것이 시체 자료를 고려한다고 생각한다.) –
@ SamuelEdwinWard, 제 견본을 수정하여 작동하도록해야한다는 말입니까? 그렇다면 나는 혼란 스럽다. 서버 및 데이터베이스 이름을 위의 코드로 변경하면 문제없이 작업 한 후 답변으로 추가했습니다. – Bruce
맞습니다. 당신이해야 할 일이 있어야합니다. 나는'ScriptData'를 true로 설정 했으므로 안됩니다. 내가 이전에 고심하고있는 동안 만든 실수 였을 것입니다. –