小编Mic*_*een的帖子

在数据序列中选择“边缘”记录

我有一个按日期顺序运行的项目表,每个条目都有开始和结束:

ID | Start            | End
----------------------------------------
1  | 2012-08-20 00:00 | 2012-08-20 23:59 
2  | 2012-08-21 00:00 | 2012-08-21 23:59 
3  | 2012-08-22 00:00 | 2012-08-22 23:59 
4  | 2012-08-23 00:00 | 2012-08-23 23:59 
5  | 2012-08-24 00:00 | 2012-08-24 23:59 
6  | 2012-08-28 00:00 | 2012-08-28 23:59 
7  | 2012-08-29 00:00 | 2012-08-29 23:59 
8  | 2012-08-30 00:00 | 2012-08-30 23:59
Run Code Online (Sandbox Code Playgroud)

请注意,数据中存在差距(周末和银行假期)。是否可以编写一个查询来选择间隙边缘的记录?我想要的是一种通用的方式来结束这样的事情:

ID | Start            | End
----------------------------------------
1  | 2012-08-20 09:00 | 2012-08-20 23:59 
2  | 2012-08-21 …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server-2008 t-sql gaps-and-islands

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

没有导出为 SQL 选项

作为 CMS,我使用 Wordpress。我想导出整个类别(Windows 8),所以我运行 SQL 命令:

SELECT * FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
WHERE (wp_term_taxonomy.term_id = 15
   AND wp_term_taxonomy.taxonomy = 'category'
   AND wp_posts.post_type = 'post'
   AND wp_posts.post_status = 'publish');
Run Code Online (Sandbox Code Playgroud)

我得到了表,但后来我无法导出为 SQL(没有选项) - 很奇怪。有没有办法只将选定的表导出为 SQL?

在此处输入图片说明

phpmyadmin

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

Sql Server 代理是系统管理员角色的一部分,即使 Sql Server 说它不是

我创建了一个除域用户之外没有额外权限的 Windows 帐户,并使用 SQL Server 配置管理器将其设置为 SQL Server 代理服务帐户。

BoL/MSDN 表示该用户应该是 sysadmin 角色的一部分才能工作,但目前我还没有采取任何操作来实现这一点。

我预计该帐户无能为力,但看起来它是......系统管理员!如果您将以下语句放入作业步骤中,它将确认这一点:

IF IS_SRVROLEMEMBER ('sysadmin') = 1 print 'sysadmin'
Run Code Online (Sandbox Code Playgroud)

该作业步骤是一个 t-sql 步骤,所有者为 sa,因此使用 SQL Server 代理服务帐户。

现在回答这个问题。SQL Server 配置管理器似乎做了一些事情,使其成为系统管理员,或者至少在执行该步骤时如此。但同时它不会显示在 GUI 中的系统管理员列表中。

我提出的所有报告或查询(包括 SSMS)均未将此 Windows 帐户列为 sysadmin 角色的一部分。

我有一种感觉,我正在忽略某些东西。

security sql-server permissions sql-server-agent

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

部署脚本总是重新创建约束和索引

从 SSDT 生成部署脚本时,它总是生成删除外键约束和索引的代码,然后再次创建这些约束和索引。生成部署脚本时如何删除删除并重新创建这些对象的代码?SSDT 中的任何选项?

sql-server deployment sql-server-2008-r2 ssdt

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

一个事实有多少个日期维度

关于设计星型模式:我在事实表中有三个日期列fact_table (insert_date, trade_date, close_date ...)。而且我不知道应该创建多少个日期维度?

在此处输入图片说明

案例 1:昏暗 A 。这意味着:一行@fact_table 有三个 FK 到 A。

情况 2:Dim A(用于 insert_date)、Dim B(trade_date)、Dim C(close_date)。这意味着:一行@fact_table 有一个 FK 到 A,一个 FK 到 B,一个 FK 到 C。

问题:应该创建多少个日期维度?

data-warehouse

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

SQL Server CLR 过程和 SQLCLR_QUANTUM_PUNISHMENT

