當您撰寫指令碼與 SQL Server 2005 中索引檢視表相關的 SMO 物件時,不會產生索引檢視表定義的指令碼的一部份

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:918480
本文已封存。本文係以「現狀」提供且不會再更新。
Bug #: 403696 (SQLBUDT)
徵狀
當就不會產生指令您碼出在 Microsoft SQL Server 2005 索引檢視表, 定義的叢集索引的指令碼的一部份中索引檢視表的 SQL Server 管理物件 (SMO) 物件。因此,您不能執行產生的指令碼來建立需要先指定在檢視上的叢集的索引的物件。
其他可行方案
若要解決這個問題,請使用其中一種下列方法取決於如何指令您碼 [SMO 物件,有關索引檢視表。

呼叫 SMO 物件的指令碼方法

  1. 定義一個 ScriptingOptions 物件。
  2. ScriptingOptions 物件的 索引 屬性的值設為 True。
  3. 而非呼叫 SMO 物件的 指令碼 方法,呼叫 Script(ScriptingOptions) 方法,SMO 物件。若要執行此動作傳遞至方法 指令碼 的 [ScriptingOptions 物件]。
比方說,請使用類似下列的程式碼範例的程式碼。

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 StringFor Each str In script    Console.WriteLine(str)    Console.WriteLine("go")Next str

使用 Scripter 物件

  1. Options.Indexes 成員 Scripter 物件的值設為 True。
  2. 若要產生指令碼,傳遞 SMO 物件參考至 Scripter 物件的 指令碼 方法。
比方說,請使用類似下列的程式碼範例的程式碼。

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 StringFor Each str In script    Console.WriteLine(str)    Console.WriteLine("go")Next str
附註Scripter 物件的 [選項] 屬性會傳回 ScriptingOptions 物件。

使用傳輸物件

  1. 傳輸 物件的 Options.Indexes 成員的值設定為 ,則為 True
  2. 若要產生指令碼,使用 [傳輸 物件的 ScriptTransfer 方法]。
比方說,請使用類似下列的程式碼範例的程式碼。

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 StringFor Each str In script    Console.WriteLine(str)    Console.WriteLine("go")Next str
附註傳送 物件的 [選項] 屬性會傳回 ScriptingOptions 物件。
狀況說明
Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。
参考
如需有關 ScriptingOptions 類別的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 û 工 u 具 ã 網路 (MSDN) 網站]:

警告:本文為自動翻譯

內容

文章識別碼:918480 - 最後檢閱時間:12/09/2015 05:37:33 - 修訂: 1.1

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbnosurvey kbarchive kbmt kbexpertiseadvanced kbtshoot kbprb KB918480 KbMtzh
意見反應
ERROR: at System.Diagnostics.Process.Kill() at Microsoft.Support.SEOInfrastructureService.PhantomJS.PhantomJSRunner.WaitForExit(Process process, Int32 waitTime, StringBuilder dataBuilder, Boolean isTotalProcessTimeout)