1

我有一个现有的 SQL Server 2014 数据库,我想将其添加到源代码控制(Visual Studio 2017 中的 SSDT)。

我有一个包含大量视图和存储过程的数据库项目。 MyDatabase是当前数据库。

每个视图和存储过程都按以下方式编写:

create view MyView 
as
    select
        Id
    from MyDatabase..MyTable

“..” 表示此处的默认模式名称 (dbo)。它适用于 SQL Server。但 SSDT 认为这样的构造是错误的:

查看 MyView 对 MyDatabase.dbo.MyTable 的引用未解决。

所以 SSDT 非常清楚,该数据库是MyDatabase并且跳过的模式名称是dbo.

但是我不能用这样的错误来构建我的项目。我也不能重写MyDatabase..MyTableMyDatabase.dbo.MyTable.

那么有什么办法可以解决SSDT这个问题吗?

4

1 回答 1

2

3 部分名称可以替换为 [$(DatabaseName)]..MyTable

select Id from MyDatabase..MyTable
=>
select Id from [$(DatabaseName)]..MyTable

在可编程对象中使用本地 3 部分名称

虽然 VSTS:DB 不支持本地 3 部分名称,但它支持使用变量和文字来解析对外部数据库的引用。$(DatabaseName) 变量是环境变量,将在部署时替换其值。此变量从项目属性部署选项卡中获取其值。 由于 $(DatabaseName) 在部署时总是被目标数据库名称替换,并且通过变量的引用被解析,您可以在本地 3 部分名称中使用变量。

我们的指导是不要使用本地 3 部分名称,因为它引入了不必要的抽象层和对数据库名称的依赖

于 2019-12-29T12:32:34.360 回答