Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-databas i Förhandsversion av Microsoft Fabric
Skript i SMO styrs av Scripter objektet och dess underordnade objekt, eller skriptmetoden på enskilda objekt. Objektet Scripter styr mappningen av beroenderelationer för objekt på en instans av Microsoft SQL Server.
Avancerad skriptning med hjälp Scripter av objektet och dess underordnade objekt är en trefasprocess:
Discovery
List generation
Script generation
Identifieringsfasen använder objektet DependencyWalker . Med tanke på en URN-lista över objekt DiscoverDependencies returnerar -metoden DependencyWalker för objektet ett DependencyTree objekt för objekten i URN-listan. Parametern Boolesk fParents används för att välja om överordnade eller underordnade objekt i det angivna objektet ska identifieras. Beroendeträdet kan ändras i det här skedet.
I listgenereringsfasen skickas trädet in och den resulterande listan returneras. Den här objektlistan är i skriptordning och kan manipuleras.
I listgenereringsfaserna används WalkDependencies metoden för att returnera en DependencyTree. DependencyTree Kan ändras i det här skedet.
I den tredje och sista fasen genereras ett skript med de angivna list- och skriptalternativen. Resultatet returneras som ett StringCollection systemobjekt. I den här fasen extraheras de beroende objektnamnen från objektsamlingen DependencyTree för objektet och egenskaper som NumberOfSiblings och FirstChild.
Example
Om du vill använda ett kodexempel som tillhandahålls måste du välja programmeringsmiljö, programmeringsmallen och programmeringsspråket för att skapa ditt program. Mer information finns i Skapa ett Visual C# SMO-projekt i Visual Studio .NET.
Det här kodexemplet kräver en Import-instruktion för namnområdet System.Collections.Specialized. Infoga detta med de andra importinstruktionerna före eventuella deklarationer i programmet.
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.Collections.Specialized
Skripta ut beroenden för en databas i Visual Basic
Det här kodexemplet visar hur du identifierar beroendena och itererar genom listan för att visa resultatet.
' 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
Skripta ut beroenden för en databas i Visual C#
Det här kodexemplet visar hur du identifierar beroendena och itererar genom listan för att visa resultatet.
// 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("--");
}
}
}
}
Skripta ut beroenden för en databas i PowerShell
Det här kodexemplet visar hur du identifierar beroendena och itererar genom listan för att visa resultatet.
# 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 AdventureWorks2022.
CD Databases\AdventureWorks2022\Tables
foreach ($Item in Get-ChildItem)
{
$scrp.Script($Item)
}