相关疑难解决方法(0)

SQL Server的隐藏功能

SQL Server的一些隐藏功能是什么?

例如,未记录的系统存储过程,做一些非常有用但没有足够文档记录的技巧?


答案

感谢所有人的所有伟大答案!

存储过程

  • sp_msforeachtable:使用'?'运行命令 替换为每个表名(v6.5及以上)
  • sp_msforeachdb:使用'?'运行命令 替换为每个数据库名称(v7及更高版本)
  • sp_who2:就像sp_who一样,但是有更多关于故障排除块的信息(v7及更高版本)
  • sp_helptext:如果需要存储过程的代码,请查看&UDF
  • sp_tables:返回范围内数据库的所有表和视图的列表.
  • sp_stored_procedures:返回所有存储过程的列表
  • xp_sscanf:将字符串中的数据读入每个format参数指定的参数位置.
  • xp_fixeddrives ::找到具有最大可用空间的固定驱动器
  • sp_help:如果要了解表的结构,索引和约束.还有视图和UDF.快捷键是Alt + F1

片段

  • 以随机顺序返回行
  • 按上次修改日期的所有数据库用户对象
  • 仅限退货日期
  • 查找日期在当前周内某处的记录.
  • 查找上周发生的日期记录.
  • 返回当前周开始的日期.
  • 返回上周开始的日期.
  • 请参阅已部署到服务器的过程的文本
  • 删除与数据库的所有连接
  • 表格校验和
  • 行校验和
  • 删除数据库中的所有过程
  • 还原后正确重新映射登录ID
  • 从INSERT语句调用存储过程
  • 按关键字查找程序
  • 删除数据库中的所有过程
  • 以编程方式查询数据库的事务日志.

功能

  • HASHBYTES()
  • EncryptByKey的
  • PIVOT命令

杂项

  • 连接字符串附加功能
  • TableDiff.exe
  • 登录事件的触发器(Service Pack 2中的新增功能)
  • 使用持久计算列(pcc)提升性能.
  • sys.database_principles中的DEFAULT_SCHEMA设置
  • 强制参数化
  • Vardecimal存储格式
  • 在几秒钟内找出最受欢迎的查询
  • 可扩展的共享数据库
  • SQL Management Studio中的表/存储过程过滤器功能
  • 跟踪标志
  • GO重复批次后的数字
  • 使用模式的安全性
  • 使用内置加密函数,视图和带触发器的基表进行加密

t-sql sql-server

215
推荐指数
35
解决办法
6万
查看次数

获取datetime列=今天的行 - SQL server noob

在sql 2005中,而不是从dateparts年,月和日建立一个查询,

有没有更简洁的方式编写where子句?

sql-server sql-server-2005

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

SQL如何删除select查询中的重复项?

我有一张看起来像这样的表:

替代文字

如您所见,有一些日期重复,那么如何为该表中的每个日期只选择一行?

'id_from_other_table'列来自INNER JOIN和上表

sql

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

从DateTime转换为INT

在我的SSIS包中,我必须将DateTime中的值转换为相应的INTEGER值.提供了以下示例.

关于如何转换这些的任何想法?

DATETIME   INT
---------  ----
1/1/2009   39814
2/1/2009   39845
3/1/2009   39873
4/1/2009   39904
5/1/2009   39934
6/1/2009   39965
7/1/2009   39995
8/1/2009   40026
9/1/2009   40057
10/1/2009  40087
11/1/2009  40118
12/1/2009  40148
1/1/2010   40179
2/1/2010   40210
3/1/2010   40238
4/1/2010   40269
5/1/2010   40299
6/1/2010   40330
Run Code Online (Sandbox Code Playgroud)

sql-server ssis sql-server-2008-r2

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

如何使用SQL获取一年中第一秒的日期?

我正在研究SQL Server 2005上的清除过程,它必须删除早于1年前的表中的所有行+当前年份的时间.

例如:如果我在今天6-10-2009执行该程序,则必须删除早于2008-01-01 00:00的行(即包括2007年和向后).

我如何获得一年中第一秒的日期?

我试过这个:

select cast((DATEPART(year, getdate()) -1 )AS DATETIME);

但我得到1905-07-02 00:00:00.000而不是2008-01-01 00:00(正如我错误预期的那样).

有谁可以帮助我吗?

sql t-sql sql-server

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

SQL datetime需要读取00:00:00.000

我有以下SQL:

select DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
Run Code Online (Sandbox Code Playgroud)

以这种格式出现:

2012-02-29 23:59:59.000
Run Code Online (Sandbox Code Playgroud)

我需要具有相同日期的确切代码段,但是时间部分必须读取00:00:00.000

修改*我应该在这里明确:我需要在任何给定的时间有上个月的最后一天(当然时间为00:00:00.000格式)

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

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

SQL根据日期时间从多个表中进行选择

我正在编写一个脚本来分析SQL Server 2008数据库中数千个表中包含的一些数据.

为简单起见,表格可以分为4-8个半相关表格.通过半关联,我的意思是它们是同一项的数据集合,但它们没有任何实际的SQL关系.每个表由一个日期-时间戳(的datetime2数据类型),值(可以是一个bit,intfloat根据特定的项目),和当前不感兴趣的一些其它列.日期时间标记在几秒钟内每15分钟(在四分之一小时内)设置; 然而,并非所有数据都是同时准确记录的......

