可以在事务中使用SQL“truncate table”命令吗? 我正在创build一个应用程序,我的桌子上有很多logging。 我想删除所有的logging,但如果应用程序失败,我是回滚我的交易。 删除每个logging需要很长时间。 我想知道如果我使用截断表,我仍然可以回滚事务,并在发生故障时恢复数据。 我意识到截断表不写入每个删除到事务日志,但我想知道是否它写页面释放到日志,以便回滚工作。
我有以下几点: CREATE NONCLUSTERED INDEX [MyTableIndex] ON [dbo].[tablename] ([tablename_ID],[tablename_Field1]) INCLUDE ([Tablename_Field2],[Tablename_Field3]) 我想创build一个if语句来检查是否存在。 我该怎么做呢?
我在SQL Server 2005中有一个存储过程与多个variables,我想设置这些variables的值使用select语句。 所有三个variables来自同一个表,应该有一种方法来设置它们使用一个select语句,而不是我目前有如下所示。 请帮我弄明白。 DECLARE @currentTerm nvarchar(max) DECLARE @termID int DECLARE @endDate datetime SET @currentTerm = ( Select CurrentTerm from table1 where IsCurrent = 1 ) SET @termID = ( Select TermID from table1 where IsCurrent = 1 ) SET @endDate = ( Select EndDate from table1 where IsCurrent = 1 )
在SQL Server 2005中,执行一个primefaces“UPSERT”(UPDATE where exists,INSERT otherwise)的正确模式是什么? 我看到很多代码(例如,请参阅检查一行是否存在,否则插入 )与以下两部分模式: UPDATE … FROM … WHERE <condition> — race condition risk here IF @@ROWCOUNT = 0 INSERT … 要么 IF (SELECT COUNT(*) FROM … WHERE <condition>) = 0 — race condition risk here INSERT … ELSE UPDATE … 其中<条件>将是对自然键的评估。 上述方法都不能很好地处理并发。 如果我不能有两个具有相同的自然键的行,看起来像所有的上述风险插入行在竞争条件情况下具有相同的自然键。 我一直在使用下面的方法,但我很惊讶,不能在人们的回答中看到它,所以我想知道它有什么问题: INSERT INTO <table> SELECT <natural keys>, […]
我有这样一个表格: |UserId | ContactID | ContactName ————————————— | 12456 | Ax759 | Joe Smith | 12456 | Ax760 | Mary Smith | 12458 | Ax739 | Carl Lewis | 12460 | Ax759 | Chuck Norris | 12460 | Bx759 | Bruce Lee 我需要添加一个约束到这个表,以便没有用户可以有重复的联系人ID。 用户正在从各种外部系统导入数据,因此ContactId在整个电路板上不是唯一的,但是在每个用户的基础上是唯一的。 我知道如何创build基于单列的唯一约束和非零约束,但是如何创build跨2列的唯一约束呢?
使用Sql Server 2005 Profiler,可以跟踪哪些事件,列和filter来查找最慢的查询和存储过程? 慢=大于N秒,为了论证的缘故。
我正在使用MS SQL 2005,我想检查两个date是否相等,但忽略时间部分。 我知道我可以使用DATEDIFF ,但担心它可能会很慢 – 这个SP在DB中被使用了很多! 有什么build议么? 编辑: David Andres的评论: “比较”不仅包括平等“ 让我意识到我没有把我的问题弄清楚 – 我其实只是检查平等,就是这样。
我正在尝试按datesorting。 我希望最近的date进来。 这很简单,但是有很多logging是空的,并且在任何有date的logging之前。 我尝试了一些没有成功的事情: ORDER BY ISNULL(Next_Contact_Date, 0) ORDER BY ISNULL(Next_Contact_Date, 999999999) ORDER BY coalesce(Next_Contact_Date, 99/99/9999) 我怎样才能按datesorting,最后还有空值? 数据types是smalldatetime 。
考虑需要创builddate的结果集。 我们有开始date和结束date,我们希望在中间生成一个date列表。 DECLARE @Start datetime ,@End datetime DECLARE @AllDates table (@Date datetime) SELECT @Start = 'Mar 1 2009', @End = 'Aug 1 2009' –need to fill @AllDates. Trying to avoid looping. — Surely if a better solution exists. 考虑使用WHILE循环的当前实现: DECLARE @dCounter datetime SELECT @dCounter = @Start WHILE @dCounter <= @End BEGIN INSERT INTO @AllDates VALUES […]
有什么办法可以在SQL Server Management Studio存储过程中按名称或部分名称find? (在活动数据库上下文中) 感谢帮助