我有一个由外部公司开发的大型 PHP 应用程序,目前正在完成;我不能要求对其进行更改。它使用一个数据库 Microsoft SQL Server 2016,一些用户通过 SSMS 访问该数据库,包括我,以及在一天中的特定时间由一些计划任务访问。有时我会在一些表格中发现意想不到的内容,这很令人沮丧,因为我不知道它是什么时候到达的。我刚刚发现了时态表:知道记录更改的确切日期和时间将非常有用。
是否可以在应用程序中为 2-3 个关键表添加时态表,而无需更改 PHP 代码?是否存在兼容性或性能风险?
我已经在 SQL Server 2016 中实现了 Always Encrypted 功能。 CMK 的有效期为一年。如何更新或延长有效期?
我运行了一份报告,在该报告中,我遇到了一种情况,即基于基本上是键或 Id 的列值,我需要从映射 Id 表中获取相应的值。像下面这样:
SELECT
(case when [column1='A'] then (select value from Table1)
when [column1='B'] then (select value from Table2)
when [column1='C'] then (select value from Table3)
and so on uptil 35 more 'when' conditions ...
ELSE column1 end) Value
from Table1
Run Code Online (Sandbox Code Playgroud)
更确切地说:
SELECT
(case when [A.column1='1']
then (select value from B where B.clientId=100 and A.column1=B.Id)
when [A.column1='2']
then (select value from C where C.clientId=100 and A.column1=C.Id)
when [A.column1='3']
then (select value from D where D.clientId=100 and A.column1=D.Id)
... …Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2016 来操作一些大型研究数据集。
我一直将恢复模式设置为简单,但它以某种方式不断恢复完整。有关如何使更改永久化的任何指导或建议?
数据价值低、易于重现等,因此无需完全恢复。
在我们的 2 个生产数据库上启用了查询存储,但由于我的 SA 权限被撤销(我暂时将它们用于新服务器),因此我不再有权查看数据库下的查询存储节点。
我找不到任何描述访问查询存储报告所需的最低权限的地方。
是否有可以在 Mac 上安装和运行的 SQL 分析器 MSSSQL?只要它可以在我的 Mac OS 上运行,它是否是付费版本并不重要。谢谢。
我正在尝试使我们的应用程序发送的查询更有效。我稍微修改了 SSMS 中的查询,它将在大约 1 秒内执行。
查询 A
SELECT O.Code AS 'Code', O.[Action] AS 'Action',
SUM(OpenResponseWithin) AS 'OpenResponseWithin',
CONVERT(VARCHAR,convert(decimal(10,2),(((SUM(OpenResponseWithin))*100))/convert(decimal(10,2),(SUM(OpenResponseWithin)+SUM(OpenResponseAfter))))) + '%' AS 'OpenResponseWithinPercentage',
SUM(OpenResponseAfter) AS 'OpenResponseAfter',
CONVERT(VARCHAR,convert(decimal(10,2),(((SUM(OpenResponseAfter))*100))/convert(decimal(10,2),(SUM(OpenResponseWithin)+SUM(OpenResponseAfter))))) + '%' AS 'OpenResponseAfterPercentage',
(SUM(OpenResponseWithin)+SUM(OpenResponseAfter)) AS 'OpenTotal',
SUM(CloseResponseWithin) AS 'CloseResponseWithin',
CONVERT(VARCHAR,convert(decimal(10,2),(((SUM(CloseResponseWithin))*100))/convert(decimal(10,2),(SUM(OpenResponseWithin)+SUM(OpenResponseAfter))))) + '%' AS 'CloseResponseWithinPercentage',
SUM(CloseResponseAfter) AS 'CloseResponseAfter',
CONVERT(VARCHAR,convert(decimal(10,2),(((SUM(CloseResponseAfter))*100))/convert(decimal(10,2),(SUM(OpenResponseWithin)+SUM(OpenResponseAfter))))) + '%' AS 'CloseResponseAfterPercentage',
SUM(CloseNever) AS 'CloseNever',
CONVERT(VARCHAR,convert(decimal(10,2),(((SUM(CloseNever))*100))/convert(decimal(10,2),(SUM(OpenResponseWithin)+SUM(OpenResponseAfter))))) + '%' AS 'CloseNeverPercentage'
FROM Custom_OpenCodeMRC O
WHERE O.ActionDate BETWEEN '10/5/2017' AND '12/4/2017'
AND
O.Code IN ('BERZ20','BERZ21','BERZ24','BERZ50','FTHZ63','YOR56','YOR57')
GROUP BY O.Code,O.[Action]
ORDER BY O.Code,O.[Action]
Run Code Online (Sandbox Code Playgroud)
如果我按照应用程序通过参数传入的方式保留查询,则执行至少需要 20 秒。
查询 …
我一直听说sp_who2很快就会被弃用,不受支持。我们使用的是 SQL Server 2016 Enterprise。
什么是好的官方 Microsoft 替换项目或 DMV 哪个团队应该使用而不是sp_who2?
听说一个是sys.dm_exec_sessions?
最近我注意到我公司的应用程序使用AddWithValue将参数值传递给动态的参数化查询。例子:
cmd.Parameters.AddWithValue("@VehicleId", Vehicles.VehicleId);
Run Code Online (Sandbox Code Playgroud)
在数据库中,该数据类型VehicleID是INT。
据我了解,由于 AddWithValue(已弃用)未指定数据类型/长度,因此此“@VehicleID”被转换并可能被错误转换。在“INT”的情况下,该转换是否会影响 SQL Server 性能?
这会导致计划缓存污染之外的问题吗?转换是否会导致性能下降?
查询存储在 SQL Server 2016+ 和 Azure SQL DB 中可用,默认情况下处于启用状态。对于本地 SQL Server,它必须在每个数据库上单独启动。
创建新数据库时,有没有办法默认启用查询存储?
sql-server-2016 ×10
sql-server ×8
performance ×2
query-store ×2
ado.net ×1
aws ×1
c# ×1
parameter ×1
profiler ×1