In SQL
在删除表之前,我将首先检查它是否存在,以免导致错误,如下所示:
IF OBJECT_ID('TEMPDB..#table') IS NOT NULL
BEGIN
DROP TABLE #table
END
In MDX
我可以用一种方法来检查是否set
or member
在尝试删除它之前已经存在。
目前我的一些结构中有以下结构.mdx
文件。我向多维数据集添加一个自定义集,然后在后续的多个脚本中使用该集,即它们是多批处理脚本。
/*
//I run the following manually...
DROP SET [XCube].[xSet]
*/
CREATE
SET [XCube].[xSet] AS
blah blah
1.
SELECT x FROM XCube USING variousconditions AND xSet
GO
2.
SELECT y FROM XCube USING variousconditions AND ySet
GO
3.
SELECT y FROM XCube USING variousconditions AND ySet
GO
将上述上下文放在一边,我的问题非常简单:
我如何测试是否xSet
存在以便我可以执行DROP SET [XCube].[xSet]
仅在需要时?
我可以给你一个部分答案:你可以找到有关你的立方体的对象的信息架构行集 http://technet.microsoft.com/en-us/library/ms126233.aspx,这类似于INFORMATION_SCHEMA
关系数据库中的视图。从 SQL Server 2008 开始,您可以使用 SQL 的有限子集访问这些数据(没有联接,只是简单的column_name = 'value'
where 子句中的条件,...) 像这样:
select *
from $SYSTEM.MDSCHEMA_SETS
where SET_NAME = 'xSet'
and CUBE_NAME = 'XCube'
Analysis Services 会自动检测查询是 SQL 还是 MDX(或者,从 SQL2012 开始是 DAX)。
如果该集合存在,这将返回一条记录;如果不存在,则不会返回任何记录。但我不知道 MDX 中有一种根据结果有条件执行代码的机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)