【问题标题】:Azure SQL "select" query not showing all rowsAzure SQL“选择”查询未显示所有行
【发布时间】:2014-11-10 18:49:14
【问题描述】:

我刚刚使用 SQLAzureMW(SQL Azure 迁移向导工具)将我的 SQL Server 数据库迁移到 Azure SQL。它顺利进行 - 我所有的桌子都在那里,网站运行良好,等等。

奇怪的是:如果我对我的表执行一个简单的SELECT 语句,我只会得到几行。我以为它们不见了,但我的网站正在使用其中一些记录,就好像它们在那里一样。所以我用WHERE 子句和 BAM 进行了查询——他们出现了。怎么……怎么……为什么我的选择没有向我展示一切?这适用于我测试过的许多表。

SQL Azure

本地

【问题讨论】:

  • 看起来只复制了 1000 行。有没有设置
  • 由于删除等原因,ID 稍微跳过了一点。这些行实际上似乎都在那里,因为应用程序使用它们很好,我的重点查询可以找到它们。但是,“选择”只返回几个。这是完整的表行(取自前 MS SQL 服务器上的同一数据库)db.tt/mONuyhYJ
  • 没有其他人遇到过这个问题吗?
  • 如果你从 dbo.content 中选择 count(*) 会发生什么?
  • 自从玩了数据屏蔽之后,我就不再信任 Management Studio。如果我右键单击并点击“选择前 1000 个”,则会生成并运行查询,我会看到未屏蔽的数据。如果我然后更改生成的查询(即添加回车,删除顶部的注释等)然后重新运行,我会看到数据按预期屏蔽。这真的不应该发生。尝试一些其他工具,看看您是否得到了您的网站似乎得到的东西。

标签: sql azure azure-sql-database


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    考虑这个 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 的剩余信心。

    【讨论】:

    • 这很有趣。对我来说,MS SQL Management Studio 是唯一有这个问题的。它通过 Entity Framework 和 Visual Studio 的 SQL 对象管理工具运行良好。
    【解决方案3】:

    一开始我很害怕,但我认为这是有原因的:

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

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

    要解决这个问题,请检查 sysprocesses 是否有 open_tran > 0 的会话,或者只是小心提交 trans。在示例中,应该在会话“A”中运行提交。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 2012-06-30
      • 1970-01-01
      相关资源
      最近更新 更多