我有一个查询来检索基于来自 dm_exec_query_stats DMV 的总逻辑读取的前 10 个查询。
SELECT TOP 10
SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1),
db_name(qt.dbid) as db_name,
qs.execution_count,
qs.total_logical_reads,
qs.total_worker_time,
qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
SUBSTRING(CONVERT(varchar(19),qs.last_execution_time),1,19)
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_logical_reads DESC
Run Code Online (Sandbox Code Playgroud)
查询返回所有请求的信息,除了查询来自或指向的数据库的名称。无论我使用 dm_exec_sql_text 还是 dm_exec_query_plan 结果都是一样的。
db_name(qt.dbid) 作为 db_name dm_exec_sql_text
或者
db_name(qp.dbid) 作为 db_name dm_exec_query_plan
两者都返回 NULL 或 tempdb 作为数据库名称。
选择 Reports -> Performance Top Queries by Average IO 时会出现同样的问题。

数据库名称为空。
但是,如果我将查询计划添加到查询中,然后在 SSMS 中打开查询计划,我可以通过将鼠标悬停在各种索引查找、扫描或 RID …
我们有一个 SCCM 2012 SP1 运行良好的主站点。然后我在另一台服务器上为 SCCM 安装了 CAS。先决条件要求我更改现有服务器上的排序规则。我这样做并同时运行了重建数据库命令。该站点的 SCCM 数据库以及报告数据库和临时报告数据库都已删除。我不得不将一些用户重新添加到实例中,并与重新附加的数据库(已删除的数据库)结合。我现在收到 SQL Server 错误,如下所示:
错误:18456,严重性:14,状态:
5。2013-11-20 16:28:44.73
用户“DOMAIN\MACHINENAME$”登录失败。原因:找不到与提供的名称匹配的登录名。[客户: ]
SCCM 用户自动发现不起作用,因为 AD 中的新用户没有被写入数据库,可能是由于这个原因。我重新创建了本地计算机用户并检查了数据库和服务器之间的 NT AUTHORITY\SYSTEM、NT AUTHORITY\NETWORK SERVICE 和 DOMAIN\MACHINENAME$ 用户匹配,并且 SID 都匹配。为此,我使用了:
select * from sys.database_principals
select * from sys.server_principals
Run Code Online (Sandbox Code Playgroud)
所有连接都是本地连接并使用 Windows 身份验证。SCCM 数据库的所有者是“sa”并且 SID 匹配。TCP/IP 和命名管道已启用,用于连接的端口是静态的。以上 3 个用户在服务器上设置为 sysadmin。
有任何想法吗?
在我搜索 SQL Server 2012 Express with Advanced Services 的任何地方,我都得到了这个链接,http://www.microsoft.com/en-us/download/details.aspx?id=35579,每次我安装它时,我看不到在哪里可以添加报告服务作为功能。
是否有另一个包含 Reporting Services 的安装文件,或者我现在确实拥有它但无法判断它已安装?我去了控制面板 -> 管理工具 -> 服务已经没有看到它列出来,这告诉我它没有安装?
更新:我已按照 Kin 的指示进行操作,但无法进一步推进。这就是我现在所在的地方。在 Reporting Services 配置管理器中,“连接”按钮呈灰色,当我单击“查找”时,我收到“无法连接到 Reporting Services...”的错误消息,请参见下文。

当我转到 SQL Server 配置管理器时,我没有看到 Reporting Services 作为列出开始停止的服务。见下文。

因此,在我看来,也许我没有安装 Reporting Services,所以我尝试安装这些功能,但没有将 Reporting Services 列为要添加的可用功能。见下文。我知道我下载了 .exe 文件,其中包含可供下载的所有内容,包括 Reporting Services。我的下一步应该是什么来进一步排除故障?我很想卸载并重新安装,但我不确定我是否可以正确卸载。似乎有很多与 SQL Server 2012 相关的文件,我不确定这会如何影响我目前安装的 Visual Studio。顺便说一句,我正在使用 Windows 7 进行本地桌面安装。

