Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O script no SMO é controlado pelo Scripter objeto e seus objetos filho ou pelo Script método em objetos individuais. O Scripter objeto controla o mapeamento de relações de dependência para objetos em uma instância do MicrosoftSQL Server.
O script avançado usando o Scripter objeto e seus objetos filho é um processo de três fases:
Descoberta
Geração de lista
Geração de script
A fase de descoberta usa o DependencyWalker objeto. Dada uma lista de URN de objetos, o DiscoverDependencies método do DependencyWalker objeto retorna um DependencyTree objeto para os objetos na lista de URN. O parâmetro booliano fParents é usado para selecionar se os pais ou os filhos do objeto especificado devem ser descobertos. A árvore de dependência pode ser modificada neste estágio.
Na fase de geração da lista, a árvore é passada e a lista resultante é retornada. Essa lista de objetos está em ordem de script e pode ser manipulada.
As fases de geração de lista usam o WalkDependencies método para retornar um DependencyTree. O DependencyTree valor pode ser modificado neste estágio.
Na terceira e última fase, um script é gerado com as opções de lista e script especificadas. O resultado é retornado como um objeto do StringCollection sistema. Nesta fase, os nomes de objeto dependentes são extraídos da coleção Items do DependencyTree objeto e propriedades, como NumberOfSiblings e FirstChild.
Exemplo
Para usar qualquer exemplo de código fornecido, você precisará escolher o ambiente de programação, o modelo de programação e a linguagem de programação na qual criar seu aplicativo. Para obter mais informações, consulte Criar um projeto de SMO do Visual Basic no Visual Studio .NET ou criar um projeto SMO do Visual C# no Visual Studio .NET.
Este exemplo de código requer uma instrução Imports para o namespace System.Collections.Specialized. Insira isso com as outras instruções Imports, antes de qualquer declaração no aplicativo.
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports System.Collections.Specialized
Criando script das dependências de um banco de dados no Visual Basic
Este exemplo de código mostra como descobrir as dependências e iterar pela lista para exibir os resultados.
' 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
Criando script das dependências de um banco de dados no Visual C#
Este exemplo de código mostra como descobrir as dependências e iterar pela lista para exibir os resultados.
// 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("--");
}
}
}
}
Criando script das dependências de um banco de dados no PowerShell
Este exemplo de código mostra como descobrir as dependências e iterar pela lista para exibir os resultados.
# 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)
}