스크립팅
SMO의 스크립팅은 Scripter 개체와 자식 개체, 또는 개별 개체의 Script 메서드로 제어합니다. Scripter 개체는 MicrosoftSQL Server 인스턴스에서 개체에 대한 종속성 관계의 매핑을 제어합니다.
Scripter 개체와 자식 개체를 사용한 고급 스크립팅은 다음 3단계 프로세스를 거칩니다.
검색
목록 생성
스크립트 생성
검색 단계에서는 DependencyWalker 개체를 사용합니다. 개체의 URN 목록을 제공하면 DependencyWalker 개체의 DiscoverDependencies 메서드가 URN 목록의 개체에 대해 DependencyTree 개체를 반환합니다. 부울 fParents 매개 변수를 사용하여 지정된 개체의 부모 또는 자식을 검색할지 여부를 선택할 수 있습니다. 이 단계에서 종속성 트리를 수정할 수 있습니다.
목록 생성 단계에서는 트리가 전달되고 결과 목록이 반환됩니다. 이 개체 목록은 스크립팅 순서로 나열되며 조작할 수 있습니다.
목록 생성 단계에서는 WalkDependencies 메서드를 사용하여 DependencyTree를 반환합니다. 이 단계에서 DependencyTree를 수정할 수 있습니다.
마지막 세 번째 단계에서는 지정된 목록 및 스크립팅 옵션으로 스크립트가 생성됩니다. 결과가 StringCollection 시스템 개체로 반환됩니다. 이 단계에서는 DependencyTree 개체의 항목 컬렉션과 NumberOfSiblings 및 FirstChild와 같은 속성으로부터 종속 개체 이름이 추출됩니다.
예
제공된 코드 예제를 사용하려면 응용 프로그램을 만들 프로그래밍 환경, 프로그래밍 템플릿 및 프로그래밍 언어를 선택해야 합니다. 자세한 내용은 방법: Visual Studio .NET에서 Visual Basic SMO 프로젝트 만들기 또는 방법: Visual Studio .NET에서 Visual C# SMO 프로젝트 만들기를 참조하십시오.
이 코드 예제에는 System.Collections.Specialized 네임스페이스에 대한 Imports 문이 필요합니다. 응용 프로그램의 선언 앞에 다른 Imports 문과 함께 삽입하십시오.
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.Collections.Specialized
Visual Basic에서 데이터베이스의 종속성 스크립팅
이 코드 예제는 종속성을 검색하고 목록 전체를 반복하여 결과를 표시하는 방법을 보여 줍니다.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Define a Scripter object and set the required scripting options.
Dim scrp As Scripter
scrp = New Scripter(srv)
scrp.Options.ScriptDrops = False
scrp.Options.WithDependencies = True
'Iterate through the tables in database and script each one. Display the script.
'Note that the StringCollection type needs the System.Collections.Specialized namespace to be included.
Dim tb As Table
Dim smoObjects(1) As Urn
For Each tb In db.Tables
smoObjects = New Urn(0) {}
smoObjects(0) = tb.Urn
If tb.IsSystemObject = False Then
Dim sc As StringCollection
sc = scrp.Script(smoObjects)
Dim st As String
For Each st In sc
Console.WriteLine(st)
Next
End If
Next
Visual C#에서 데이터베이스의 종속성 스크립팅
이 코드 예제는 종속성을 검색하고 목록 전체를 반복하여 결과를 표시하는 방법을 보여 줍니다.
//Connect to the local, default instance of SQL Server.
{
Server srv = default(Server);
srv = new Server();
//Reference the AdventureWorks database.
Database db = default(Database);
db = srv.Databases("AdventureWorks");
//Define a Scripter object and set the required scripting options.
Scripter scrp = default(Scripter);
scrp = new Scripter(srv);
scrp.Options.ScriptDrops = false;
scrp.Options.WithDependencies = true;
//Iterate through the tables in database and script each one. Display the script.
//Note that the StringCollection type needs the System.Collections.Specialized namespace to be included.
Table tb = default(Table);
Urn[] smoObjects = new Urn[2];
foreach ( tb in db.Tables) {
smoObjects = new Urn[1];
smoObjects(0) = tb.Urn;
if (tb.IsSystemObject == false) {
StringCollection sc = default(StringCollection);
sc = scrp.Script(smoObjects);
string st = null;
foreach ( st in sc) {
Console.WriteLine(st);
}
}
}
}