小编Iro*_*fin的帖子

为什么只能删除当前数据库中的一个 SQL Server 视图?

刚刚注意到这一点,并且很难想出一个技术原因。

可以使用三个部分名称删除表,但视图仅限于两个部分名称。

这背后的原因是什么?

sql-server view

11
推荐指数
1
解决办法
249
查看次数

为什么 SQL 尝试转换被我的 where 子句排除的行?

我已经多次遇到过这种情况,我相信这是有充分理由的 - 但我该如何避免呢?

我确定这与周围的怪癖有关isnumeric。在英语中,我有一个过滤isnumeric(somefield) = 1. 然后我尝试int在我的where子句中使用 an 来查询它,因为表中的其他一些字段有字符值,所以整个事情都失败了。

我创建了一个显示错误的SQL 小提琴

我尝试cast/convert在视图的 select 中执行 a ,但查询引擎似乎忽略了它。

那么 - 为什么会发生这种情况,有没有一种干净的方法来处理它?

由于我在插入物上缺少引号,原始小提琴有一个非常相似的错误。这不是我试图强调的问题。我通过为所有插入的值添加引号来修复视图。

sql-server view type-conversion

8
推荐指数
2
解决办法
2537
查看次数

报告 EAV 结构化数据库的解决方案?

现有设置 SQL Server 2005 带有标准 EAV 表,用户希望使用 BI 工具 (Cognos) 对其进行切片和切块。

有没有希望我们可以将这些数据转换成我们可以报告的格式?谷歌让我相信没有希望。我愿意相信某种解决方案已经存在。

business-intelligence reporting cognos eav

5
推荐指数
2
解决办法
948
查看次数

使用 SET @Variable = Field= @Variable + 1 在堆上的意外更新结果,用聚集索引修复

我只是想了解为什么会发生这种情况,而我的 Google 搜索失败了。我们使用的是 SQL Server 2016 SP1。

这是这种情况:供应商表通过跟踪每个表的当前值来管理 ID。如果您正在执行插入操作,则可以调用一个函数来返回一个 ID 块。

因此,我们通过使用从真实表中选择来设置临时表select into(我们正在克隆一组数据,以使用不同的属性集重新插入)。

然后我们调用该函数并获取记录数的新 id(它只返回最大 ID,因此我们进行一些数学运算以获取下一个 id)。

然后我们更新表格:

update #temp set @nextId = Id = @nextId + 1
Run Code Online (Sandbox Code Playgroud)

期望它会为每条记录递增 1 并设置 id。

相反,为每 4 条记录设置相同的 ID,然后它会递增,接下来的 4 条会得到下一个 id,等等。为什么每 4 条记录?什么地方出了错?

结果

更有趣的是,如果我们在表上放置一个聚集索引,一切都会正常进行。

我确定这与表是堆有关……但不知道为什么。

链接到计划

sql-server clustered-index heap update

5
推荐指数
1
解决办法
155
查看次数