【发布时间】:2017-07-10 13:46:17
【问题描述】:
有一张桌子:
CREATE TABLE T1 (
id int NOT NULL PRIMARY KEY CLUSTERED
, some_column varchar(10)
, some_other_column datetime
, yet_another_one bigint
, bazillion_other_columns_goes_here ...
);
现在,我在 SSMS 中执行:
BULK INSERT T1 FROM 'E:\blahblahblah.dat';
blahblahblah.dat 比较大; BULK INSERT 需要 40 多分钟才能完成。
当 BULK INSERT 仍在运行时,我打开第二个会话到同一个 server.database 并开始:
SELECT * FROM T1;
正如预期的那样,我在输出中没有任何行。
那我试试:
SELECT * FROM T1 WITH(NOLOCK);
这次我得到了到目前为止导入的全套行,也符合预期。
但是,当我运行时:
SELECT id FROM t1 WITH(NOLOCK);
...我没有得到任何行。
如果我选择除 id 之外的任何列,我会得到部分结果。但是当我选择 id only 时,我什么也得不到。当然,除非 BULK INSERT 完成并且一切恢复正常。
任何想法为什么会发生这种情况?为什么 SELECT * 返回行而 SELECT id 不返回?
【问题讨论】:
-
确认一下,
id不是 IDENTITY 列?在区分大小写的排序规则中,表t1与T1不同 -
确实不是身份,这都是同一张表。
标签: sql sql-server-2012 bulkinsert