我有一个在 SQL Server 2014 上运行的 CLR 存储过程。这个存储过程收集一些数据(通常在数万行范围内编号),对数据运行一些计算,生成一个输出数据集,并写入该输出数据集到几个目标表。对于小型运行,这需要几秒钟。对于我们较大的运行,目前大约需要 25 分钟。在这 25 分钟内,我们观察到大量 SQLCLR_QUANTUM_PUNISHMENT 等待。所以我试图让自己了解我们可以做些什么来减少这些等待的发生。我发现大量资源告诉我,“当 CLR 任务因超出其执行量而受到限制时发生。这种限制是为了减少此资源密集型任务对其他任务的影响。” 和我' 已经读过 SQL Server 的执行时间为 4 毫秒。那么我是否可以假设任何时候 CLR 存储过程或函数占用超过 4 毫秒的 CPU 时间,都会发生这种等待类型?

另外,我找到了一个参考资料,指出某些 CLR 过程应该产生. 现在,我们的 CLR 过程是单线程的。我当然可以在关键位置添加一些睡眠调用,看看会产生什么样的影响。但我想更好地了解正在发生的事情。因此,如果有人有一些好的知识可以分享或有一个好的文档/文章的链接,我将不胜感激。在 BOL 引用之外查找有关此等待类型的信息有点困难。

sql-server wait-types sql-clr sql-server-2014

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

某些 sql server 表中没有主键

我已将 WorldWideImporters 数据库下载为标准数据库(SQL Server 的 Microsoft 示例数据库)。在这个数据库中,一些表没有主键,但可以看到聚集索引。谁能告诉我为什么有些表在没有 PK 的情况下工作?是什么原因?

任何意见将不胜感激!

database-design sql-server primary-key sql-server-2016

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

如何为同一数据库的不同表生成全局唯一ID?

在 SQL Server 上的生产系统中,所有表中的所有 ID(主要是 PK)都是自动生成的,我被告知它们在全局是唯一的。我的意思是数据库中没有 2 个 ID 是相同的,即使表不同。我想知道如何做到这一点?如果有多种方式,请一一列出。谢谢。

sql-server unique-constraint

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

当预期为 0 时,MSSQL Geography STIntersects 返回 1

我遇到了一个无法解释的 MSSQL 地理问题。假设我在数学上受到挑战,但似乎以下点不应与以下多边形相交:

DECLARE @t_point geography;  
DECLARE @t_polygon geography;
set @t_polygon = geography::STPolyFromText('POLYGON((1 1, 5 5, 5 0, 1 1))', 4326);
set @t_point = geography::Point(0, 0, 4326);


select
  @t_polygon.STAsText(), 
  @t_point.STAsText(),
  @t_point.STIntersects(@t_polygon), 
  @t_polygon.STIntersects(@t_point);
Run Code Online (Sandbox Code Playgroud)

但是,当我执行此操作时,会得到以下结果:

POLYGON ((1 1, 5 5, 5 0, 1 1))  POINT (0 0) 1   1
Run Code Online (Sandbox Code Playgroud)

最后两列都是 1,我期望为 0。空间中 0,0 处的点如何与不接触或包含 0,0 的多边形相交?

-1, -1 与 100, 100 具有相同的行为。

即使我将点更改为完全不同空间中的多边形,MSSQL 也会说它们相交。

set @t_polygon = geography::STPolyFromText('POLYGON((10 10, 50 50, 50 10, 10 10))', 4326);
set @t_point = geography::STPolyFromText('POLYGON((1 1, 5 …
Run Code Online (Sandbox Code Playgroud)

sql-server spatial

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

为什么估计记忆具有三相形状?

其他问题的图表适用于 100 万行的表。当绘制 10,000 行时,该图具有相当不同且更有趣的形状。

在此输入图像描述

当列长度在 524 到 903 之间时,会出现一个平台期。

这种形状可以在我的工作和家用笔记本电脑上看到。(分别是 SQL Server 2017 CU27 和 2017 CU22、2019 CU8。两个盒子都有 16GB RAM。)

不同版本之间的斜率略有不同。 在此输入图像描述

这让我认为这是经过调整的真正设计选择,而不是人工制品。

对于 SQL Server 2019 设置 BATCH_MODE_ON_ROWSTORE = OFF 几乎没有任何区别。除 t800 为 6688kB OFF 和 6656kB ON 外,所有大小所需的内存都是相同的。

这个图怎么会是这个形状呢?哪些考虑因素意味着三区域解决方案在中等行数(10,000 行)时是最佳的,但在较大行数(100 万行)时则不是最佳?

据我所知,SQL Sever 开发团队之外的任何人都无法最终说明该特定图形为何呈这种形状。但一般来说,从学术和行业经验来看,如果我开始为假设的 DBMS 编写内存管理模块,什么样的考虑会导致这种结果?

sql-server memory-grant

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