【发布时间】:2017-02-21 03:57:50
【问题描述】:
我有一个导入到.sqlproj 的数据库和一个.publish.xml 发布配置文件,该配置文件将更改发布到远程数据库。
我的理解是,当我右键->发布->生成脚本时,应该计算本地定义和远程数据库之间的差异,并生成一个脚本来使远程数据库对齐。
这一切似乎都可以正常工作,但是,它生成的脚本总是包含 ALTER FUNCTION 和 ALTER PROCEDURE 语句,用于相同的 40 个左右的函数和过程(总共定义了大约 1000 个),是否他们有没有改变。当我将ALTER 语句与 Script Function as -> ALTER to script in SSMS 进行比较时,它们完全相同。
所以我的问题是:为什么 VS 认为这些是不同的,或者如果它们相同,为什么要重新创建它们?
注意事项:
- 这些函数并不特殊 - 其中一些就像定义一个 varchar、将其设置为一个值并返回它一样简单。
- 我尝试将
ALTER脚本运行到数据库中,但它们会继续生成。 - 我检查了 SSMS 中的属性(右键单击 -> 属性),但看不到它总是重新创建的那些和不重新创建的那些明显不同的地方。
- 我的发布配置文件是沼泽标准配置文件。
谢谢
【问题讨论】:
-
你能在 SSDT 中使用“模式比较”来查看它“认为”的差异是什么吗?这样做通常很有帮助,然后将“目标”脚本粘贴到源文件中;这样您就可以确定您拥有脚本的“规范”形式。公平地说,与存储过程相比,我更经常看到约束和触发器。谷歌搜索“SSDT 规范形式”可能会有所帮助。
标签: visual-studio-2015 sql-server-data-tools sqlproj