gpt4 book ai didi

visual-studio - 数据库部署 (vsdbcmd.exe) : DatabaseName and DefaultDataPath are ignored?

转载 作者:行者123 更新时间:2023-12-04 01:09:52 25 4
gpt4 key购买 nike

Visual Studio 数据库版本附带一个工具 vsdbcmd.exe,它应该允许某人将 .dbschema 文件(由构建时的数据库项目生成)部署到数据库。它通过首先构建脚本,然后执行它来做到这一点:

vsdbcmd.exe /a:Deploy /cs:"Data Source=(local);Integrated Security=True;Pooling=False" /dsp:Sql /dd /model:"..\Database.dbschema" /p:TargetDatabase=TargetDB /manifest:"..\Database.deploymanifest"



我希望它可以毫无问题地将脚本部署到不同的数据库服务器。但是,脚本中编码了实际 .mdf 文件的完整路径,以及对原始数据库的其他一些引用。要么没有选项来控制它,要么我找不到它。

有人用这个吗?你如何部署?我是否应该使用不同类型的数据库项目(我记得在“数据库项目”和“服务器项目”之间有选择的方式,但我不知道这是否重要)?

编辑

我可以很好地覆盖 .sqlcmdvars,但这并不能解决问题。这是使用上述命令从生成的 .sql 文件中提取的内容:
GO
:setvar DatabaseName "TargetDB"
:setvar DefaultDataPath "C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\"

所以有“targetdb”目标数据库被正确记录。但是,还有几行:
CREATE DATABASE [$(DatabaseName)]
ON
PRIMARY(NAME = [Original], FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Original.mdf', SIZE = 3072 KB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024 KB)
LOG ON (NAME = [Original_log], FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Original_log.ldf', SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %)

其中 Original.mdf 是原始数据库的名称(即我们在开发过程中部署的数据库,并在数据库项目的项目属性中设置)。这是部署失败的地方,要么因为目标机器上的确切路径可能不同,要么在我的机器上因为该数据库已经存在。

这些值似乎只是硬编码在生成的脚本中。

最佳答案

这可能是在执行数据库模式同步 -> 数据库项目时引起的。 (我的环境是VS2010 Enterprise RTM)。

生成的 ALTER DATABASE 语句用于镜像源数据库,而不考虑任何替换值(它还将包括初始数据库大小等)。该问题不会出现在初始数据库导入上。

编辑在...下找到的文件

架构对象\数据库级对象\存储\文件

...并修复它们以包含正确的 $(DefaultDataPath)$(DatabaseName).mdf/$(DefaultLogPath)$(DatabaseName)_log.ldf值——或其他——视情况而定。 (现在在您的架构比较中将它们标记为“跳过”:-P)

通过上述“更正”,保持外部值将再次起作用,并且是管理此类属性的首选方法。

快乐编码。

关于visual-studio - 数据库部署 (vsdbcmd.exe) : DatabaseName and DefaultDataPath are ignored?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/700420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com