我刚刚使用SQLAzureMW(SQL Azure迁移向导工具)将我的SQL Server数据库迁移到Azure SQL。它毫不费力地走了 - 所有我的桌子都在那里,网站运行正常,等等。
这里有什么奇怪的:如果我对我的表执行一个简单的SELECT
语句,我只会得到一些行。我以为他们失踪了,但我的网站正在使用其中一些记录,好像他们在那里一样。所以我用WHERE
条款和BAM查询 - 他们出现了。怎么......那是什么......为什么我的选择没有显示我的一切?这适用于我测试的许多表格。
答案 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。
祝你好运!