我在命令行中使用了几个已保存的项目来比较数据库和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开关更改为指向不存在的文件,则会出错,因此可能是使用了过滤器开关,实际上它已在输出中列出..
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
答案 0 :(得分:0)
看起来如果在UI中显式选择对象并保存SQL Compare项目,那将覆盖过滤器。例如,使用示例数据库,创建项目并选择要包含的所有对象,然后保存项目。创建一个新过滤器并排除以“价格”结尾的对象并保存过滤器。然后,当您使用项目+过滤器使用命令行创建表时,该报告将包含“WidgetPrices”表。
返回项目,关闭过滤器并取消选择WidgetPrices表,使其不再包含在项目中并保存,然后再次使用该项目运行命令行,WidgetPrices不再出现在报告。