如何从 VS 数据库项目中引用另一个数据库?
How can I reference another DB from a VS DB project?
我们有几个数据库,比如 DB1、DB2、DB3 等
它们必须具有相同的代码库,因此我们使用 Visual Studio 2012 年的一个 DB 项目,并根据该项目与 UAT/Prod DB1 的比较生成一个 SQL 部署脚本.然后这个脚本应用到DB1-DBn。
在这个数据库项目的历史上,我第一次不得不创建一个包含硬编码数据库名称的函数,例如:
inner join DB1.schema.table1 as t1 on
现在由于与该数据库引用有关的许多错误,无法构建项目或无法更新比较或生成脚本(禁用更新和生成脚本按钮),因为 VS 似乎认为 DB1 不存在.
我尝试添加项目级别 SQLCMD 变量 $(DB)
并将其设置为 DB1
默认值并将其用作
inner join [$(DB1)].schema.table1 as t1 on
解决错误,但似乎没有任何区别。
编辑:
有人建议添加对其自身的循环项目引用并为其分配我试图手动添加的相同变量,但不确定如何完成。
根据此 article 应将引用添加到 手动提取的 .dacpac
文件中,如下所示:
使用以下命令从目标数据库中提取 .dacpac
文件:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC0\sqlpackage.exe" /SourcePassword:p /SourceUser:u /Action:Extract /ssn:192.168.2.1 /sdn:DB1 /tf:DB1.dacpac
包括作为数据库参考。它自动分配了正确的 SQLCMD 变量名并且错误消失了。
从源代码控制点来看,即使在将数据库引用添加到 .dacpac
文件时自动创建 SQLCMD 变量,它也不会将该文件添加到项目中。使用的 .dacpac
文件仍然必须作为现有项目添加到项目中,这有点蹩脚。在解决方案资源管理器中执行此操作时,我遇到了一个错误,因此不得不通过团队资源管理器来执行此操作,但这是可行的。
我们有几个数据库,比如 DB1、DB2、DB3 等
它们必须具有相同的代码库,因此我们使用 Visual Studio 2012 年的一个 DB 项目,并根据该项目与 UAT/Prod DB1 的比较生成一个 SQL 部署脚本.然后这个脚本应用到DB1-DBn。
在这个数据库项目的历史上,我第一次不得不创建一个包含硬编码数据库名称的函数,例如:
inner join DB1.schema.table1 as t1 on
现在由于与该数据库引用有关的许多错误,无法构建项目或无法更新比较或生成脚本(禁用更新和生成脚本按钮),因为 VS 似乎认为 DB1 不存在.
我尝试添加项目级别 SQLCMD 变量 $(DB)
并将其设置为 DB1
默认值并将其用作
inner join [$(DB1)].schema.table1 as t1 on
解决错误,但似乎没有任何区别。
编辑:
有人建议添加对其自身的循环项目引用并为其分配我试图手动添加的相同变量,但不确定如何完成。
根据此 article 应将引用添加到 手动提取的 .dacpac
文件中,如下所示:
使用以下命令从目标数据库中提取 .dacpac
文件:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC0\sqlpackage.exe" /SourcePassword:p /SourceUser:u /Action:Extract /ssn:192.168.2.1 /sdn:DB1 /tf:DB1.dacpac
包括作为数据库参考。它自动分配了正确的 SQLCMD 变量名并且错误消失了。
从源代码控制点来看,即使在将数据库引用添加到 .dacpac
文件时自动创建 SQLCMD 变量,它也不会将该文件添加到项目中。使用的 .dacpac
文件仍然必须作为现有项目添加到项目中,这有点蹩脚。在解决方案资源管理器中执行此操作时,我遇到了一个错误,因此不得不通过团队资源管理器来执行此操作,但这是可行的。