相关疑难解决方法(0)

在SQL Server中设置日期

在SQL Server中,如何将DATETIME"置于"第二/分钟/小时/日/年?

假设我的日期是2008-09-17 12:56:53.430,那么地板的输出应该是:

  • 年:2008-01-01 00:00:00.000
  • 月:2008-09-01 00:00:00.000
  • 日:2008-09-17 00:00:00.000
  • 时间:2008-09-17 12:00:00.000
  • 会议纪要:2008-09-17 12:56:00.000
  • 第二名:2008-09-17 12:56:53.000

t-sql sql-server

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

什么是系统表master..spt_values的目的,什么是它的值的含义?

什么是系统表master..spt_values的目的是什么?
为什么提供它以及如何使用它?

它的类型,低值,高值的含义是什么?

更新:
Google搜索提供了数千个"其用途",例如:

sql sql-server configuration database-design

59
推荐指数
2
解决办法
6万
查看次数

大多数开发人员都不知道的SQL Server功能/命令

可能重复:
SQL Server的隐藏功能

我已经作为.NET开发人员工作了一段时间,但现在主要针对SQL Server数据库3年多了.我觉得从开发的角度来看,我对SQL Server的掌握相当不错,但我很惭愧地承认我今天刚刚从这个答案中学到了"WITH TIES" - 与大多数朋友一起排名前五.

在SO上看到这样的问题和答案是令人羞愧的,因为它帮助我意识到我真的不知道我认为我做的多少,并帮助重新激发我的意志,以便了解更多,所以我想到了更好的方式而不是请大量专家对其他方便的命令/功能进行输入.

普通开发人员可能没有意识到的最有用的功能/命令是什么?

顺便说一句 - 如果你像我一样并且不知道"WITH TIES"是什么,这里有一个很好的解释.你会很快看到为什么我感到惭愧我不知道它.我可以看到它在哪里有用.- http://harriyott.com/2007/06/with-ties-sql-server-tip.aspx

我意识到这是一个主观问题所以请在关闭之前至少留出几个答案.:)我会尝试编辑我的问题以跟上您的回复列表.谢谢

[编辑] - 以下是回复摘要请向下滚动以获取更多信息.再次感谢guy/gals.

  • MERGE - 从行源INSERT/UPDATE/DELETE到表中的单个命令.
  • SQL Server 2008的FILESTREAM功能允许使用SQL Server 2008和NTFS文件系统的组合来存储和有效访问BLOB数据
  • CAST - 获取没有时间部分的日期
  • Group By - 我得说你一定应该知道这一点
  • SQL Server Management Studio
  • 交易
  • 在嵌套过程调用之间共享本地范围临时表
  • 插入
  • MSDN
  • JOINS
  • PIVOT和UNPIVOT
  • WITH(FORCESEEK) - 强制查询优化器仅使用索引查找操作作为表中数据的访问路径.
  • FOR XML
  • 合并
  • 如何收缩数据库和日志文件
  • INFORMATION_SCHEMA
  • 在Management Studio 2005中设置IMPLICIT_TRANSACTIONS
  • 派生表和公用表表达式(CTE)
  • OUTPUT子句 - 允许访问称为插入和删除的"虚拟"表(如触发器中)
  • CTRL + 0插入null
  • SQL Server 2008中的空间数据

sql sql-server

30
推荐指数
8
解决办法
2024
查看次数

Oracle中的隐藏功能

我喜欢sql server中隐藏功能的答案和问题

您能告诉我们有关Oracle的信息吗?
隐藏的表,...的内部工作,秘密存储过程,具有良好工具的包...

oracle oracleinternals

24
推荐指数
10
解决办法
2万
查看次数

我在哪里可以找到TableDiff.exe?

我刚刚在隐藏的功能问题上找到了关于SQL Server的TableDiff工具,并且有一个完整的nerdgasm.我想下载该工具,但我看到的任何地方都被告知要查看C:\Program Files\Microsoft SQL Server\90\COM\TableDiff.exe.在我的PC上查找无处不在(我安装了SQL Server 2008 Express和SQL Server 2008)之后,我找不到它.

哪里可以单独下载TableDiff.exe工具?

该GUI工具是不是我要找的机器人.

sql-server

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

如何获得SQL Server 2005数据库的独占访问权限?

每当我在SQL Server中恢复数据库的备份时,都会出现以下错误:

Msg 3101, Level 16, State 1, Line 1
Exclusive access could not be obtained because the database is in use.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

通常为了解决这个问题,我只需重启服务器即可.当我们在开发机器上的本地实例上进行开发时,这很好.但是我们有一些程序员需要访问数据库,让每个人编写脚本更改并将其放入Subversion的后勤工作正成为一场噩梦.无论我们的简单解决方案是将它放在办公室的共享服务器上,偶尔备份服务器以防万一有人搞砸了数据.

