使用SMO编写PARTIAL数据内容的脚本(仅限与WHERE子句匹配的行)

时间:2016-02-12 08:40:47

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

我使用SMO用SQL服务器数据库的数据填充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子句匹配的行。

有可能吗?

1 个答案:

答案 0 :(得分:0)

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