标签: sql-server-2012

OLE DB 错误 0x80004005 使用复制数据库向导

背景:在 Windows Server 2012R2 上新安装的 SQL Server 2012 SP3。

问题:当我使用复制数据库向导将数据库从server2复制到server2 时,我收到:

尝试在 SQL 上查找文件夹时遇到 OLE DB 错误,错误代码为 0x80004005(登录超时已过期)。

是的,我使用向导在同一台服务器上制作数据库副本。(会计软件和测试目的。)当向导尝试创建 Integration Services 包时,我收到此错误。同样重要的是,当我从我的计算机使用 SMSS 时会发生这种情况。我是这个 SQL Server的系统管理员。我什至将我的用户添加到此 Windows Server 的管理员组。

我们有一个旧的 server1,它的配置方式与 server2 非常相似。我检查了我想到的每个设置,两个配置看起来都一样。SSIS 包执行中没有代理,没有用户。

我可以从复制数据库服务器1服务器1服务器2Server1上没有任何问题。

看起来我没有足够的位置权限:server2_server2\DTS Packages\Copy Database Wizard Packages不管它是什么。

从理论上讲,我每次都可以使用 RDP 到服务器和域管理员帐户,但这在......后面很痛苦。还有会计软件支持,具有高 SQL 权限但不能具有域管理员。

我用谷歌搜索了这个,通常是关于 SQL Server 2008 和运行一些自定义包。

sql-server migration ssms ssis sql-server-2012

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

一次性将所有代理作业的 SQL 代理输出添加到文本文件中

作为最佳实践,我正在尝试安排一个活动,其中所有 SQL 代理作业都应将输出记录到文本文件中。

手动我可以为单个工作执行此操作。但是我正在通过脚本或任何好的方法寻找更好的方法,我可以为每个服务器大约 80-90 个作业的多个作业进行此更改。

此外,我必须在 QA、UAT 和 prod 中执行此操作,涵盖 100 多台服务器。

请分享您的经验或任何有用的链接,这是如何以最佳方式实现的,因为生成输出的日志文件的路径应该在服务器/作业之间通用。

sql-server sql-server-2012 sql-server-agent jobs

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

Seek 谓词中的标量运算符和 1 的行估计

我试图了解我在查询计划中看到的一些相当大且不守规矩的行为。特别是,我正在查看在其谓词中包含标量操作的聚集索引查找操作。我怀疑标量操作只是其中一个表的别名(如Seek Predicate中的标量运算符中所述),因为两列的类型相同,并且此操作馈入并行嵌套循环(左外连接)运算符。

不过,我的问题更多是关于 1 的行估计,而不是更接近实际行数(约 670 万)的数字。标量操作是否会扼杀优化器正确估计行的能力?我假设是这样,也假设这会损害我的查询执行计划的最佳状态,但我不确定。有人可以证实或反驳我的怀疑以及为什么吗?

这是有问题的操作:

在此处输入图片说明

版本:SQL Server 2012 企业版

sql-server execution-plan sql-server-2012

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

sp_tables 阻塞了我的其他语句。谁运行它?

在我们的应用程序中,我们偶尔会遇到由执行sp_tables语句引起的锁定问题。

我们使用 SQL Server 2012。在我们的代码和存储过程中的查询中,我们不使用sp_tables.

我如何才能追踪谁是这次通话的责任人?至少我如何在发生此调用时登录?

我读到它也被第三方调用,在这种情况下,我如何跟踪谁负责?

编辑:

在我们的应用程序中,我们使用 Hibernate 作为 ORM,使用 c3p0 作为连接池。

编辑 2: 我们没有成功理解 sp_tables 的调用时间和调用者,但今天我们成功复制了这个问题。

似乎调用 sp_tables 以响应尝试对架构进行的失败删除。

删除失败,因为还有其他行引用了我们尝试删除的行,因此我们收到异常

SQLServerException: The DELETE statement conflicted with the REFERENCE constraint..

是否有证据表明此类错误会触发数据库上的 sp_tables?

sql-server audit sql-server-2012 blocking

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

GDR安全更新和CU安全更新有什么区别

GDR 安全更新和 CU 安全更新有什么区别?

我希望了解以下两个更新之间的区别。如果我申请 KB3194724,它是否也包括 KB 3194721?

  1. 内部版本 11.00.6567(3194724 MS16-136:SQL Server 2012 Service Pack 3 CU 安全更新说明:2016 年 11 月 8 日)

  1. 对于 SQL Server 2012,内部版本 11.0.6248.0(3194721 MS16-136:SQL Server 2012 Service Pack 3 GDR 安全更新说明:2016 年 11 月 8 日)?

如果 SQL Server 2012 在 SP3 上,我应该应用哪一个?

sql-server sql-server-2012 patching

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

查找不显示主机名的 spid 源

我有一个繁忙的 SQL 2012 服务器,其中到一个特定数据库的连接(使用相同的 SQL 登录)不显示“主机名”,我需要找出这些连接来自哪个(几个)框。

我已经尝试了所有正常的内置和第三方工具(master.sys.processessys.dm_exec_sessionssp_who2sp_WhoIsActive,SSMS的活动监视器,甚至是SQL事件探查器和井寺诊断经理),他们都不能给我的服务器的主机名/客户端这些连接背后,大概是因为它们都使用相同的底层系统表/视图。

我也可以使用 IP 地址,但也看不到任何方法可以从 SQL 中确定该地址。

如果这是任何帮助:

  • sys.dm_exec_sessions显示client_interface_name是 ODBC
  • program_name两者都没有捕获
  • 用户是一个 SQL 帐户,恰好是 SYSADMIN(是的,我知道...)

我在这里找到了一个相关的问题(尽管来自另一边),但没有得到解答。

