标签: sql-server-2008

query optimization: time intervals

In the main, I've got two kinds of time intervals:

presence time and absence time

absence time can be of different types (eg breaks, absences, special day and so on) and time intervals may overlap and / or intersect.

It is not for sure, that only plausible combinations of intervals exist in raw data, eg. overlapping presence-intervals don't make sense, but may exist. I've tried to identify resulting presence-time intervals in many ways now - for me, the most comfortable …

performance sql-server-2008 sql-server-2008-r2 query-performance

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

无法在单用户模式下连接到 sql server

我已经开始我SQL Server 2008 sqlcst02\inst01Single User Mode通过附加;-m到该实例在启动参数结束SQL Server Configuration Manager。我已经停止SQL Server Agentinst01实例。我的帐户是 的成员,Domain Admin group我尝试使用登录sqlcmd -S sqlcst02\inst01并不断收到错误,提示该服务已进入Single User Mode且只有一个管理员可以登录。我尝试添加;-m"sqlcmd"到启动参数以将连接限制为仅,sqlcmd但我得到了相同的结果。我已经尝试以我自己的帐户登录并以本地管理员帐户登录。我已经以我自己和管理员的身份启动了命令提示符,但我得到了相同的结果。我试过使用ADMIN:sqlcst02\inst01in连接SSMS。没运气。

我正在尝试重置sa密码,因为以前的管理员没有为我留下这些信息。这令人抓狂。我以前在其他机器上这样做过,没有任何问题。

sql-server-2008 sql-server

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

缩小 SQL Server 2008 R2 后手动设置日志文件大小

我现在正在成为一名在工作中有点不自觉的 DBA,真的需要一些帮助。

我们在完全恢复模式下有一个 40GB 的数据库,没有配置日志备份和一个 84GB 的巨大日志文件。到目前为止,我挽救这种情况的计划是在数据库上运行完整日志备份,缩小日志文件并制定维护计划,每晚使用数据库备份运行日志备份,以帮助控制它。

我的问题是我不希望日志文件缩小到零并在星期一的第一个早上不断增长。我对文件应该是什么(大约数据库的 20%)有一个粗略的估计,并希望从一开始就设置它以确保尽可能多的连续空间。这只是在数据库属性-> 文件下更改“初始大小”的情况吗?我也猜想数据库需要离线才能发生这种情况?

提前致谢

sql-server-2008 transaction-log

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

镜像数据库上的事务日志维护

SQL Server 版本:2008 R2 Enterprise SP2

我正在尝试处理我们的 SQL Server 维护,但我遇到了一些我认为不正确的事情。我们有一个带有 3 个数据库的单个生产实例,每个数据库都异地镜像到一个 DR 实例。

在查看 DR 实例时,我注意到 LDF 文件很大,对于频繁使用的数据库超过 35GB。

我知道这可能是由于镜像数据库处于完全恢复模式并且日志从未备份过,它们只会继续增长,直到驱动器空间耗尽。

我们在主体数据库上做日志备份,我的问题是在镜像上做日志备份有什么问题?

在进行日志备份之前,必须至少完成一次来自镜像的完整数据库备份,在这种情况下,是否需要使用特殊选项,因为它是镜像?

这也是MIRROR数据库上的事务日志维护建议。

感谢您提供任何意见

sql-server-2008 sql-server mirroring transaction-log

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

SSIS 2008 包配置被忽略

当我在命令行上指定 /ConfigFile something.dtsConfig 时,2008 年包配置与 2005 年相比发生了变化,包中定义的变量将保留其设计时值,而不是使用配置文件中的设置。

我不太确定我完全理解如何获取要使用的外部配置文件。我读过一些文章,说只有设置的设计时配置才会覆盖外部文件的负载。这是否意味着我可以将变量更改为空字符串,然后它们会被覆盖?我不能完全删除变量!整数呢?

我看过一些文章提到使用包中的包配置关闭。

我可以使用 SSIS 包编辑器或 XML 编辑器来更改包中的配置文件路径,然后它将“最后”使用该文件的设置(无论外部 /ConfigFile 选项如何),但我不想成为改变包。我想要一个带有 Test.dtsConfig 和 Production.dtsConfig 的包,并且能够在不更改包的情况下来回交换。

现在推荐的方法是什么?

