我无法更新临时表.这是我的查询
CREATE TABLE #temp_po(IndentID INT, OIndentDetailID INT, OD1 VARCHAR(50), OD2 VARCHAR(50),
OD3 VARCHAR(50), ORD VARCHAR(50), NIndentDetailID INT, ND1 VARCHAR(50), ND2 VARCHAR(50),
ND3 VARCHAR(50), NRD VARCHAR(50), Quantity DECIMAL(15,3))
INSERT INTO #temp_po(IndentID, OIndentDetailID, OD1, OD2, OD3, ORD)
SELECT ID.IndentID, ID.IndentDetailID, ID.D1, ID.D2, ID.D3, ID.RandomDimension
FROM STR_IndentDetail ID WHERE ID.IndentID = @IndentID
UPDATE
t
SET
t.ND1 = CASE WHEN D.D1 = '' THEN NULL ELSE D.D1 END,
t.ND2 = CASE WHEN D.D2 = '' THEN NULL ELSE D.D2 END,
t.ND3 = CASE WHEN …Run Code Online (Sandbox Code Playgroud) 好.这是我尝试运行的内容:
USE tempdb;
SELECT TOP 1000000 IDENTITY(INT, 1, 1) Number
INTO Numbers
FROM sys.objects s1
CROSS JOIN sys.objects s2
CROSS JOIN sys.objects s3
CROSS JOIN sys.objects s4;
Run Code Online (Sandbox Code Playgroud)
这是"让我成为数字表"查询之一.
这是问题所在.如果我在(重新)启动SQL Server服务后立即运行它,则需要永久.不是十分之一,我希望它更快.永远如此,我让它一次又一次地超过两个小时,仍然不得不杀死它.我在想它永远不会回来.通常我的机器上运行它需要两秒钟.
但是,如果我这样做:
USE tempdb;
SELECT TOP 1000000 IDENTITY(INT, 1, 1) Number
INTO Numbers
FROM sys.objects s1
CROSS JOIN sys.objects s2
CROSS JOIN sys.objects s3;
DROP TABLE Numbers;
SELECT TOP 1000000 IDENTITY(INT, 1, 1) Number
INTO Numbers
FROM sys.objects s1
CROSS JOIN sys.objects s2
CROSS JOIN sys.objects s3
CROSS …Run Code Online (Sandbox Code Playgroud) 我计划在新机器上全新安装SQL Server 2005,我必须订购.我知道tempdb调优对SQL Server实例的整体性能非常重要.
我已经读过,最好的做法是创建尽可能多的tempdb文件,就像拥有CPU(或核心?)一样.那是对的吗?是否有其他建议,例如硬盘/ RAID设置配置我应该注意什么?
谢谢!
我试图理解tempDB以下是我脑海中浮现的疑惑.
tempDB多少?假设一个查询正在做一些Order By并tempDB用于执行该操作.此查询完成后,其他人也执行使用该查询的查询tempDB.第二个查询是否会查找第一个查询所写的记录,tempDB还是会被删除?tempDB?如何知道由于此查询而创建了哪个临时表?是否有任何命名约定后面的Sql引擎命名这些临时表?我是新来的tempDB,请原谅我问这么愚蠢(如果有的话)的问题:-)
如果有人能指出一个可以帮助我了解tempDB的好资源,那将是非常好的.
过去两次我们重新启动了我们的sql server,我们的网站已经关闭了.原因似乎是因为tempdb正在重新创建,并且ASPState用户失去了对tempdb的读/写权限(它是一个ASP站点,会话数据存储在sql server中)
直到大约两周前,这不是问题.有谁知道如何阻止sql server重启后重置tempdb权限?或者为什么这最近才开始发生?我们正在使用MS SQL Server 2005.
我们的生产SQL Server存在一些问题.
服务器:双四核Xeon 8 GB RAM单RAID 10阵列Windows 2003 Server 64位SQL Server 2005标准64位
现在机器上有大约250MB的可用RAM.SQL Server有大约6GB的RAM,我们的监控软件说只有一半的SQL Server分配RAM实际上被使用.
我们的主数据库大约为20GB,任何频率都可以使用大约12GB.我们的tempdb是700MB.两者都位于同一物理磁盘阵列上.
此外,使用Filemon,我能够看到tempdb文件有100或1000的写入长度65536.磁盘队列长度几乎80%的时间超过100.
所以,这是我的问题 -
什么会导致tempdb上的所有写入?我不确定我们是否总是有那么多活动,但似乎过度,这些问题是最近的.
我应该只为服务器添加更多内存吗?
在高负载服务器上,tempdb和db文件应该位于不同的阵列上吗?
CTE是否使用tempdb中的任何空间,还是仅使用内存?
我用mssql 2005和2008标记了这个问题,因为我同时使用它们.
sql-server-2005 tempdb common-table-expression sql-server-2008
消息1101,级别17,状态10,行12由于文件组"DEFAULT"中的磁盘空间不足,无法为数据库"TEMPDB"分配新页面.通过删除文件组中的对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建必要的空间.
这用简单的英语意味着什么?
我们正在尝试优化一些T-SQL存储过程以减少tempdb争用,但我无法弄清楚SQL服务器如何存储非表变量:
在SQL Server 2000系统上,我有一个templog.ldf文件似乎无限制地增长!但是当我检查时,tempdb中没有任何打开的事务(使用DBCC OPENTRAN),也没有在tempdb中使用显式事务.
但是,我在我的存储过程中使用临时表.谁知道ASP.NET数据访问对象可能在幕后做什么?数据库支持ASP.NET网站.
无论如何,tempdb.mdf文件 - tempdb数据文件 - 是一个非常合理的700 MB.templog.ldf文件一天可以增长到30 GB!如果我没有耗尽磁盘空间,可能会更多.我没有明确地删除存储过程中的#tables,但同样,mdf文件似乎永远不会变得非常大.
当没有未完成的交易时,为什么交易日志会增长?事务日志是否会回收空间?此外,DUMP TRAN WITH NO_LOG不会缩小文件,也不会通过截断事件检查CHECKPOINT事件.在tempdb上启用了登录chkpt.停止SQL Server清除tempdb(可能是DBCC SHRINKFILE,但我还没有这样做).
谢谢你的帮助!
tempdb ×10
sql-server ×7
sql ×3
performance ×2
asp.net ×1
collation ×1
join ×1
permissions ×1
size ×1
t-sql ×1
view ×1