在这一点上,我很想禁用用户,以便我可以在 SQL 错误日志中捕获一些失败的登录,但我认为应用程序团队不会对此感到满意。

sql-server sql-server-2012 connections

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

在拆分层次结构中查找丢失的文件夹路径

我有一个包含文件夹路径的表。该表包含四列:

  • DirID - 文件夹的 ID。
  • BaseDirID- 层次结构中第一个文件夹的 ID。因此,来自同一层次结构的所有文件夹(路径)在此列中共享相同的值。
  • DirLevel - 文件夹的深度。
  • DisplayPath - 文件夹的路径。

我需要找到层次结构中这些文件夹之间的所有“差距”。

示例数据例如:

DirID BaseDirID DirLevel DisplayPath
1         1        1     'A'
2         1        3     'A\B\C'
3         1        5     'A\B\C\D\E'
4         1        3     'A\B\F'
5         1        5     'A\B\F\G\H'
6         2        1     'U'
7         2        3     'U\V\W'
8         2        5     'U\V\W\X\Y'
9         2        3     'U\V\M'
10        2        5     'U\V\M\L\O'
Run Code Online (Sandbox Code Playgroud)

所以我们需要找到以下数据:

BaseDirID   DisplayPath
1           'A\B'
1           'A\B\C\D'
1           'A\B\F\G'
2           'U\V'
2           'U\V\W\X'
2           'U\V\M\L'
Run Code Online (Sandbox Code Playgroud)

注释:

  1. 该表包含超过250,000条文件夹的记录,因此我们寻求最有效的方法来执行此操作,否则脚本将卡住很长时间,我们没有时间。 …

performance sql-server hierarchy sql-server-2012 query-performance

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

如何管理大型、大量使用的数据库中的日志文件大小

我们是一个数学家团队(即,没有 DBA 经验)。

我们在 SQL Server 2012 中有一个大型数据库。它有超过 2 TB 的数据(数百个表,每个表有数百万行和数百列宽)。每个月,我们都会收到一系列数据的添加和修订,这要求我们通过删除、替换或更新大部分或所有表来对数据库进行大量更新。

我们的工作主要集中在制定 SQL 逻辑来计算我们需要的结果。我们没有运行实时呼叫中心。我们根据需要应用了一些索引,我们对性能非常满意。

问题是日志文件。自然地,日志文件随着如此多的数据操作而增长和增长。我们的日志文件目前大约为 1 TB。我们有大量的磁盘空间,但不是无限的。

根据我们在 Internet 上的阅读,我们了解到日志文件对于事务完整性、回滚和恢复是必需的。但就我们的特定目的而言,我们并不关心这些。我们可能永远不会执行回滚,也永远不会尝试恢复。更糟糕的是,我们只需再次下载数据文件并从头开始创建一个新数据库。

我们真的只是希望日志文件消失并且永远不会回来。

我们将数据库恢复模式设置为简单,天真地认为这意味着“无恢复模式”,但我们很快就消除了这些幻想。

我们也明白有很多错误的事情不能做(分离、收缩等)。我们只是不知道正确的做法。

也许有人会建议我们设置日志文件增长的限制。但是,这留下了两个问题:(1) 我们如何摆脱已经存在的 1 TB?(2) 我们之前尝试过,当我们接近指定的限制时,我们开始在这里、那里和任何地方收到错误 9002(日志文件已满)。所以现在我们害怕应用大小限制。

我们如何在没有任何伤害的情况下告诉数据库“没有日志文件,请”?

sql-server sql-server-2012

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

恢复事务日志时出错

我正在尝试恢复数据库日志,但是我收到以下消息:

消息 4305,级别 16,状态 1,第 3 行
此备份集中的日志从 LSN 76120000013549400001 开始,它太新,无法应用于数据库。可以还原包含 LSN 75428000036693300001 的早期日志备份。
消息 3013,级别 16,状态 1,第 3 行
RESTORE LOG 异常终止。

什么是 LSN?

如何确定哪个备份包含正确的 LSN?

sql-server sql-server-2012 transaction-log

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

从聚集索引中找到每个项目最早日期的最佳方法是什么

我有一个 SQL Server 2012 表,其中包含这样的列:

ID int NOT NULL,
EventDate datetime NOT NULL,
... 32 other columns...
Run Code Online (Sandbox Code Playgroud)

其中该表在大约 10000 个不同的 ID 值范围内有大约 50 亿行。

该表有一个唯一的聚集索引,如下所示:

CREATE UNIQUE CLUSTERED INDEX [MyIndex] ON [dbo].[MyTable] (
    [ID] ASC,
    [EventDate] ASC
)
Run Code Online (Sandbox Code Playgroud)

我需要找到最早的每个 ID 的 EventDate,我可以使用以下查询获得它:

SELECT ID, min(EventDate) FROM [dbo].[MyTable] GROUP BY ID
Run Code Online (Sandbox Code Playgroud)

但是,此查询只需不到 2 分钟即可完成。

由于 NDA 限制,我无法分享我正在查看的问题的细节(查询计划等),但我可以建议我看到的是聚集索引扫描,因此它正在检查表中的所有行。鉴于数据是按 EventDate 序列组织的,我希望检索速度会快得多,但我不太确定如何。任何其他特定于 ID 的范围查询都会在几毫秒内响应,并且该表最近已重建并重新编制索引,因此我认为没有任何统计更新会有所帮助。

任何人都可以建议一种更好的方法来确定避免扫描整个聚集索引的最小 per-ID EventDate 值吗?

我确实有一个包含(10,000)个不同id值的表格。

performance sql-server sql-server-2012 greatest-n-per-group query-performance

5
推荐指数
2
解决办法
509
查看次数