我正在使用扩展事件为 SQL Server 设置监控系统,以便为我们的开发人员查找大量查询作为“生产反馈”。我正在使用事件sp_statement_completed和sql_statement_completed,并在 cpu_time、逻辑读取等上使用谓词过滤器。我希望将结果汇总database_name并query_hash喜欢在互联网上的众多示例中展示的结果,但在结果中我看到query_hash所有语句都是 0使用 EXEC,如下表所示(为了便于阅读,缩短了时间戳和查询哈希)。
name timestamp query_hash plan_handle statement
sql_statement_completed 2016...6414 0 050056019600764... exec Shared.dbo.SyncFirm
sql_statement_completed 2016...9946 0 06003d00e01e730... exec spSetUserAuth @userid;
sql_statement_completed 2016...7184 0 0600e30028c9da0... exec spSetUserAuth @userid;
sp_statement_completed 2016...0409 9826...578 0600c00028e6aa0... SELECT obfuscated_columns FROM dbo.SomeTable
sp_statement_completed 2016...1448 8660...775 060084006d2d660... INSERT INTO dbo.SomeTable ( obfuscated_columns) EXEC(@sql)
sql_statement_completed 2016...7752 0 0600f9006c23f03... exec spSetUserAuth @userid;
sql_statement_completed 2016...1443 1304...641 06005a0008a9b11... select SUBQ.ontrackstatus, COUNT(SUBQ.ontrac
Run Code Online (Sandbox Code Playgroud)
所有结果都有其价值,plan_handle而且它们都不同,因此正在制定很多计划。其他没有query_hash(我见过的)语句包括 ALTER …
我有一个 SQL Server 2014 的生产实例,我需要对其进行一些轻度维护。
本质上,我需要在单个事务中替换两个整个表的内容。我想防止任何人在数据更改正在进行时查询任一表。桌子很小,我希望操作不到几秒钟。
不幸的是,我没有为此安排停机时间的好处。
所以问题是如何一次锁定多个对象 - 甚至整个数据库?
理想情况下,我可以简单地获取数据库级锁,进行更改,然后释放锁,但这在 SQL Server 2014 中似乎是不可能的。
我有一个 Microsoft Dynamics AX SQL Server 数据库。我只是DBCC CHECKDB为了检查完整性而运行。几分钟后,我得到了以下结果:
CHECKDB在数据库“AXPROD”中发现 0 个分配错误和4 个一致性错误。repair_rebuild 是 DBCC CHECKDB (AXPROD) 发现的错误的最低修复级别。DBCC 执行完成。如果 DBCC 打印错误消息,请联系您的系统管理员。
由于我遇到了 4 个一致性错误,我想知道是否有办法解决这个问题,或者是否有办法获得有关这些错误的更多详细信息。
我正在使用 3 层应用程序 Microsoft Dynamics AX,其中中间层维护与 SQL Server 的连接。几个客户端连接到这个中间层服务器。
中间层服务器通常有几个连接到 SQL Server,所以我很确定它们正在池中,但是没有关于如何实现的文档。
通常情况下,我们可以不涉及SPID的用户或客户端应用程序,但在这里我们可以设置一个注册表项(具体到Microsoft Dynamics AX),这使得在提供这些信息的选择context_info的领域sys.dm_exec_sessions。
同样,没有关于如何实现的文档。我们在这方面的唯一信息是MSDN 上一个模糊的博客条目。
帖子提到
添加此信息的性能开销很小。
因此,我们不知道任何实现细节,例如:
有什么方法可以确定服务器端连接池的工作方式以及 context_info 的影响是什么?
更新:
从这里使用这个查询
SELECT des.program_name,
des.login_name,
des.host_name,
-- der.database_id,
COUNT(des.session_id) AS [Connections]
FROM sys.dm_exec_sessions des
INNER JOIN sys.dm_exec_connections DEC
ON des.session_id = DEC.session_id
WHERE des.is_user_process = 1
--AND des.status <> 'running'
GROUP BY des.program_name,
des.login_name,
des.host_name
-- ,der.database_id
HAVING COUNT(des.session_id) > 2
ORDER BY …Run Code Online (Sandbox Code Playgroud) 自 6 月下旬以来,我们的生产数据库服务器(Windows Server 2008 R2 DC 上的 SQL 2008 R2 Enterprise)在其夜间 DBCC CheckDB (Prod_DB) 期间遇到了一个奇怪的错误。那时,同样的工作一直运行良好。
我已将完整备份从该服务器恢复到测试服务器,数据文件似乎没问题,DBCC CheckDB 在那里没有返回任何错误。
我上周应用了这个修补程序,但没有解决问题。
https://support.microsoft.com/en-us/kb/967351/en-us
该消息听起来很严重,但是,应用程序在其他方面正常运行。所以我不确定我在这里吃的是什么。
如果有人可以分享任何建议,将不胜感激。
以下是来自 SQL 代理作业历史记录的错误消息:
Date 7/28/2015 4:02:00 AM
Log Job History (DBCC Check DBs)
Step ID 1
Server XXX
Job Name DBCC Check DBs
Step Name check dbs
Duration 00:12:37
Sql Severity 17
Sql Message ID 823
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0
Message
Executed as user: XXX. During undoing of a logged operation …Run Code Online (Sandbox Code Playgroud) 我想知道我的用户的平均年龄并执行以下操作:
# SELECT avg(age(birthday)) FROM "user";
avg
------------------------------------------
33 years 10 mons 32 days 08:33:10.577946
Run Code Online (Sandbox Code Playgroud)
天数是什么意思?怎么可能超过31天?
我有 3746 条记录,而且我在 UTC 时区。
PS:我使用的是 Postgres 9.5.3
这是如何有效的语句(其中 id 是表的主键):
select * from table group by id ;
Run Code Online (Sandbox Code Playgroud)
这不是:
select * from table group by name ;
Run Code Online (Sandbox Code Playgroud)
错误:列“pgluster.id”必须出现在 GROUP BY 子句中或用于聚合函数中
小提琴。
问题是为什么第一个是合法查询,即为什么按主键分组是有效的?
我在 SSRS 中遇到了一个反复出现的问题,其中“坏”报告会发送给客户。问题是我们的报告包含多个子报告,并且一个或多个子报告将无法处理。当子报告无法处理时,报告会发送错误消息代替子报告并且没有实际数据。
我的问题是,如果子报告失败,有没有办法阻止报告发送?
理想情况下,我希望外部报告只返回一个错误。有没有办法让 SSRS 报告中的错误状态升级到外部范围?是否有我们可以强制执行的编码标准可以防止这个问题?
我们目前同时使用 SSRS 2008r2 和 SSRS 2016。
我正在使用 SQL Server 2016(开发人员版)并希望在我的服务器实例中创建数据库的副本。我做了一个简单的备份,然后通过再次右键单击数据库-> 任务-> 恢复来恢复。
通过更改数据库的名称,数据库确实在新创建的数据库中恢复。到现在为止还挺好。但是,我开始使用的原始数据库以及我从哪里开始恢复,会处于 (Restoring...) 状态,这是无法以正常方式更改的。
当然,我知道如何在不产生此问题的情况下以不同的方式恢复数据库,并且我的原始数据库再次运行,但我的问题是:
这是正常行为吗?我想我偶然发现了一个错误。
sql-server ×8
dbcc-checkdb ×2
postgresql ×2
group-by ×1
locking ×1
restore ×1
select ×1
ssms ×1
ssrs ×1
ssrs-2008-r2 ×1
ssrs-2016 ×1