Parte de um script que é definido uma vista indexada não é gerado quando o script objecto SMO está relacionado com a vista indexada no SQL Server 2005

Traduções de Artigos Traduções de Artigos
Artigo: 918480 - Ver produtos para os quais este artigo se aplica.
N.º de bugs: 403696 (SQLBUDT)
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando o script objecto SMO (SQL Server Management Object) que está relacionado com uma vista indexada no Microsoft SQL Server 2005, a parte do script do índice agrupado definido na vista indexada não é gerado. Por conseguinte, não pode executar o script gerado para criar objectos que requerem um índice agrupado deve ser especificado pela primeira vez na vista.

Como contornar

Para contornar este problema, utilize um dos seguintes métodos, dependendo de como script SMO o objecto que está relacionado com uma vista indexada.

Chamar o método script do objecto SMO

  1. Defina um objecto ScriptingOptions .
  2. Defina o valor da propriedade do objecto ScriptingOptions índices como TRUE.
  3. Em vez de chamar o método de script do objecto SMO, chame o método Script(ScriptingOptions) do objecto SMO. Para efectuar este procedimento, passe o objecto ScriptingOptions para o método de script .
Por exemplo, utilize código semelhante ao seguinte exemplo de código.

Microsoft Visual C#

Server srv = new Server(@".\MySQLServer");
Database db = srv.Databases["MyDB"];
View vw = db.Views["MyView"];

//Define the ScriptingOptions object.
ScriptingOptions sco = new ScriptingOptions();

//Set the value of the Indexes property.
sco.Indexes = true;

//Specify the values of the other members of the sco object.

System.Collections.Specialized.StringCollection script = null;

//Pass the ScriptingOptions object.
script = vw.Script(sco);

foreach (string str in script)
{
    Console.WriteLine(str);
    Console.WriteLine("go");
}

Microsoft Visual Basic .NET

Dim srv As Server = New Server(".\MySQLServer")
Dim db As Database = srv.Databases("MyDB")
Dim vw As View = db.Views("MyView")

'Define the ScriptingOptions object.
Dim sco As ScriptingOptions = New ScriptingOptions()

'Set the value of the Indexes property.
sco.Indexes = True

'Specify the values of the other members of the sco object.

'Pass the ScriptingOptions object.
Dim script As System.Collections.Specialized.StringCollection = vw.Script(sco)

Dim str As String
For Each str In script
    Console.WriteLine(str)
    Console.WriteLine("go")
Next str

Utilizar o objecto de criador de scripts

  1. Defina o valor do membro Options.Indexes do objecto Scripter como TRUE.
  2. Para gerar o script, de passar a referência de objecto SMO para o método de script do objecto Scripter .
Por exemplo, utilize código semelhante ao seguinte exemplo de código.

O Visual C#

Server srv = new Server(@".\MySQLServer");
Database db = srv.Databases["MyDB"];
View vw = db.Views["MyView"];

Scripter scr = new Scripter();
scr.Server = srv;

//Set the value of the Options.Indexes member.
scr.Options.Indexes = true;

//Specify the value of the other members of the scr.Options property.

SqlSmoObject[] objs = new SqlSmoObject[1];
objs[0] = vw;

System.Collections.Specialized.StringCollection script = null;

//Pass the SMO object reference to the Script method.
script = scr.Script(objs);

foreach (string str in script)
{
    Console.WriteLine(str);
    Console.WriteLine("go");
}

Visual Basic .NET

Dim srv As Server = New Server(".\MySQLServer")
Dim db As Database = srv.Databases("MyDB")
Dim vw As View = db.Views("MyView")

Dim scr As Scripter = New Scripter()
scr.Server = srv

'Set the value of the Options.Indexes member.
scr.Options.Indexes = True

'Specify the value of the other members of the scr.Options object.

Dim objs As SqlSmoObject() = New SqlSmoObject() {vw}

'Pass the ScriptingOptions object.
Dim script As System.Collections.Specialized.StringCollection = scr.Script(objs)

Dim str As String
For Each str In script
    Console.WriteLine(str)
    Console.WriteLine("go")
Next str
Nota A propriedade de Opções de um objecto de Criador de scripts devolve um objecto ScriptingOptions .

Utilizar o objecto de transferência

  1. Defina o valor do membro Options.Indexes do objecto de transferência como true .
  2. Para gerar o script, utilize o método ScriptTransfer do objecto de transferência .
Por exemplo, utilize código semelhante ao seguinte exemplo de código.

O Visual C#

Server srv = new Server(@".\MySQLServer");
Database db = srv.Databases["MyDB"];

Transfer trans = new Transfer(db);

//Set the value of the Options.Indexes member.
trans.Options.Indexes = true;

//Specify the value of the other members of the trans.Options property.

System.Collections.Specialized.StringCollection script = null;

//Use the ScriptTransfer method of the Transfer object to generate the script.
script = trans.ScriptTransfer();

foreach (string str in script)
{
    Console.WriteLine(str);
    Console.WriteLine("go");
}

Visual Basic .NET

Dim srv As Server = New Server(".\MySQLServer")
Dim db As Database = srv.Databases("MyDB")

Dim trans As Transfer = New Transfer(db)

'Set the value of the Options.Indexes member.
trans.Options.Indexes = True

'Specify the value of the other members of the trans.Options property.

'Use the ScriptTransfer method of the Transfer object to generate the script.
Dim script As System.Collections.Specialized.StringCollection = trans.ScriptTransfer()

Dim str As String
For Each str In script
    Console.WriteLine(str)
    Console.WriteLine("go")
Next str
Nota A propriedade de Opções de um objecto de transferência devolve um objecto ScriptingOptions .

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Referências

Para obter mais informações sobre a classe ScriptingOptions , visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.scriptingoptions.aspx

Propriedades

Artigo: 918480 - Última revisão: 17 de maio de 2006 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
Palavras-chave: 
kbmt kbexpertiseadvanced kbtshoot kbprb KB918480 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 918480

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com