1

我有几个保存的项目,我在命令行中使用它们来比较数据库和 TFS。我的一个数据库有大量与 asp.net 相关的表,这些表都在表名中包含“aspnet”,我正试图将它们过滤掉。

我通过 .scp 文件中的 gui 创建了过滤器,但它似乎没有被拾取。(从 scp 文件中提取..)

<Table version="1"> 
  <Include>False</Include> 
  <Expression>(@NAME LIKE 'xx%') OR (@NAME LIKE 'aspnet%')</Expression> 
</Table> 

然后我通过 GUI 再次创建了一个单独的过滤器,并使用 /filter 开关从命令行调用它,但它再次没有被使用。(从 .scpf 文件中提取)

<Table version="1"> 
  <Include>False</Include> 
  <Expression>(@NAME LIKE 'xx%') OR (@NAME LIKE 'aspnet%')</Expression> 
</Table> 

如果我将 /filter 开关更改为指向一个不存在的文件,它会出错,所以大概它正在使用 filter 开关,并且确实在输出中列出了它。

Argument /filter has value 'DatabaseNameFilter.scpf' 

请问我在这里缺少什么?

这是完整的命令行

"C:\Program Files (x86)\Red Gate\SQL Compare 10\sqlcompare.exe" /project:"C:\Users\CIUser\Documents\SQL Compare\SharedProjects\MyDB (Head) v MyDB.scp" /assertidentical /password1:mypassword /include:identical /Report:myreport.html /ReportType:Simple /Options:Default,ForceColumnOrder,IgnoreCollations,oec,IncludeDependencies /verbose /force /filter:MyFilter.scpf >f.txt 
4

1 回答 1

0

看起来如果您在 UI 中明确选择一个对象并保存 SQL 比较项目,这将覆盖过滤器。例如,使用示例数据库,创建一个项目并选择要包含的所有对象,然后保存该项目。创建一个新过滤器并排除以“价格”结尾的对象并保存过滤器。当您使用命令行使用项目 + 过滤器创建报表时,报表将包含表“WidgetPrices”。

返回项目,关闭过滤器并取消选择 WidgetPrices 表,使其不再包含在项目中并保存,然后再次使用该项目运行命令行,并且 WidgetPrices 不再在报告中。

于 2013-04-08T08:57:47.207 回答