Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Skripting in SMO wird durch das Scripter Objekt und seine untergeordneten Objekte oder die Script Methode für einzelne Objekte gesteuert. Das Scripter Objekt steuert die Zuordnung von Abhängigkeitsbeziehungen für Objekte in einer Instanz von MicrosoftSQL Server.
Das erweiterte Skripting mithilfe des Scripter Objekts und seiner untergeordneten Objekte ist ein dreistufiger Prozess:
Ermittlung
Listengenerierung
Skriptgenerierung
In der Ermittlungsphase wird das DependencyWalker Objekt verwendet. Bei einer URN-Liste von Objekten gibt die DiscoverDependencies Methode des DependencyWalker Objekts ein DependencyTree Objekt für die Objekte in der URN-Liste zurück. Der boolesche fParents-Parameter wird verwendet, um auszuwählen, ob die übergeordneten Elemente oder die untergeordneten Elemente des angegebenen Objekts ermittelt werden sollen. Die Abhängigkeitsstruktur kann zu diesem Zeitpunkt geändert werden.
In der Phase der Listengenerierung wird die Struktur übergeben, und die resultierende Liste wird zurückgegeben. Diese Objektliste befindet sich in der Skriptreihenfolge und kann bearbeitet werden.
Die Phasen der Listengenerierung verwenden die WalkDependencies Methode, um ein DependencyTree. Dies DependencyTree kann zu diesem Zeitpunkt geändert werden.
In der dritten und letzten Phase wird ein Skript mit den angegebenen Listen- und Skriptoptionen generiert. Das Ergebnis wird als StringCollection Systemobjekt zurückgegeben. In dieser Phase werden die abhängigen Objektnamen dann aus der Items-Auflistung des Objekts und eigenschaften DependencyTree wie NumberOfSiblings und FirstChild.
Beispiel
Um ein codebeispiel zu verwenden, das bereitgestellt wird, müssen Sie die Programmierumgebung, die Programmiervorlage und die Programmiersprache auswählen, in der Ihre Anwendung erstellt werden soll. Weitere Informationen finden Sie unter Erstellen eines Visual Basic-SMO-Projekts in Visual Studio .NET oder Erstellen eines Visual C#-SMO-Projekts in Visual Studio .NET.
In diesem Codebeispiel ist eine Imports Anweisung für den System.Collections.Specialized-Namespace erforderlich. Fügen Sie dies mit den anderen Imports-Anweisungen vor allen Deklarationen in der Anwendung ein.
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.Collections.Specialized
Skripting out the Dependencies for a Database in Visual Basic
In diesem Codebeispiel wird gezeigt, wie Sie die Abhängigkeiten ermitteln und die Liste durchlaufen, um die Ergebnisse anzuzeigen.
' compile with:
' /r:Microsoft.SqlServer.Smo.dll
' /r:Microsoft.SqlServer.ConnectionInfo.dll
' /r:Microsoft.SqlServer.Management.Sdk.Sfc.dll
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Sdk.Sfc
Public Class A
Public Shared Sub Main()
' database name
Dim dbName As [String] = "AdventureWorksLT2012" ' database name
' Connect to the local, default instance of SQL Server.
Dim srv As New Server()
' Reference the database.
Dim db As Database = srv.Databases(dbName)
' Define a Scripter object and set the required scripting options.
Dim scrp As New Scripter(srv)
scrp.Options.ScriptDrops = False
scrp.Options.WithDependencies = True
scrp.Options.Indexes = True ' To include indexes
scrp.Options.DriAllConstraints = True ' to include referential constraints in the script
' Iterate through the tables in database and script each one. Display the script.
For Each tb As Table In db.Tables
' check if the table is not a system table
If tb.IsSystemObject = False Then
Console.WriteLine("-- Scripting for table " + tb.Name)
' Generating script for table tb
Dim sc As System.Collections.Specialized.StringCollection = scrp.Script(New Urn() {tb.Urn})
For Each st As String In sc
Console.WriteLine(st)
Next
Console.WriteLine("--")
End If
Next
End Sub
End Class
Skripting out the Dependencies for a Database in Visual C#
In diesem Codebeispiel wird gezeigt, wie Sie die Abhängigkeiten ermitteln und die Liste durchlaufen, um die Ergebnisse anzuzeigen.
// compile with:
// /r:Microsoft.SqlServer.Smo.dll
// /r:Microsoft.SqlServer.ConnectionInfo.dll
// /r:Microsoft.SqlServer.Management.Sdk.Sfc.dll
using System;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Sdk.Sfc;
public class A {
public static void Main() {
String dbName = "AdventureWorksLT2012"; // database name
// Connect to the local, default instance of SQL Server.
Server srv = new Server();
// Reference the database.
Database db = srv.Databases[dbName];
// Define a Scripter object and set the required scripting options.
Scripter scrp = new Scripter(srv);
scrp.Options.ScriptDrops = false;
scrp.Options.WithDependencies = true;
scrp.Options.Indexes = true; // To include indexes
scrp.Options.DriAllConstraints = true; // to include referential constraints in the script
// Iterate through the tables in database and script each one. Display the script.
foreach (Table tb in db.Tables) {
// check if the table is not a system table
if (tb.IsSystemObject == false) {
Console.WriteLine("-- Scripting for table " + tb.Name);
// Generating script for table tb
System.Collections.Specialized.StringCollection sc = scrp.Script(new Urn[]{tb.Urn});
foreach (string st in sc) {
Console.WriteLine(st);
}
Console.WriteLine("--");
}
}
}
}
Skripting out the Dependencies for a Database in PowerShell
In diesem Codebeispiel wird gezeigt, wie Sie die Abhängigkeiten ermitteln und die Liste durchlaufen, um die Ergebnisse anzuzeigen.
# Set the path context to the local, default instance of SQL Server.
CD \sql\localhost\default
# Create a Scripter object and set the required scripting options.
$scrp = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Scripter -ArgumentList (Get-Item .)
$scrp.Options.ScriptDrops = $false
$scrp.Options.WithDependencies = $true
$scrp.Options.IncludeIfNotExists = $true
# Set the path context to the tables in AdventureWorks2012.
CD Databases\AdventureWorks2012\Tables
foreach ($Item in Get-ChildItem)
{
$scrp.Script($Item)
}