我已将两台 PostgreSQL 服务器配置为通过流式传输进行热备用。
我如何配置它以便当主服务器宕机时,从服务器将自动成为新的主服务器?
我们有一些遗留的 .bat 脚本,其中包含我们网络上现有 SQL Server 实例/数据库的 osql 命令。
我们已经尝试从我们的应用服务器 (Win Server 2008) 运行 .bat 脚本,但收到错误:“osql.exe' 未被识别为内部或外部命令”
我们希望我们不需要安装完整的 SQL Server 来访问 osql。
我听说你可以从客户端工具安装中获得它,只要连接到许可的 sql 服务器就不需要许可证。(我们会是)。
有人可以确认吗?“客户端工具”是安装光盘的一部分吗?
这是一个可行的解决方案吗?
谢谢大家的帮助!
我对 SQL Server Management Studio 非常陌生。我使用 Windows 身份验证连接到 SQL Server。但不确定我的工作是否会影响服务器数据库。我怎样才能确保不会弄乱更新和提交数据?
我有一个由实体框架生成的查询,它在 SQL Server 2005 数据库 (Microsoft SQL Server 2005 - 9.00.5000.00 (X64)) 上返回错误结果,但在 SQL Server 2012 (Microsoft SQL Server 2012 - 11.0.2100.60) 上运行良好。
这是查询:
SELECT
[Project2].[tableAid] AS [id],
[Project2].[rank1] AS [rank]
FROM ( SELECT
[Extent1].[id] AS [id],
[Extent2].[rank] AS [rank],
[Extent4].[rank] AS [rank1]
FROM [dbo].[tableA] AS [Extent1]
LEFT OUTER JOIN [dbo].[tableB] AS [Extent2] ON ([Extent1].[tableAid] = [Extent2].[tableAid]) AND (896 = [Extent2].[tableBid])
INNER JOIN [dbo].[tableC] AS [Extent4] ON [Extent1].[tableCid] = [Extent4].[tableCid]
) AS [Project2]
ORDER BY [Project2].[rank] DESC
Run Code Online (Sandbox Code Playgroud)
我已经简化了它,但模型是:
TableA
int …Run Code Online (Sandbox Code Playgroud) 我面临以下问题。
Run Code Online (Sandbox Code Playgroud)Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In当前行格式,768 字节的 BLOB 前缀内联存储。
它出现在我将图像上传到数据库时(它具有 <1Mb)。准确地说,只有 100kb。
我尝试了很多事情:更改属性“max_allowed_packet”、“innodb_log_file_size”(即,将大小增加到 512M)并没有什么......
我不知道麻烦的原因。
为了说明,表
TABLE(
`passeio` int(4) unsigned NOT NULL COMMENT 'identitificador do passeio',
`data_inclusao` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`nome_passeio` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`inicio` date NOT NULL,
`fim` date NOT NULL,
`por_que_ir` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`pdf_roteiro` mediumblob NOT NULL,
`incluso` …Run Code Online (Sandbox Code Playgroud) 我目前有一个 m3.medium 作为生产 PostgreSQL 服务器,但我想将它移动到具有多可用区功能的 RDS。
由于我们当前服务器的 CPU 使用率永远不会高于 5%,而且 RAM 使用率是 500MB,我正在考虑使用更便宜的实例,例如 RDS 上的 t2.small。在一些在线论坛和亚马逊帮助页面上,他们不推荐用于生产数据库的小型实例。这只是营销还是可能会出现一些真正的技术问题?
我发现 t2 和 m3 实例类型之间的唯一区别是可突增的 CPU,但由于我们的数据库服务器不使用任何 CPU,我想知道其他危险是什么。
考虑以下两种将日期时间 varchar 字符串转换为日期字段的方法:
SELECT convert(date, '2012-12-21 21:12:00', 20) -- Only date is needed
SELECT cast('2012-12-21 21:12:00' as date) -- Only date is needed
Run Code Online (Sandbox Code Playgroud)
两者都返回我期望的内容:不包括时间的日期,作为日期数据类型。
我的问题是:这两种方式有什么利弊吗?
sql-server ×6
amazon-rds ×1
aws ×1
blob ×1
cast ×1
dmv ×1
failover ×1
innodb ×1
installation ×1
mysql ×1
order-by ×1
postgresql ×1
replication ×1
sqlcmd ×1
ssms ×1
t-sql ×1