我一直在深入研究 SQL Server 查询存储,我经常看到对“临时”查询的引用。但是,我还没有看到查询存储确定临时查询是什么。我见过一些地方,它可以被推断为不带参数的查询或只执行一次的查询。是否存在对此的正式定义?我不是说一般。我的意思是因为它与查询存储有关。
例如,此页面显示了从查询存储中删除临时查询的示例,但它使用的条件似乎只是执行计数为 1。这似乎是临时查询的奇怪定义。顺便说一句,如果您转到该页面,请搜索“删除临时查询”。
我不确定这是否可能,但我希望它是 - 我目前正在运行 SSMS 并且有一个数据库,它的数据全部“存放”在 DBO 模式中。我收到了建议(并且完全同意),最佳实践是创建与我们的业务功能相匹配的其他模式,我将继续推进。
我想知道是否有任何方法 - 即使是通过安装某种加载项,让架构崩溃,以便我可以隐藏所有 DBO 和 RPT 对象,直到我扩展架构 - 很多就像表格和其他文件夹被折叠一样。
如果这个问题不是本网站的“主题”,我深表歉意 - 但我认为这是最有可能知道答案的地方。
在我下面的屏幕截图中 - 我正在寻找要折叠的红色轮廓的位,现在只有 2 行 DBO - 以及我目前请求创建的 RPT:
在我们的环境中,网络存储空间不足。同时,我想确保我们每 15 分钟进行一次事务日志备份,而不是每 6 小时一次。我的问题是将日志备份间隔从 6 小时更改为每 15 分钟会消耗更多磁盘空间吗?
我在 sys.objects 中看到 [Type] 列的奇怪(未记录)值。值为“ST”,如下图(注意,dbo.Record 是一个用户表)
有谁知道这个“ST”值是什么意思?(这是在 SQL Server 2014 开发版中)
我正在尝试获取按查询分组的特定列的所有行的产品。我发现的大多数例子都指向组合exp,sum和log
exp(sum(log([Column A])))
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是该列包含一些值的零,因此当零传递给log函数时我收到此错误:
发生无效的浮点运算。
我以为我可以通过使用case表达式来解决这个问题,但这并不像我认为的那样工作,因为它似乎评估了所有情况......
select
Name,
Product = case
when min([Value]) = 0 then 0
when min([Value]) <> 0 then exp(sum(log(I))) -- trying to get the product of all rows in this column
end
from ids
group by Name
Run Code Online (Sandbox Code Playgroud)
给定以下结果集:
Id Name Value
_________________________________
1 a 1
2 a 2
3 b 0
4 b 1
Run Code Online (Sandbox Code Playgroud)
我希望得到以下行:
Name Product
_____________
a 2
b 0
Run Code Online (Sandbox Code Playgroud)
所以总而言之......你如何乘以可以包含负数或零值的列中的行?
这是我目前在执行查询时得到的sqlcmd:
1> SELECT 1,2,3,4
2> GO
----------- ----------- ----------- -----------
1 2 3 4
(1 rows affected)
Run Code Online (Sandbox Code Playgroud)
虽然在更长的结果的情况下,这种输出格式不是人类可读的,因为它被包装在终端中。
如何垂直显示结果(相当于\Ginmysql)?或者以另一种人类可读的方式?
我有一张大表的 I/O 问题。
该表具有以下主要特征:
这是表的实现:
CREATE TABLE [data].[DemoUnitData](
[UnitID] [bigint] NOT NULL,
[Timestamp] [datetime] NOT NULL,
[Value1] [decimal](18, 2) NULL,
[Value2] [decimal](18, 2) NULL,
[Value3] [decimal](18, 2) NULL,
CONSTRAINT [PK_DemoUnitData] PRIMARY KEY CLUSTERED
(
[UnitID] ASC,
[Timestamp] ASC
)
)
GO
ALTER TABLE [data].[DemoUnitData] WITH NOCHECK ADD CONSTRAINT [FK_DemoUnitData_Unit] FOREIGN KEY([UnitID])
REFERENCES [model].[Unit] ([ID])
GO
ALTER TABLE [data].[DemoUnitData] CHECK CONSTRAINT [FK_DemoUnitData_Unit]
GO
Run Code Online (Sandbox Code Playgroud)
分区与此有关:
CREATE PARTITION SCHEME [DailyPartitionSchema] …Run Code Online (Sandbox Code Playgroud) performance sql-server index-tuning azure-sql-database query-performance
我发现,如果我将 SQL Server 代理作业编写为脚本开头的“创建到”脚本use msdb- 所以我假设作业存储在 msdb 数据库中?
将 SQL Server 作业添加到 Visual Studio 数据库项目的最佳方法是什么?我将 msdb 数据库添加到数据库解决方案中,但这似乎没有对作业的任何引用。
我希望将作业与数据库一起部署/更新......这似乎不可能?
我们有一个第三方应用程序,可以批量发送 T-SQL 语句。
该数据库托管在 SQL Server 2016 Enterprise SP1 CU7、16 核和 256GB 内存上。已启用 Ad-Hoc 优化。
这是正在执行的查询的虚拟示例:
exec sp_executesql N'
IF @@TRANCOUNT = 0 SET TRANSACTION ISOLATION LEVEL SNAPSHOT
select field1, field2 from table1 where field1=@1
option(keep plan, keepfixed, loop join)
select field3, field4 from table2 where field3=@1
option(keep plan, keepfixed, loop join)', N'@1 nvarchar(6)',@1=N'test'
Run Code Online (Sandbox Code Playgroud)
当我监视数据库并查看批处理/秒和编译/秒时,我注意到它们总是相同的。在重负载下,这可以是 1000 批/秒和 1000 次编译/秒。在平均负载下,有 150 个批次/秒。
我分析了最近编译计划的查询缓存:
SELECT TOP (1000) qs.creation_time
, DatabaseName = DB_NAME(st.dbid)
, qs.execution_count
, st.text
, qs.plan_handle
, qs.sql_handle
, qs.query_hash …Run Code Online (Sandbox Code Playgroud) 考虑以下简单的 XML:
<xml>
<customer name="Max">
<email address="me@you.com" />
</customer>
<customer name="Erik">
<email address="erik@your-mom.com" />
</customer>
<customer name="Brent">
<email address="brentcom" />
</customer>
</xml>
Run Code Online (Sandbox Code Playgroud)
我想要得到的名单<Customer>,其中序列address中的属性<email>项并没有包含@。
所以,我希望输出看起来像:
<customer name="Brent">
<email address="brentcom" />
</customer>
Run Code Online (Sandbox Code Playgroud)
麦克维:
DECLARE @x XML = '<xml>
<customer name="Max"><email address="me@you.com" /></customer>
<customer name="Erik"><email address="erik@your-mom.com" /></customer>
<customer name="Brent"><email address="brentcom" /></customer>
</xml>';
Run Code Online (Sandbox Code Playgroud)
这个查询:
SELECT WithValidEmail = @x.query('/xml/customer/email[contains(@address, "@")]')
, WithInvalidEmail = @x.query('/xml/customer/email[contains(@address, "@")] = False');
Run Code Online (Sandbox Code Playgroud)
返回:
????????????????????????????????????????????????????????????
? WithValidEmail ? WithInvalidEmail ? …Run Code Online (Sandbox Code Playgroud) sql-server ×10
performance ×2
backup ×1
case ×1
datatypes ×1
disk-space ×1
index-tuning ×1
metadata ×1
network ×1
query-store ×1
sqlcmd ×1
ssms ×1
xml ×1
xquery ×1