例如:

表格1:

TIMESTAMP                 VALUE
2014-11-27 07:15:00.390      1
2014-11-27 07:30:00.390      0
2014-11-27 07:45:00.373      0
2014-11-27 08:00:00.327      0
Run Code Online (Sandbox Code Playgroud)

TABLE2:

TIMESTAMP                 VALUE
2014-11-19 08:00:07.880      0
2014-11-19 08:15:06.867      0.0979999974370003
2014-11-19 08:30:08.593      0.0979999974370003
2014-11-19 08:45:07.397      0.0979999974370003
Run Code Online (Sandbox Code Playgroud)

表3

TIMESTAMP                 VALUE
2014-11-27 07:15:00.390        0
2014-11-27 07:30:00.390        0
2014-11-27 07:45:00.373        1
2014-11-27 08:00:00.327        1
Run Code Online (Sandbox Code Playgroud)

如您所见,并非所有表都以相同的季度开始TIMESTAMP.基本上,我所追求的是一个查询,它将从3个表中最早的每个15分钟间隔返回3个表中每个表的VALUE TIMESTAMP.对于给出的示例,我想在2014-11-27 07:15开始(不关心秒......因此,需要允许时间戳为+ - 1分钟左右).当没有特定TIMESTAMP的记录时,返回NULL值是可以的.因此,我列出的示例的查询将返回如下内容:

TIMESTAMP                 VALUE1   VALUE2             VALUE3
2014-11-27 07:15           1    NULL                  0
2014-11-27 07:30           0    NULL …
Run Code Online (Sandbox Code Playgroud)

sql sql-server join datetime2

5
推荐指数
1
解决办法
2248
查看次数

转换vs转换SQL Server

我一直在使用SQL Server中的datetime列.现在大多数时候我必须将日期时间的时间部分重置为'00:00:00.000'.

我使用cast函数来实现相同的目的:

select cast(cast(getdate() as date)as datetime)
Run Code Online (Sandbox Code Playgroud)

现在我的其他团队成员使用其他功能:

select cast(floor(cast(GETDATE() as float))as datetime)
Run Code Online (Sandbox Code Playgroud)

要么

SELECT CONVERT(VARCHAR,GETDATE(),105)
Run Code Online (Sandbox Code Playgroud)

我应该记住哪个函数要记住索引列是日期时间类型列.(因此我使用强制转换两次转换datetime - > date - > datetime).

sql datetime casting type-conversion sql-server-2012

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

获取DateTime的T-SQL代码仅包含任何DateTime的Month和Year

给定一个Event包含名为EventTimeDateTime类型的字段的表,并且该值将包含日期和时间元素,我需要创建一个汇总查询,该查询计算每个月的事件数.

Group By字段的结果类型也必须是具有0时间元素的Date Time并设置为该月的第1天.

这是我到目前为止,但它不是很优雅,我不确定它特别有效.

  SELECT COUNT(1) AS [CountOfEvents],
         DATEADD(d, 1 - DAY(EventTime), DATEADD(dd, 0, DATEDIFF(dd, 0, EventTime))) AS [Month]
    FROM [Event]
GROUP BY DATEADD(d, 1 - DAY(EventTime), DATEADD(dd, 0, DATEDIFF(dd, 0, EventTime)))
Run Code Online (Sandbox Code Playgroud)

更好的效率或优雅的建议?

sql t-sql sql-server datetime

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

SQL查询错误不会返回星期五的值

我有这个sql存储过程,它应该查看特定的表并根据日期列返回作业号.除了星期六早上运行时(这应该返回星期五的所有作业号,但不返回任何行),这很有用.有什么建议?这里有一些逻辑问题,我没有看到?我怎么跟踪这个?

存储过程

ALTER Procedure [dbo].[JC_GetJobsClosedYesterday]

As

SELECT [JobNumber]
  FROM [NCLGS].[dbo].[JobClosedDate]
  Where LastInvoiceDate between dbo.ufn_StartOfDay (DATEADD(d, -1, GETDATE())) AND dbo.ufn_StartOfDay (GETDATE())
  order by JobNumber desc
Run Code Online (Sandbox Code Playgroud)

和一天的开始功能.

ALTER function [dbo].[ufn_StartOfDay] ( @inDate datetime )

RETURNS DateTime AS 
BEGIN   
DECLARE @Now datetime   
set @Now = @inDate
DECLARE @DayStart datetime
set @DayStart = @Now

set @DayStart = DATEADD (ms, -DATEPART(ms,@Now),@DayStart)
set @DayStart = DATEADD (s, -DATEPART(s,@Now),@DayStart)
set @DayStart = DATEADD (mi, -DATEPART(mi,@Now),@DayStart)
set @DayStart = DATEADD (hh, -DATEPART(hh,@Now),@DayStart)

return @DayStart 
END
Run Code Online (Sandbox Code Playgroud)

编辑:我的日期转换没有问题(除非它不知道如何处理星期五).我需要帮助返回没有行的部分.

样本数据:

JobNumber …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2000

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