当前位置:  开发笔记 > 数据库 > 正文

如何查询数据库模式是否存在

如何解决《如何查询数据库模式是否存在》经验,为你挑选了2个好方法。

作为构建过程的一部分,我们在将代码部署到4个不同的环境时运行数据库更新脚本.此外,由于相同的查询将添加到,直到我们放下一个释放到生产它具有能够给定的数据库上运行多次.像这样:

IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[Table]'))
BEGIN
  CREATE TABLE [Table]
  (...)
END

目前,我在部署/构建脚本中有一个create schema语句.我在哪里查询架构的存在?



1> vfilby..:

@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



2> bdukes..:

你在寻找sys.schemas吗?

IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'jim')
BEGIN
EXEC('CREATE SCHEMA jim')
END

请注意,CREATE SCHEMA必须以自己的批次运行(根据下面的答案)


这在SQL 2008中不起作用,因为CREATE SCHEMA需要是批处理中的第一个语句,请参阅vfilby帖子以获取解决方法
您可以使用"从sys.schemas中选择1"来提高性能.
@vijaysylvester不,这是一个神话.SQL Server优化了列列表,因此放在那里并不重要.完全被忽略了.想要证明吗?把`SELECT 1/0 ......`
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有