Powershell을 통해 MSSQL DB에 대한 가져 오기 스크립트를 생성하고 싶습니다 (this question 관련). 나는이 일을 시도 :Powershell SMO :이 방법은 데이터 스크립팅을 지원하지 않습니다
#Set-ExecutionPolicy RemoteSigned
$DB_NAME = "<<dbName>>"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
$srv = new-object "Microsoft.SqlServer.Management.SMO.Server" "<<server>>"
$conContext = $srv.ConnectionContext
$conContext.LoginSecure = $false
$conContext.Login = "<<user>>"
$conContext.Password = "<<password>>"
$srv = new-object Microsoft.SqlServer.Management.Smo.Server($conContext)
$srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.View], "IsSystemObject")
$db = $srv.databases[$DB_NAME]
$scripter = new-object "Microsoft.SqlServer.Management.Smo.Scripter" $srv
$scripter.Options.ScriptSchema = $false
$scripter.Options.ScriptData = $true
$scripter.Options.ScriptDrops = $false
$scripter.Script($db)
그러나 실행이 오류가 발생합니다 :
"This method does not support scripting data"
가 나는 또한 출력 파일 옵션을 설정하려고 노력을하지만 아무것도 변경되지 않습니다.
내가 잘못한 것을 말해 줄 수 있습니까?
감사합니다.
안녕과 감사를! 내 문제를 해결할 수있는 것 같습니다. 불행히도 지금이 오류가 발생합니다 : "EnumScript"1 인수 (en) : "서버 'xxx'스크립트에 실패했습니다." ... + $ scripter.EnumScript (@ ($ db.Tables)) + ~~~~~~~~~~~ + CategoryInfo : NotSpecified : (:) [], MethodInvocationException + FullyQualifiedErrorId : FailedOperationException이 예외의 원인을 알고 있습니까? 인사말! –
아니요. EnumScript 자체와는 아무런 관련이 없습니다.이 코드가 도달 가능한 데이터베이스 인스턴스에 대해 작동하는지 확인했기 때문에 알았습니다. –
안녕하세요 - 무엇이 잘못되었는지 fugured : $ scripter.Options.ScriptSchema = $ false를 설정하는 데 사용하고 싶지만 스키마가 없으면이 오류가 발생합니다. 데이터를 스크립팅하는 방법이 있습니까? 그리고 외래 키와 충돌이 발생하지 않도록 테이블을 정렬해야합니다. 현재 테이블은 알파벳순으로 스크립팅되어 있지만 빈 DB로 가져올 때 오류가 발생합니다. –