【问题标题】:Using SMO to script PARTIAL data content (only rows matching a WHERE clause)使用 SMO 编写 PARTIAL 数据内容的脚本(仅与 WHERE 子句匹配的行)
【发布时间】:2016-02-12 08:40:46
【问题描述】:

我使用 SMO 用 SQL Server 数据库的数据填充 SQL Compact 数据库。

这是我实际使用的代码:

foreach(Table l_tblCurrent in l_dbDatabase.Tables)
{
  if(l_tblCurrent.IsSystemObject) continue;

  ScriptingOptions l_scOptions = new ScriptingOptions();

  l_scOptions.NoIdentities        = true;
  l_scOptions.NoCollation         = true;
  l_scOptions.NoCommandTerminator = true;
  l_scOptions.NoFileGroup         = true;
  l_scOptions.ScriptSchema        = true;
  l_scOptions.ScriptData          = true;

  foreach(string l_strCurrent in l_tblCurrent.EnumScript(l_scOptions))
  {
    l_sccDBFCommand.CommandText = l_strCurrent.Replace("[dbo].", "");
    l_sccDBFCommand.ExecuteNonQuery();
  }
}

它工作得很好,但是对于几个表,我不想复制所有的行。我希望能够仅选择与要复制的 WHERE 子句匹配的行。

有可能吗?

【问题讨论】:

  • 为什么不简单地使用 SQL Server Compact Toolbox(或相关的脚本 API)为您执行此操作 - API 支持“WHERE”子句
  • 您好 ErikEJ,感谢您的评论。我不能使用工具箱,示例中的代码是一个大型软件的一小部分,它可以自动创建要在特殊手持设备上使用的数据包。
  • "或相关的脚本 API" - 即可以包含在“大软件”中的库nuget.org/packages/ErikEJ.SqlCeScripting
  • 你得到alternative解决方案了吗?源代码示例可能...
  • 您好 Kiquenet,我的解决方案是填充 SQL Compact 数据库中的所有数据,然后连接到 Compact 数据库并使用 SQL 命令删除不需要的项目。不是很快,但可以。

标签: c# sql sql-server sql-server-ce smo


【解决方案1】:

看起来 SMO 不支持 WHERE 子句或任何其他限制记录数的机制。我建议的解决方法是创建一个包含记录子集的新表,编写脚本,然后删除它。一切都可以通过编程方式完成。

【讨论】:

  • 任何关于它的脚本编程示例?也许powershell...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多