我有一个csv包含 350,000 行的文件。想要按照与csv文件中相同的顺序将数据插入到临时表中。我正在尝试BULK INSERT使用:
BULK INSERT ##AllRows
FROM @FilePath
WITH
(
FIELDTERMINATOR = '\n'
)
Run Code Online (Sandbox Code Playgroud)
不幸的是,BULK INSERT按随机顺序插入数据。我每次执行的标题都在不同的行中。我在 SQL Server 2016 上运行它。是否有可能在旧版本的 SQL Server 中顺序方式有所不同?
使用该FIRSTROW选项不会将标题识别为文件的第一行。文件没有任何我们可以订购的列。在文件中,标题始终位于第一行。
这可能是巧合,但即使如此FIRSTROW=2,我的标题也有可能出现在表格中。我查了一下。看起来csv文件包含的行数越多,插入到表中的机会就越随机。
我想遵循最佳实践。但是,创建一个新的服务帐户(具有最小访问权限且没有特殊权限)然后使用该帐户安装 SQL Server 是否太过分了?
如果我在管理员帐户下进行安装会有什么缺点吗?
旁注:我已经有单独的服务帐户来运行 SQL Server 引擎和 SQL Server 代理服务。
security sql-server installation configuration service-accounts
我有一个包含大约 2 亿条记录的事务表,一个主键聚集在 Id 上,还有 2 个索引:
在继续实际查询以更新统计信息之前,我运行这两条语句
Update STATISTICS dbo.[Transaction] IX_SiloId_ChangedTime_IncludeTime WITH FULLSCAN
Update STATISTICS dbo.[Transaction] IX_SiloId_Time_IncludeContent WITH FULLSCAN
Run Code Online (Sandbox Code Playgroud)
这是我的查询:
DECLARE @Query SiloTimeQueryTableType -- (SiloId, Time) with primary key clustered on SiloId
INSERT INTO @Query VALUES
(1, '2020-12-31'), -- 1000 total values, though it's still the same problem with just one
SELECT t.*
FROM [Transaction] t
INNER JOIN @Query q
ON t.SiloId = q.SiloId
WHERE
t.Time >= q.Time
Run Code Online (Sandbox Code Playgroud)
现在发生的情况是 Sql Server 选择的原因IX_SiloId_ChangedTime_IncludeTime。然后就需要永远。如果我使用,WITH (INDEX(IX_SiloId_Time_IncludeContent))我会立即得到结果。 …
我正在寻求有关 SQL Azure 版本和升级的一些说明。在尝试使用某些特定功能时,我注意到数据库的兼容性级别是 100(我需要 130)。进一步查看后,我发现引擎版本被报告为12.0.2000.8(相当于 SQL Server 2014),但我需要最低引擎版本为 13.x才能使用兼容性级别 130。
我需要做什么来升级此 SQL Azure 实例的引擎版本?在 Azure SQL 数据库中热修补 SQL Server 引擎一文具体指出:
Azure SQL 数据库是常青树,这意味着它始终拥有最新版本的 SQL 引擎
此外,像这样的答案意味着引擎将始终是最新版本,但报告的版本将不正确。
这是否意味着我可以忽略报告的引擎版本并继续设置兼容性级别,或者我需要采取其他步骤来升级引擎?
sql-server database-engine azure-sql-database compatibility-level
我正在开发 SQL Server 实例并使用 Redgate SQL Monitor。我在前 10 个列表中看到一个执行了 1 次的查询,该查询的逻辑读取量比实例的内存多出约 100 倍,而且查询的持续时间只有几分钟。这怎么可能?我的意思是8KB页面乘以逻辑读取次数怎么会比内存多呢?我不明白是什么?
谢谢
重新启动Windows是否也会重新启动SQL Server?
长话短说,我刚刚进行了更改,以便 SQL Server 和 Windows 身份验证用户都可以登录。服务器需要重新启动才能使更改生效,我可以只重新启动计算机而不是服务器吗?
我的服务器存在配置问题,我想更改其中一项设置,以便 SQL 凭据也可以登录(而不仅仅是 Windows 身份验证)。我的管理员说您可以进行任何更改,但不要重新启动 SQL Server。我问我可以重新启动SQL Server所在的Windows服务器吗,他说可以。
重新启动计算机与重新启动 SQL Server 的作用不一样吗?
我正在考虑通过 PowerShell 或任何其他方式设置一个自动化流程,以便在 SQL Server 主机上的磁盘利用率达到 90% 时截断 SQL Server 事务日志文件。
有人有可以做到这一点的代码吗?任何帮助将不胜感激!
注意:我知道这不好,但它仅适用于日志文件
我正在查看执行计划并从右到左阅读它。
例子:
1<-2<-3<-4
^
|_5
Run Code Online (Sandbox Code Playgroud)
所以4和5是并行执行的。当两者都完全完成时,则 3 完全执行,然后 2 完全运行,然后 1。
这是正确的还是可能存在以下情况:
3 甚至在 4 和 5 完全完成之前就开始执行。
2 甚至在 3 完全完成之前就开始执行。
我正在一台机器(不是虚拟机)上运行 2008r2 EE 版本的 SQL Server,该机器具有 4 个插槽的 Intel\xc2\xae Xeon\xc2\xae 处理器 E7-8880 v3,并启用了超线程。我正在尝试验证处理器和 I/O 的关联性,确保我的应用程序可以在更少的内核上运行,因此我手动设置处理器和 I/O 以平衡使用情况,这样就不会同时使用一个内核运营。然而,一旦我到达第三个 NUMA 节点(即 CPU 64),我只能设置处理器关联性的使用,并且 I/O 关联性会变灰。
\n该文档有点令人困惑,因为它引用了 CPU 而不是核心/处理器,但确实引用了必须设置affinity64 选项来控制处理器 33-64,即使在处理器方面似乎可以在即使 I/O 部分不是 UI,也是如此。我没有发现任何内容表明 I/O 只能绑定到系统的前 64 个核心。
\n我有另一个物理盒子,有两个 CPU 插槽,有 16 个物理核心,启用超线程,每个 CPU 提供 32 个核心。在此服务器上,我能够控制所有核心,无论它们是否是超线程。
\n为什么我无法在所有 128 个可见核心上设置 I/O 关联性?和超线程有关系吗?
\n我有疑问:
SELECT
M_nvarchar_3
, MA_nvarchar_40
, W_nvarchar_4
, LB_nvarchar_2
, SUM(ST_decimal_13_3)
, SUM(CW_decimal_13_3)
, SUM(STO_decimal_13_3)
, MAX(GJ_nvarchar_7)
FROM [dbo].[MES]
WHERE L2 = ''
GROUP BY M_nvarchar_3
, MA_nvarchar_40
, W_nvarchar_4
, LB_nvarchar_2;
Run Code Online (Sandbox Code Playgroud)
我创建了NONCLUSTERED FILTERED INDEX这样的:
CREATE NONCLUSTERED INDEX IX_M_nvarchar_3_MA_nvarchar_40_W_nvarchar_4_LB_nvarchar_2
ON [dbo].[MES]
(
M_nvarchar_3 ASC
, MA_nvarchar_40 ASC
, W_nvarchar_4 ASC
, LB_nvarchar_2 ASC
)
INCLUDE
(
ST_decimal_13_3
,CW_decimal_13_3
, STO_decimal_13_3
, GJ_nvarchar_7
)
WHERE L2 = '';
Run Code Online (Sandbox Code Playgroud)
并在上面的查询中有NONCLUSTERED INDEX SCAN。我想在这种情况下得到了NONCLUSTERED INDEX SEEK。你能给点建议吗?
sql-server ×10
index ×2
bulk-insert ×1
csv ×1
installation ×1
powershell ×1
security ×1
t-sql ×1