我不是SQL专家,每当我需要做一些超出基础知识的事情时,我就会想起这个事实.我有一个不大的测试数据库,但事务日志肯定是.如何清除事务日志?
我想转换像这样的字符串:
'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
在SQL Server 2017中,您可以使用此语法,但不能在早期版本中使用:
SELECT Name = TRIM(Name) FROM dbo.Customer;
Run Code Online (Sandbox Code Playgroud) 当我OPENROWSET在SQL Server 2000中运行查询时它工作.
但是SQL Server 2008中的相同查询会生成以下错误:
SQL Server阻止访问组件"Ad Hoc Distributed Queries"的STATEMENT"OpenRowset/OpenDatasource",因为此组件已作为此服务器的安全配置的一部分关闭.系统管理员可以使用sp_configure启用"Ad Hoc Distributed Queries"
需要更改表以允许列上的空值 - 但不能删除列...我可以这样做吗?正在尝试这样的事情:
ALTER TABLE myTable MODIFY myColumn NULL;
Run Code Online (Sandbox Code Playgroud)
但无济于事....
所以,我有一个函数可以返回一些我希望在我的网站上实现分页的记录.有人建议我使用SQL Server 2012中的Offset/Fetch Next来完成此任务.在我们的网站上,我们有一个区域列出了当时的记录总数和您所在的页面.
之前,我正在获取整个记录集,并能够以编程方式构建分页.但是只使用带有FETCH NEXT X ROWS的SQL方法,我只返回X行,所以我不知道我的总记录集是什么以及如何计算我的最小和最大页面.我能告诉你这样做的唯一方法是调用函数两次并在第一次执行行计数,然后使用FETCH NEXT运行第二行.有没有更好的方法不让我运行查询两次?我试图加快性能,而不是减慢速度.
是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) 我知道如何在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做到这一点.
我有一张桌子:
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.我正在寻找一种最佳方法.我可以考虑使用函数或相关子查询,但不确定如何做到这一点.
在SQL Server 2012中,Ctrl+ R无法正常工作.任何其他快捷方式.任何设置更改可用或有任何替代?