可能我的设计是错误的,或者只是有更好的方法。我将使用一个非常简单的例子:
--------- dbo.Book----------
| |
| BookID int identity (1,1) |
| ShelfID int FK |--
---------------------------- |
|
--------- dbo.Row----------- |
| | |
--| RowID int identity (1,1) | |
| ---------------------------- |
| |
| -------- dbo.Shelf---------- |
| | | |
| | ShelfID int identity (1,1)|--
--| RowID int FK |
----------------------------
Run Code Online (Sandbox Code Playgroud)
足够简单。
但是如果我想分配一个没有架子的行怎么办?也许我们还知道行而不是货架:
--------- dbo.Book----------
| |
| BookID int identity (1,1) |
| RowID int FK | <-- New
| ShelfID int FK …Run Code Online (Sandbox Code Playgroud) foreign-key database-design sql-server referential-integrity
我已经从 First Responder Kit 安装了 sp_BlitzCache(和其他),并且收到以下错误:
EXEC sp_BlitzCache;
Run Code Online (Sandbox Code Playgroud)
消息 208,级别 16,状态 0,过程 sp_BlitzCache,第 3878 行 [批处理开始第 0 行]
无效的对象名称“#trace_flags”。
所有其他脚本似乎都按预期工作,但我不确定我是否遇到了缺陷,或者它是否与我的使用和/或配置有关。
同样值得注意的是,该过程确实返回了 10 个结果,但随后因上述错误而失败。
我已经在网上和通过存储过程本身做了一些搜索。虽然我很困惑#trace_flags临时表似乎不像其他人那样创建,但我在 GitHub 上找不到似乎表明它曾经有过的代码..所以因为我认为它一直在为其他人工作,所以它导致我相信我假设错误的事情和/或错误地运行它。
先感谢您!无论是为了帮助,还是为了任何参与开发急救箱的人。
我的左表比右表包含更多的商店名称。我以为快速左连接会返回该数据集,但无济于事!
Data In From 子句有最多的选项,我想显示所有这些 Data In Left Join 子句有一些但不是我想显示的所有选项
我创建了 CTE 来获取 SUM() 并将数据拉到主查询中存在于左连接表中
这是我使用的查询,它没有给出我想要的结果。
;With DataFromOne As
(
Select StoreName
,DataFromOne = Count(ramalad)
FROM DataFromOne
WHERE EntryDate BETWEEN '20170101' AND '20170331'
GROUP BY StoreName
)
Select ec.StoreName
,[Emp Count] = COUNT(Employee)
,[PT Count] = COALESCE(ec.DataFromOne,0)
FROM DataFromOne ec
LEFT OUTER JOIN DataFromTwo fji
ON ec.StoreName = fji.StoreName
WHERE fji.saleDate BETWEEN '20170101' AND '20170331'
GROUP BY ec.StoreName, ec.DataFromOne
ORDER BY ec.StoreName ASC;
Run Code Online (Sandbox Code Playgroud) 我使用了 Brent 的 sp_BlitzIndex 并收到了有趣的结果。对于第一次运行,它建议我创建一个索引。我已经完成并再次执行。这次它告诉我们新创建的索引太激进了。有了这个逻辑,DBA 会感觉就像赛马在兜圈子。布伦特,如果我是一匹疯狂的盲马,请给我指路。
这个问题(SQL Server 事务复制分发器)提到了一篇博客文章HERE,其中讨论了分发数据库如何与发布者和订阅者相关的工作方式。看起来很清楚。
这是Distributor一个成熟的 SQL Server 实例吗?我知道它可以在单独的服务器上运行,所以看起来就像这样。如果不是,分发服务器和 SQL Server 实例之间有什么区别?
我从这篇文章中猜想,发布者的事务日志存储在分发数据库中,然后由订阅者读取。这就是所谓的“事务复制”吗?还有其他类型的复制吗?
我是数据库新手,我正在使用 SSMS 2008 R2 从.csv文件中导入 2GB 的数据。
导入大约需要 115 分钟。
任何人都可以让我知道执行此导入的更好方法。
我需要创建一个查询,该查询可以获取上个月未使用的登录详细信息。我尝试了几种方法,如扩展事件和审计跟踪。但是我无法获得上个月未使用的登录列表,请帮我解决这个问题。
我有一个像(SQLServer 2008)的表:
CREATE TABLE [dbo].[my_test_table](
[productId] [int] NOT NULL,
[purchaseId] [bigint] NOT NULL,
(some other columns....),
CONSTRAINT [PK_my_test_table] PRIMARY KEY CLUSTERED
(
[productId] ASC,
[purchaseId] ASC
))
Run Code Online (Sandbox Code Playgroud)
大约有 1000 万行。
我想要一个查询,返回产品的总行数,或者如果产品未指定,则返回所有产品的总行数。就像是:
declare @productId int
set @productId = 320
select count(*)
from my_test_table t with(nolock)
where productId = @productId
or @productId is null
Run Code Online (Sandbox Code Playgroud)
问题是查询比等效查询花费的时间要多得多:
select count(*)
from my_test_table t with(nolock)
where productId = 320
or 320 is null
Run Code Online (Sandbox Code Playgroud)
我们如何解释这种行为?
我很好奇日志序列号 (LSN) 的 3 部分是什么以及它们是如何生成的。
日志序列号是一个不断增加的、由三部分组成的编号,它唯一地定义了日志记录在事务日志中的位置。来源
我环顾四周,发现至少有一个答案说我“不应该关心这些是如何生成的”,但我仍然想知道。
如果我运行,DBCC FILEHEADER ([AdventureWorks2014], 1)我得到的结果会显示我的 AdventureWorks 中一些重要的 LSN
最大LSN
45000000001600001
第一LSN
44000000084000074
重做起始LSN
45000000001600001
它们似乎确实有 3 个不同的部分,它们是什么,它们是什么意思,它们是如何生成的?
是否有任何文档、测试数据或其他证据表明在数据库上启用 TDE 时并行成本阈值 (CTP) 设置可能会影响性能?在不深入研究所有细节的情况下,我们发现在数据库上启用 TDE 后,基准测试出现了一些显着的性能下降,我们正在寻找可能产生影响的任何设置。CTP 当前设置为默认值 5,我知道这并不理想,所以请抵制对我进行惩罚的冲动。
我们还将添加 CPU 并进一步测试,但如果我们可以通过更改 CTP 或其他设置获得更好的性能,那当然比添加 CPU 更好(由于硬件成本以及每个 CPU 的 SQL Server 许可) .
我正在推动更改 CTP 并再次测试,但我希望看看是否有人已经对其进行了测试,以便我们可以相应地优先考虑要测试的更改。
谢谢!
sql-server ×10
t-sql ×2
audit ×1
csv ×1
foreign-key ×1
import ×1
logins ×1
logs ×1
replication ×1
security ×1
ssms ×1