Jos*_*nig 8 sql-server stored-procedures
简短版本:是否有某种方法可以使用 SQL Server Data Tools for Visual Studio 2010 有条件地编译 SQL Server 数据项目中的 TSQL 代码块?
我在 Visual Studio 2010 中使用 SQL Server Data Tools 来处理实验性 SQL Server Express 数据库。如果一切顺利,最终目标将是企业 SQL Server 平台。我在一个机器上有一个 2008 年的实例,另一个在另一个机器上有一个 2012 年的实例,因为我的公司也正在从 2008 年到 2012 年迁移许多企业数据库。
在我使用过的其他编程语言中,预处理器指令可以轻松地有条件地编译代码库的一部分。最常见的用途是在受限部分为不同平台使用不同的代码,或者从发布版本中排除调试输出代码。
在我正在处理的一些存储过程中,这两者都可能非常有帮助。有这样的东西吗?我知道我可以sqlcmd在部署期间使用变量来换出特定的值,但我无法弄清楚如何使用它来包含或排除后续的代码块。
例子:
#IF $(DebugVersion) = 'True'
-- A bunch of useful PRINTs and what not
#ELSE
SET NOCOUNT ON
#ENDIF
#IF $(SSVersion) = '2012'
SET @pretty_date = FORMAT(@some_date, 'dddd, MMM dd, yyyy')
#ELSE
SET @pretty_date = CAST(@some_date AS nvarchar(12))
#ENDIF
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道 SSDT 可以做到这一点。
根据项目有多大以及您打算使用 2012 年的好东西来增强多少程序,它可能可以通过Composite Projects进行管理。
SSDT 可以将一个数据库项目与一个或多个引用的数据库项目或 dacpac 相结合,以描述单个复合数据库模式。使用复合项目允许将大型数据库分解为更易于管理的块,允许不同的人或团队负责整个模式的不同部分,并允许在多个数据库中重用数据库对象定义。
其概念是拥有一个基础项目,其中包含用于使用新功能的过程的公共对象定义和版本特定项目。2012 项目将引用基础项目,编译/构建将结合两者的对象。
PITA 是您不能用组合中的对象覆盖基础项目中的对象,因此您必须维护基础、2008 和 2012 项目。当您想要特定程序的 2012 版本时,您必须将其从基础中删除并在 2008 和 2012 项目中创建一个版本。
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |