作为构建过程的一部分,我们在将代码部署到4个不同的环境时运行数据库更新脚本.此外,由于相同的查询将添加到,直到我们放下一个释放到生产它具有能够给定的数据库上运行多次.像这样:
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[Table]')) BEGIN CREATE TABLE [Table] (...) END
目前,我在部署/构建脚本中有一个create schema语句.我在哪里查询架构的存在?
@bdukes确定模式是否存在是正确的,但上述语句在SQL Server 2005中不起作用.CREATE SCHEMA
需要在自己的批处理中运行.解决方法是CREATE SCHEMA
在exec中执行语句.
这是我在构建脚本中使用的内容:
IF NOT EXISTS (SELECT 1 FROM sys.schemas WHERE name = '') BEGIN -- The schema must be run in its own batch! EXEC( 'CREATE SCHEMA ' ); END
你在寻找sys.schemas吗?
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'jim') BEGIN EXEC('CREATE SCHEMA jim') END
请注意,CREATE SCHEMA
必须以自己的批次运行(根据下面的答案)