好吧,我搞砸了数据并需要恢复.不幸的是,我在办公室有另一个同事,正在开发另一个项目并使用相同的数据库服务器进行开发.为了好,我想恢复而不重新启动SQL Server并可能破坏他的工作.

有没有办法在T-SQL中编写脚本以便能够进行独占访问或删除所有连接?

t-sql sql-server

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

为什么(以及如何)使用master..spt_values拆分列?

将问题的答案分解为"将一列拆分为多行",我在此重新编写为[1].

什么是(含义)Type = 'P'以及为什么使用未记录的master..spt_values来拆分列?它有什么好处?


[1]

CREATE TABLE dbo.Table1 
(
    Col1        CHAR(1),
    Col2        CHAR(1),
    Col3        CHAR(1),
    Col4        VARCHAR(50)
)
GO

INSERT INTO dbo.Table1 VALUES ('A','B','C','1,2,3')
GO
INSERT INTO dbo.Table1 VALUES ('D','E','F','6,7,8,9')
GO


SELECT
    T.col1, RIGHT(LEFT(T.col4,Number-1),
    CHARINDEX(',',REVERSE(LEFT(','+T.col4,Number-1))))
FROM
    master..spt_values,
    table1 T
WHERE
    Type = 'P' AND Number BETWEEN 1 AND LEN(T.col4)+1 AND
    (SUBSTRING(T.col4,Number,1) = ','
    -- OR SUBSTRING(T.col4,Number,1)  = '') --this does not work correctly anyway
Run Code Online (Sandbox Code Playgroud)

相关问题:

sql t-sql sql-server database-design

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

SQL隐藏技术?

可能重复:
SQL Server的隐藏功能

什么是SQL提供的专业/微妙技术,而不是很多人知道哪些技术也削减了代码并提高了性能?

例如:我刚学会了如何在聚合函数中使用CASE语句,它完全改变了我的方法.

还有其他人吗?

更新:基本上任何供应商.但PostgreSQL如果你只想关注一个:D

mysql sql sql-server postgresql

15
推荐指数
4
解决办法
1645
查看次数

SQL以不同的间隔选择行

我有一个情况,我有一个巨大的表,包含大量的行,看起来像(例如):

id          Timestamp               Value
14574499    2011-09-28 08:33:32.020 99713.3000
14574521    2011-09-28 08:33:42.203 99713.3000
14574540    2011-09-28 08:33:47.017 99713.3000
14574559    2011-09-28 08:38:53.177 99720.3100
14574578    2011-09-28 08:38:58.713 99720.3100
14574597    2011-09-28 08:39:03.590 99720.3100
14574616    2011-09-28 08:39:08.950 99720.3100
14574635    2011-09-28 08:39:13.793 99720.3100
14574654    2011-09-28 08:39:19.063 99720.3100
14574673    2011-09-28 08:39:23.780 99720.3100
14574692    2011-09-28 08:39:29.167 99758.6400
14574711    2011-09-28 08:39:33.967 99758.6400
14574730    2011-09-28 08:39:40.803 99758.6400
14574749    2011-09-28 08:39:49.297 99758.6400
Run Code Online (Sandbox Code Playgroud)

好的,所以规则是:时间戳可以是任意n秒,5s,30s,60s等,它取决于记录的年龄(存档发生).

我希望能够查询此表以根据时间戳选择每个第n行.

例如:

从mytable中选择*,其中intervalBetweenTheRows = 30s

(出于这个问题的目的,基于假设,所请求的间隔总是比数据库中的可用精度更高)

所以,每第n行根据每行之间的时间

有任何想法吗?!

卡尔

对于那些感兴趣的人来说,递归CTE实际上非常慢,我想到了一个稍微不同的方法:

SELECT TOP 500
    MIN(pvh.[TimeStamp]) as [TimeStamp],
    AVG(pvh.[Value]) as [Value] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

6
推荐指数
1
解决办法
4385
查看次数

在更新语句上使用输出子句时出现奇怪的错误?

首先,根据我的经验,很多人不熟悉输出。如果是这样,此链接非常方便:SQL Server 的隐藏功能

我有以下更新声明:

UPDATE  lease_deal.lease_budget
SET     change_type = NULL 
OUTPUT  inserted.*
WHERE   ISNULL(change_type, '') = ''
Run Code Online (Sandbox Code Playgroud)

虽然我认为这会为我返回更新的记录,但我收到以下错误:

消息 334,级别 16,状态 1,第 9 行 如果 DML 语句的目标表 'lease_deal.lease_budget' 包含没有 INTO 子句的 OUTPUT 子句,则该语句不能有任何已启用的触发器。

我知道我可以成功创建一个临时表并使用输出语句将更新的记录重定向到那里,但为什么我不能将它返回到 IDE?我确定(肯定)我以前能够做到这一点,但似乎无法在任何地方找到合适的例子来帮助我理解我做错了什么。当您正在更新的列上有触发器时,这根本不可能吗?

sql t-sql sql-server sql-server-2008 sql-update

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