首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查联合sql server中是否存在数据库。

检查联合sql server中是否存在数据库。
EN

Stack Overflow用户
提问于 2011-06-02 19:14:34
回答 3查看 162关注 0票数 0

我想从多个数据库联合查询。但在联合之前,我想检查数据库是否退出然后联合,如果第二个数据库退出然后联合,依此类推……

代码语言:javascript
复制
IF EXISTS(SELECT * FROM sys.sysdatabases where name='FirstDB')
select * from FirstDB.dbo.tablename
union
IF EXISTS(SELECT * FROM sys.sysdatabases where name='SecondDB')
select * from SecondDB.dbo.tablename.

如何做到这点。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-06-02 19:37:40

如果数据库丢失(不太理解),批处理将不会编译,因此代码将不会运行。这意味着对数据库存在的任何测试都将失败。

假设您确实有随机出现和消失的数据库,惟一的“实用”选项是动态SQL

代码语言:javascript
复制
...
IF DB_ID('FirstDB') IS NOT NULL
   SET @sql ='select * from FirstDB.dbo.tablename'

IF DB_ID('SecondDB') IS NOT NULL
   SET @sql =  @sql + CASE WHEN @sql = '' THEN '' ELSE 'union ' END +
                      'select * from SecondDB.dbo.tablename'
...
票数 3
EN

Stack Overflow用户

发布于 2011-06-02 19:24:38

在运行时选择数据库或表是代码嗅觉。它在你的情况下可能是有效的,但它肯定是可疑的。如果您可以控制正在使用的数据库,请考虑重新评估您的数据库设计。数据库是否在运行时创建和销毁?这几乎可以肯定是一个坏主意。

票数 2
EN

Stack Overflow用户

发布于 2011-06-02 19:30:14

在每个服务器中定义一个具有固定名称的视图:在FirstDB服务器中:

代码语言:javascript
复制
CREATE DATABASE SOME_DATABASE;
CREATE VIEW SOME_DATABASE.FIXED_TABLENAME AS SELECT * FROM FirstDB.dbo.tablename

在SecondDB服务器中:

代码语言:javascript
复制
CREATE DATABASE SOME_DATABASE;
CREATE VIEW SOME_DATABASE.FIXED_TABLENAME AS SELECT * FROM SecondDB.dbo.tablename

在任一DB中的代码中:

代码语言:javascript
复制
SELECT * FROM SOME_DATABASE.FIXED_TABLENAME;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6213786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档