Skryptów
Skryptów w SMO jest kontrolowana przez Scripter obiektu i jego obiektów podrzędność lub Script metoda dla poszczególnych obiektów.The Scripter object controls the mapping out of dependency relationships for objects on an instance of Microsoft SQL Server.
Zaawansowane wykonywanie skryptów za pomocą Scripter obiektu i jego obiektów podrzędność jest procesem trzy fazy:
Odnajdowanie
Generowanie listy
Generowanie skryptu
Faza odnajdowania używa DependencyWalker obiektu.Podana nazwa URN listę obiektów, DiscoverDependencies metoda DependencyWalker zwraca obiekt DependencyTree obiektu dla obiektów na liście nazwy URN.Wartość logiczna fParents parametr jest używany do wybierania czy nadrzędne lub podrzędne określonego obiektu mają zostać odnalezione.Drzewo zależności można modyfikować na tym etapie.
Na liście fazy generowania drzewa jest przekazywana i zwracane wynikowej liście.Obiekt i tej listy w kolejności wykonywanie skryptów można manipulować.
Generowanie listy fazy Użyj WalkDependencies Metoda zwraca DependencyTree.DependencyTree Może być modyfikowany na tym etapie.
W trzeciej i końcowej fazie skryptu jest generowana z określonej listy i opcje obsługi wykonywanie skryptów.Wyniki są zwracane jako StringCollection obiektu systemu.W tej fazie nazwy obiektów zależnych są wyodrębniane z kolekcja elementów DependencyTree obiektów i właściwości takich jak NumberOfSiblings i FirstChild.
Przykład
Aby używać dostarczonych przykładów kodu źródłowego, należy wybrać środowisko, szablon oraz język programowania, które będą używane do tworzenia aplikacji.Aby uzyskać więcej informacji, zobacz Jak Tworzenie projektu SMO Visual Basic w programie Visual Studio.NET lub Jak Tworzenie projektu programu Visual C# SMO w programie Visual Studio.NET.
Poniższy przykład kodu wymaga Imports instrukcja dla obszaru nazw System.Collections.Specialized.Wstaw to w innych instrukcjach przywóz przed wszelkimi deklaracjami w aplikacji.
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.Collections.Specialized
Skrypty poza zależności dla bazy danych w języku Visual Basic
W tym przykładzie kodu pokazano, jak rozpoznać zależności i iterować przez listę wyświetlania wyniki.
' 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] = "AdventureWorksLT2008R2" ' 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
Skrypty poza zależności dla bazy danych w środowisku Visual C#
W tym przykładzie kodu pokazano, jak rozpoznać zależności i iterować przez listę wyświetlania wyniki.
// 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 = "AdventureWorksLT2008R2"; // 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("--");
}
}
}
}
Skrypty poza zależności dla bazy danych w PowerShell
W tym przykładzie kodu pokazano, jak rozpoznać zależności i iterować przez listę wyświetlania wyniki.
# 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 AdventureWorks2008.
CD Databases\AdventureWorks2008R2\Tables
foreach ($Item in Get-ChildItem)
{
$scrp.Script($Item)
}