Azure SQL"选择"查询未显示所有行

时间:2014-11-10 18:49:14

标签: sql azure azure-sql-database

我刚刚使用SQLAzureMW(SQL Azure迁移向导工具)将我的SQL Server数据库迁移到Azure SQL。它毫不费力地走了 - 所有我的桌子都在那里,网站运行正常,等等。

这里有什么奇怪的:如果我对我的表执行一个简单的SELECT语句,我只会得到一些行。我以为他们失踪了,但我的网站正在使用其中一些记录,好像他们在那里一样。所以我用WHERE条款和BAM查询 - 他们出现了。怎么......那是什么......为什么我的选择没有显示我的一切?这适用于我测试的许多表格。

SQL Azure

enter image description here

内部部署

enter image description here

3 个答案:

答案 0 :(得分:0)

我放弃了MS SQL Management Studio,而是使用Visual Studio 2012/2013中的SQL Server对象资源管理器。它运行正常,允许内联编辑数据。

答案 1 :(得分:0)

考虑这个SELECT语句:

SELECT
    SvcTimeID,
    LoginName,
    MeanSeconds,
    MedianSeconds,
    RequestCount,
    StdDevSeconds,
    SvcDate,
    CAST (TS AS INT) AS TS
FROM dbo.SvcTime
WHERE SvcDate >= @SvcDate

设置参数的位置:

cmd.Parameters["@SvcDate"].Value = DateTime.UtcNow - new TimeSpan(31, 0, 0, 0);

在Azure Web角色中执行该语句 - 带回来,比如24行。

现在,插入两个新行;等至少一分钟;再次执行该语句。是否显示最近插入的行?就我而言,他们没有。注意:数据库中SvcDate的默认值为getutcdate()

将SQL Azure数据库从Web版移动到标准版(S2)。行神奇地出现。

这是我的理论。您遇到的问题不是MS SQL Management Studio,而是SQL Azure本身,在某些情况下,相同的查询将从某个地方的缓存中返回原始行,并且会丢失数据库中的新行。

这让我对Azure有了任何信心。

答案 2 :(得分:0)

起初我很害怕,但是我认为这有一个解释:

如果您在连接“ A”中插入了一些行,但在其他会话中找不到它们,则可能是您未提交事务。默认情况下,在前提条件下,在SQL Server中,您的第二个连接将挂起,直到事务被提交或回滚为止。 (隔离级别已提交)

以某种方式,使用相同的隔离级别,Azure的行为有所不同。在某些情况下,我似乎可以用作快照隔离。因此,您可以从表中读取信息,但结果不会更新。或者,也许以不同的方式设置了锁。

要解决此问题,请检查sysprocesses中open_tran> 0的会话,或小心提交trans。在示例中,应该在会话“ A”中运行commit。

祝你好运!