我正在尝试做的事情:使用 C# 创建 SQL 脚本来创建exact现有表的副本。
我的问题:您将如何定义 scriptingOptions 中的选项以确保生成的脚本将创建 100% 精确的表副本?有 78 个选项,目前尚不清楚如何执行此操作。最初,我认为通过调用 table.Script() 而不传递任何 ScriptingOptions 我将能够获得表的精确副本,但这并不能解决问题(例如,索引不会被编码,除非它们在脚本选项)。看来我实际上必须手动指定 ScriptingOptions 中的每个属性才能得到我想要的。我应该设置哪些才能得到我想要的结果?准确地复制一个表格并不是那么困难。
可用的脚本选项:以下是所有可用选项:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.scriptingoptions_properties.aspx http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.scriptingoptions_properties.aspx
My Code:
Server server = new Server("XXX");
Database database = new Database();
database = server.Databases["YYY"];
Table table = database.Tables["ZZZ", @"PPP"];
ScriptingOptions scriptingOptions = new ScriptingOptions();
//Define properties in scriptingOptions
StringCollection result = table.Script(scriptingOptions);
var script = "";
foreach (var line in result) {
script += line;
}
System.IO.StreamWriter fs = System.IO.File.CreateText(@"QQQ");
fs.Write(script);
fs.Close();
您想要设置以下内容。
- 聚集索引 = true
- 默认值 = true
- 全文索引 = true
- 索引 = true
- 非聚集索引 = true
- 架构限定 = true(如果您想将其编写到当前架构中)
- 脚本数据 = true(如果你想复制数据)
- ScriptDrops = true(这将在再次创建之前删除目标数据库中的表)
- 脚本架构 = true(如果您想将其编写到当前架构中)
- 统计数据 = 真实
- 触发器 = true
- WithDependency = true(如果您想编写依赖对象的脚本)
- DriAll = 真(编写参照完整性操作的脚本,例如如果父表键不存在则不允许插入子表)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)