相关疑难解决方法(0)

SQL 中的最小日志记录条件

我已经编写了一个脚本来测试在这个页面http://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspx中标题为 Summarizing Minimal Logging conditions about when最小日志记录发生或不发生。

使用此脚本,我发现每种不同类型插入的日志记录长度总和如下:

  • 堆为空 没有块 60000
  • 堆为空,带有 tabblock 56000
  • Heap non empty no tabblock 60000
  • 堆非空,带有 tabblock 56000
  • 堆加索引为空 无标签块 126188
  • 堆加索引为空,带有 tabblock 114188
  • 堆加索引非空无标签块 138696
  • 堆加索引非空,带有 Tablock 112000
  • 集群空有序无标签 64168
  • 簇为空,用 tabblock 56168 排序
  • 集群空无序无标签块 73388
  • 集群空无序,带有 tabblock 65388
  • 集群非空无标签块 63912
  • 集群非空,带有 tabblock 55944
  • 簇加索引为空 无标签块 124336
  • 簇加索引为空,带有 tabblock 108336
  • 集群加索引非空无标签块 123876
  • 带有标签块的集群加索引非空 107924

其中一些数字似乎与 technet 页面上的表格不符。特别是:

  • 插入空表和非空表之间的日志记录似乎没有区别,但是该页面声称在插入到没有 tabblock 的非空集群时应该有完整的日志记录
  • 使用 Tablock 插入带有和索引的堆或集群似乎确实减少了日志记录,但该页面声称应该有完整的日志记录。
  • 使用insert的SELECT INTO方法时,fn_dblog中没有行是insert操作,但是页面把这个方法列为批量加载操作,应该有表中描述的行为

作为参考,这是在 SQL express 数据库上运行的,当我运行 DBCC TRACESTATUS (610) …

sql-server-2008 sql-server bulk-insert

9
推荐指数
1
解决办法
946
查看次数

如何将 varchar 值列表插入到单列表中?

在 SQL Server 2005 中:

CREATE TABLE __RADHE
(
    itemNo varchar(10) not null primary key clustered
);
GO

INSERT INTO __RADHE ???

'34926840', '34927020', '34927202', '34927384', '34927566',
'34927830', '34927889', '34930743', '34930750', '34927897',
'34927848', '34927574', '34927392', '34927210', '34927038',
'34926857', '34917120', '34917286', '34917443', '34926865',
'34927046', '34927228', '34927400', '34927582', '34927855',
'34927905', '34930768', '34930776', '34927913', '34927863',
'34927590', '34927418', '34927236', '34927053', '34926873',
'34917450', '34917294', '34917138', '34917146', '34917302',
'34917468', '34926881', '34927061', '34927244', '34927426',
'34927608', '34927871', '34927921', '34930784', '34927616',
'34927434', '34927251', '34927079', '34926899', '34917476',
'34917310', '34917153', '34917161', …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server insert

3
推荐指数
1
解决办法
3万
查看次数