sql-server-2008 sql-server ssis

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

TempDB 不会收缩。没有未结交易

我在 SQL 2008 上有一个 TempDB,它变得非常大(> 40gb),我想缩小它。我已经通过 Management Studio 使用了 dbcc 收缩数据库、dbcc 收缩文件和收缩命令。

我收到以下错误:

页面 1:4573184 无法移动,因为它是工作表页面。

通过运行 DBCC FREEPROCCACHE 并重新运行其中一个收缩例程,我已经能够回收一​​些空间使我脱离危险,但显然这并不理想,而且可能只会给我争取一点时间。

我已经运行 DBCC OpenTran 并且没有任何东西挂在那里。

我在互联网上读到的所有地方都归结为回收 SQL Server ……肯定有更好的方法……有人吗?

谢谢,

汤姆

sql-server-2008 shrink tempdb

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

从查询中插入缺失的日期

如何从我创建的查询中插入缺失的日期。结果如下:

Date          Frequency
2014-05-18    5
2014-05-20    7
2014-05-25    7
2014-05-27    6
Run Code Online (Sandbox Code Playgroud)

我希望结果缺少值为 0 的日期,如下所示:

Date          Frequency
2014-05-18    5
2014-05-19    0
2014-05-20    7
2014-05-21    0
2014-05-22    0
2014-05-23    0
2014-05-24    0
2014-05-25    7
2014-05-26    0
2014-05-27    6
Run Code Online (Sandbox Code Playgroud)

请注意,我对服务器具有只读访问权限。

sql-server-2008

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

我的 COUNT CASE WHEN 语句中是否隐含了 ELSE 0?

COUNT(CASE WHEN [Column A] = ____ THEN 1 END 和 和有COUNT(CASE WHEN [Column A] = ____ THEN 1 ELSE 0 END什么区别?

我一直在使用前者,到目前为止我还没有看到区别;添加的原因是什么ELSE 0- 是否存在 SQL Server 计数错误的情况?

sql-server-2008 sql-server

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

为什么 suser_name() 不会反映 AD 帐户名称更改?

我们的一个用户的名称已合法更改,因此我们更改了他们的 Active Directory 用户名以匹配 - 从域\旧名称到域\新名称。但是,当此用户在存储过程中调用 suser_sname() 时,它返回旧名称,而不是新名称。

谷歌搜索让我找到了KB 946358,这表明他们的名字被缓存在服务器上并且没有更新,大概是因为 suser_name() 正在调用 LsaLookupSids。但是,该文章中的解决方法涉及重新启动服务器,即使是这样,我仍然想了解问题所在。

如果我将上下文更改为他们的上下文,则会返回正确的名称:

EXECUTE AS LOGIN = 'domain\newname'
GO
SELECT suser_name()   --returns 'domain\newname'
Run Code Online (Sandbox Code Playgroud)

...我会假设这也会调用 LsaLookupSids,因此会返回不正确的名称。我似乎不太了解这里的工作机制。

一些可能重要的观察结果:

  • 此用户在服务器上没有显式登录。但他们是这样做的 AD 组的成员。更改后的名称 (domain\newname) 出现在结果集中exec xp_logininfo 'domain\ADGroupName', 'members';域\旧名称没有。

  • 用户从存储过程中调用 suser_name(),从 Access 2003 MDB 中的直通查询调用。

  • 过去我们更改了大量用户的帐户名称,但仅在上周才发现此问题(上周进行了两次更改,似乎都出现了此问题)。

  • 服务器在 Windows 2008 R2 数据中心版上运行 Sql Server 2008 SP3 x64。

这是怎么回事?作为 DBA,我可以做什么或者我可以在哪里解决这个问题?

sql-server-2008 ms-access sql-server active-directory

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

计数(*)超过()

我有一个COUNT(*) OVER ()作为查询的一部分来获取大量数据,其中包含大约 15 个表的连接(有些大,有些小)。这里计数的最佳解决方案是什么?

  1. 单独查询以查找计数。
  2. COUNT(*) OVER () 作为获取数据的查询的一部分(因为它将计算每一行的计数?!)
  3. 或查询以获取计数并结合查询以获取数据。(当然,我必须为数据查询要获取的所有其他列设置 null。)

sql-server-2008 sql-server window-functions

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