我在 Windows 服务器上的 SQL Server 2008 上有一个数据库,我想将所有数据移动到 Ubuntu 服务器上的 MySQL 数据库。我尝试将 SQL Server 导入和导出向导与 MySQL ODBC 驱动程序一起使用,它可以正确访问两个数据库,但包含类型转换规范的 xml 文件不存在,而且规范太有限,我无法正确创建它们。有谁知道如何创建类型转换文件或从哪里获得更好的工具来传输这些数据?
由于 varchar 占用的磁盘空间与字段的大小成正比,有什么理由我们不应该总是将 varchar 定义为最大值,例如varchar(8000)在 SQL Server 上?
在创建表上,如果我看到有人在做varchar(100)我应该告诉他们不你错了你应该做什么varchar(8000)?
BOL 中的建议相当模糊:
根据需要经常备份 master 以充分保护数据以满足您的业务需求。我们建议定期备份计划,您可以在大量更新后补充额外的备份。
如果你进一步冒险,你会发现这些细节:
导致 master 更新和需要进行备份的操作类型包括以下内容:
- 创建或删除用户数据库。
- 如果用户数据库自动增长以容纳新数据,
master 不会受到影响。- 添加或删除文件和文件组。
- 添加登录或其他与登录安全相关的操作。
- 数据库安全操作,例如向数据库添加用户,不影响master。
- 更改服务器范围或数据库配置选项。
- 创建或删除逻辑备份设备。
- 为分布式查询和远程过程调用 (RPC) 配置服务器,例如添加链接服务器或远程登录。
因此,如果我们所有的登录都是通过 Windows 组添加的,并且我们不对数据库进行任何其他更改,这是否意味着对 master 进行一次备份就足够了?
如果不是,master 数据库的标准备份间隔是多少?
有没有办法在键入查询时暂时禁止 SQL Server Management Studio 的自动完成?我不想完全禁用自动完成功能,只是说在输入特定单词时按住某个键,以免妨碍到它。
例如说我有以下查询
SELECT Foo, Foo2 FROM SomeTable
Run Code Online (Sandbox Code Playgroud)
当我输入Foo并点击空格键时,SQL Server Management Studio 的自动完成开始并完成Foo到FooBar.
我想知道两件事:
每个内核是 1 个文件吗?那么四核 = 4 个 tempdb 文件,创建三个新文件?
提前为非常详细的问题道歉。我已经包含了生成完整数据集以重现问题的查询,并且我正在 32 核机器上运行 SQL Server 2012。但是,我认为这不是 SQL Server 2012 特有的,并且我已将这个特定示例的 MAXDOP 强制为 10。
我有两个使用相同分区方案进行分区的表。在用于分区的列上将它们连接在一起时,我注意到 SQL Server 无法像预期的那样优化并行合并连接,因此选择使用 HASH JOIN 代替。在这种特殊情况下,我能够通过基于分区函数将查询拆分为 10 个不相交的范围并在 SSMS 中同时运行这些查询中的每一个来手动模拟更优化的并行 MERGE JOIN。使用 WAITFOR 精确地同时运行它们,结果是所有查询在原始并行 HASH JOIN 所用总时间的 40% 左右完成。
在等效分区表的情况下,有什么方法可以让 SQL Server 自行进行这种优化?我知道 SQL Server 通常可能会产生大量开销,以便并行执行 MERGE JOIN,但在这种情况下,似乎有一种非常自然的分片方法,开销最小。也许这只是优化器还不够聪明以识别的特殊情况?
以下是设置简化数据集以重现此问题的 SQL:
/* Create the first test data table */
CREATE TABLE test_transaction_properties
( transactionID INT NOT NULL IDENTITY(1,1)
, prop1 INT NULL
, prop2 FLOAT NULL
)
/* Populate table with pseudo-random data (the specific data doesn't …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 SQL Server 导入和导出向导将数据从我的生产数据库复制到我的开发数据库,但是当我这样做时失败并出现错误“插入语句与外键约束冲突”我有超过 40 个表FK 约束,是否有一些简单的方法可以解决这个问题,而不必编写删除约束/添加约束脚本?
编辑:我刚刚发现在我正在运行的 SQL Server 的 Web 版中,DTS 不会让您保存包。
假设我有一个带有 4 个套接字的 SQL Server,每个 NUMA 节点。每个插槽有 4 个物理内核。总共有 512 GB 的内存,因此每个 NUMA 节点有 128 GB 的 RAM。
密钥表被加载到第一个 NUMA 节点中。
假设我们从该表中读取了大量流量。如果拥有 NUMA 节点的插槽的所有物理内核的 CPU 利用率为 100%,这是否会对来自其他插槽的非本地 NUMA 访问成本产生负面影响?或者另一方面是非本地 NUMA 访问的成本与该套接字的繁忙程度无关?
我希望我的问题是有道理的。如果没有,请告诉我,我会尽力澄清。
上周我们的生产服务器出现了数据库问题,我们处理的一些业务似乎比其他业务受到的影响更大。我们有一些逻辑读取的查询需要超过 1 分钟。我们查看了大约 60% 的整体 CPU 利用率。我们没有查看特定于套接字的 CPU 指标。I/O 指标是平均的。
我正在为大表测试不同的体系结构,我看到的一个建议是使用分区视图,将大表分解为一系列较小的“分区”表。
在测试这种方法时,我发现了一些对我来说没有多大意义的东西。当我过滤事实视图上的“分区列”时,优化器只查找相关表。此外,如果我过滤维度表上的那一列,优化器会消除不必要的表。
但是,如果我过滤维度的其他方面,优化器会在每个基表的 PK/CI 上寻找。
以下是相关查询:
select
od.[Year],
AvgValue = avg(ObservationValue)
from dbo.v_Observation o
join dbo.ObservationDates od
on o.ObservationDateKey = od.DateKey
where o.ObservationDateKey >= 20000101
and o.ObservationDateKey <= 20051231
group by od.[Year];
select
od.[Year],
AvgValue = avg(ObservationValue)
from dbo.v_Observation o
join dbo.ObservationDates od
on o.ObservationDateKey = od.DateKey
where od.DateKey >= 20000101
and od.DateKey <= 20051231
group by od.[Year];
select
od.[Year],
AvgValue = avg(ObservationValue)
from dbo.v_Observation o
join dbo.ObservationDates od
on o.ObservationDateKey = od.DateKey …Run Code Online (Sandbox Code Playgroud) 我一直在阅读有关 SQL Server 内部结构的文章,并且每本书或博客都提到了有关反向扫描的内容。
聚集索引的向后扫描不能使用并行性
唯一说某事的帖子是下面的这个帖子。这篇文章说 SQL Server 团队没有实现反向扫描所需的优化。https://www.itprotoday.com/sql-server/descending-indexes
由于叶级页面是使用双向链表链接的,我不明白为什么向后扫描与向前扫描不同。任何澄清真的很感激。