小编Aar*_*and的帖子

如何清除SQL Server事务日志?

我不是SQL专家,每当我需要做一些超出基础知识的事情时,我就会想起这个事实.我有一个不大的测试数据库,但事务日志肯定是.如何清除事务日志?

sql-server transaction-log

555
推荐指数
13
解决办法
117万
查看次数

Sql Server字符串到日期转换

我想转换像这样的字符串:

'10/15/2008 10:06:32 PM'
Run Code Online (Sandbox Code Playgroud)

进入Sql Server中的等效DATETIME值.

在Oracle中,我会说:

TO_DATE('10/15/2008 10:06:32 PM','MM/DD/YYYY HH:MI:SS AM')
Run Code Online (Sandbox Code Playgroud)

这个问题暗示我必须将字符串解析为其中一种标准格式,然后使用其中一种代码进行转换.对于如此平凡的行动来说,这似乎是荒谬的.有没有更简单的方法?

t-sql sql-server datetime sql-server-2005 string-to-datetime

176
推荐指数
8
解决办法
88万
查看次数

如何修剪早于SQL Server 2017的MS SQL中的字符串?

在SQL Server 2017中,您可以使用此语法,但不能在早期版本中使用:

SELECT Name = TRIM(Name) FROM dbo.Customer;
Run Code Online (Sandbox Code Playgroud)

sql sql-server trim

122
推荐指数
4
解决办法
30万
查看次数

如何启用Ad Hoc Distributed Queries

当我OPENROWSET在SQL Server 2000中运行查询时它工作.

但是SQL Server 2008中的相同查询会生成以下错误:

SQL Server阻止访问组件"Ad Hoc Distributed Queries"的STATEMENT"OpenRowset/OpenDatasource",因为此组件已作为此服务器的安全配置的一部分关闭.系统管理员可以使用sp_configure启用"Ad Hoc Distributed Queries"

sql sql-server-2008

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

我可以将列从NOT NULL更改为NULL而不删除它吗?

需要更改表以允许列上的空值 - 但不能删除列...我可以这样做吗?正在尝试这样的事情:

ALTER TABLE myTable MODIFY myColumn NULL;
Run Code Online (Sandbox Code Playgroud)

但无济于事....

sql-server

87
推荐指数
2
解决办法
14万
查看次数

从OFFSET/FETCH NEXT获取总行数

所以,我有一个函数可以返回一些我希望在我的网站上实现分页的记录.有人建议我使用SQL Server 2012中的Offset/Fetch Next来完成此任务.在我们的网站上,我们有一个区域列出了当时的记录总数和您所在的页面.

之前,我正在获取整个记录集,并能够以编程方式构建分页.但是只使用带有FETCH NEXT X ROWS的SQL方法,我只返回X行,所以我不知道我的总记录集是什么以及如何计算我的最小和最大页面.我能告诉你这样做的唯一方法是调用函数两次并在第一次执行行计数,然后使用FETCH NEXT运行第二行.有没有更好的方法不让我运行查询两次?我试图加快性能,而不是减慢速度.

paging performance sql-server-2012

79
推荐指数
2
解决办法
5万
查看次数

单个SQL Server语句是原子的还是一致的?

是SQL Server中的声明ACID吗?

我是什么意思

给定一个未包装在BEGIN TRANSACTION/ COMMIT TRANSACTION中的T-SQL语句是该语句的操作:

  • 原子:要么执行所有数据修改,要么不执行任何数据修改.
  • 一致:完成后,事务必须使所有数据保持一致状态.
  • 隔离:并发事务所做的修改必须与任何其他并发事务所做的修改隔离.
  • 持久:交易完成后,其效果将永久存在于系统中.

我问的原因

我在实时系统中有一个声明似乎违反了查询规则.

实际上我的T-SQL语句是:

--If there are any slots available, 
--then find the earliest unbooked transaction and mark it booked
UPDATE Transactions
SET Booked = 1
WHERE TransactionID = (
   SELECT TOP 1 TransactionID
   FROM Slots
      INNER JOIN Transactions t2
      ON Slots.SlotDate = t2.TransactionDate
   WHERE t2.Booked = 0 --only book it if it's currently unbooked
   AND Slots.Available > 0 --only book …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2

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

上次执行的特定数据库查询

我知道如何在SSMS中使用以下SQL获取最后执行的查询 -

SELECT deqs.last_execution_time AS [Time], dest.text AS [Query]
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY deqs.last_execution_time DESC
Run Code Online (Sandbox Code Playgroud)

但我想找到一个特定的数据库.如果我不需要,我不想使用SQL事件探查器.另外,我不认为SQL Profiler会允许我查看已经运行但未启用分析的查询.我需要从SSMS做到这一点.

sql-server sql-server-2012

66
推荐指数
2
解决办法
20万
查看次数

计算运行总计/运行余额

我有一张桌子:

create table Transactions(Tid int,amt int)
Run Code Online (Sandbox Code Playgroud)

有5行:

insert into Transactions values(1, 100)
insert into Transactions values(2, -50)
insert into Transactions values(3, 100)
insert into Transactions values(4, -100)
insert into Transactions values(5, 200)
Run Code Online (Sandbox Code Playgroud)

期望的输出:

TID  amt  balance
--- ----- -------
1    100   100
2    -50    50
3    100   150
4   -100    50
5    200   250
Run Code Online (Sandbox Code Playgroud)

基本上对于第一记录余额将是相同的amt,第二个向前余额将是先前余额+当前的余额amt.我正在寻找一种最佳方法.我可以考虑使用函数或相关子查询,但不确定如何做到这一点.

t-sql sql-server running-total

54
推荐指数
2
解决办法
8万
查看次数

Ctrl R在SQL Server 2012中不起作用

SQL Server 2012中,Ctrl+ R无法正常工作.任何其他快捷方式.任何设置更改可用或有任何替代?

ssms sql-server-2012

54
推荐指数
4
解决办法
6万
查看次数