Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-adatbázis a Microsoft Fabricben
Az SMO-ban a szkriptelést az objektum és a Scripter gyermekobjektumok, illetve az egyes objektumok szkriptmetódusa vezérli. Az Scripter objektum szabályozza a Microsoft SQL Server egy példányán lévő objektumok függőségi kapcsolatainak leképezését.
A speciális szkriptelés az Scripter objektum és a gyermekobjektumok használatával háromfázisú folyamat:
Discovery
Lista generálása
Forgatókönyv-generálás
A felderítési fázis az objektumot DependencyWalker használja. Az objektumok URN-listája alapján az DiscoverDependenciesDependencyWalker objektum metódusa egy objektumot ad DependencyTree vissza az URN-listában szereplő objektumokhoz. A logikai fParents paraméter annak kiválasztására szolgál, hogy a megadott objektum szüleit vagy gyermekeit fel kell-e deríteni. A függőségi fa ebben a szakaszban módosítható.
A listalétrehozási fázisban a rendszer átadja a fát, és visszaadja az eredményül kapott listát. Ez az objektumlista szkriptelési sorrendben van, és módosítható.
A listagenerálási fázisok a WalkDependencies metódus használatával ad vissza egy DependencyTree. A DependencyTree módosítás ezen a ponton módosítható.
A harmadik és utolsó fázisban egy szkript jön létre a megadott listával és szkriptelési beállításokkal. Az eredmény rendszerobjektumként lesz visszaadva StringCollection . Ebben a fázisban a függő objektumnevek ki lesznek nyerve az objektum Elemek gyűjteményéből, valamint az DependencyTree olyan tulajdonságokból, mint az NumberOfSiblings és FirstChild.
Example
A megadott kód példájának használatához ki kell választania a programozási környezetet, a programozási sablont és azt a programozási nyelvet, amelyben létre szeretné hozni az alkalmazást. További információ: Visual C# SMO-projekt létrehozása a Visual Studio .NET-.
Ez a példakód egy Import utasítást igényel a System.Collections.Special névtérhez. Szúrja be ezt a többi Import utasítással az alkalmazás bármely deklarációja előtt.
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.Collections.Specialized
Adatbázis függőségeinek szkriptelése a Visual Basicben
Ez a példakód bemutatja, hogyan derítheti fel a függőségeket, és hogyan haladhat végig a listán az eredmények megjelenítéséhez.
' 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
Adatbázis függőségeinek szkriptelése a Visual C-ben#
Ez a példakód bemutatja, hogyan derítheti fel a függőségeket, és hogyan haladhat végig a listán az eredmények megjelenítéséhez.
// 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("--");
}
}
}
}
Adatbázis függőségeinek szkriptelése a PowerShellben
Ez a példakód bemutatja, hogyan derítheti fel a függőségeket, és hogyan haladhat végig a listán az eredmények megjelenítéséhez.
# 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)
}