每当我跑步时,sqlcmd我都会收到“找不到命令”
sqlcmd -S localhost -U SA -P '<YourPassword>'
sqlcmd: command not found
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
我读到 SQL Server 2017 现在将包含 PowerBI Server。他们还将 SSRS 移动到不同的安装程序,因此它不会打包在原始 SQL Server 安装中。这是否意味着微软最终会尝试弃用 SSRS?我们的团队是否应该尝试在 PowerBI 中构建新报告并转换以前的 SSRS 报告?
sql-server ssrs business-intelligence powerbi sql-server-2017
从 2012 年开始,SQL Server 文档显示他们支持OFFSET..FETCH我尝试使用的而不是LIMIT.
以下在 PostgreSQL 中可以很好地对结果集进行采样,
SELECT *
FROM ( VALUES (1),(2),(3) ) AS t(x)
OFFSET 0 ROWS
FETCH NEXT 1 ROWS ONLY;
Run Code Online (Sandbox Code Playgroud)
但是,使用 SQL Server,我得到
Msg 153, Level 15, State 2, Line 4
Invalid usage of the option FIRST in the FETCH statement.
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?SQL Server 是否支持标准化的OFFSET.. FETCH?
我在 SQL Server 2017 CU3 上遇到一些奇怪的错误消息。我正在迁移数据库并重新组织文件组。“重组”是指我使用存储过程在新文件组上为对象创建分区函数和分区方案,在分区时重建索引,然后删除分区。
最后我有一些空的文件组。他们的文件被删除。文件组本身也被删除。这在大多数情况下效果很好。但是,对于两个数据库,我删除了文件...留下了一个没有关联文件的文件组,但是
ALTER DATABASE REMOVE FILEGROUP
Run Code Online (Sandbox Code Playgroud)
抛出错误 5042:
无法删除文件组“xyz”,因为它不为空。
我怎样才能摆脱那个空的文件组......可能是什么问题?
我已经阅读了一些常见问题,但是它们在我的系统中不存在:
检查:
SELECT * FROM sys.partition_schemes;
SELECT * FROM sys.partition_functions;
Run Code Online (Sandbox Code Playgroud)
0 行...数据库中没有剩余的分区对象
UPDATE STATISTICS 对于数据库中的所有对象
没有效果
检查文件组上的索引:
SELECT * FROM sys.data_spaces ds
INNER JOIN sys.indexes i
ON ds.data_space_id = i.data_space_id
WHERE ds.name = 'xyz'
Run Code Online (Sandbox Code Playgroud)
0 行
检查文件组中的对象:
SELECT
au.*,
ds.name AS [data_space_name],
ds.type AS [data_space_type],
p.rows,
o.name AS [object_name]
FROM sys.allocation_units au
INNER JOIN sys.data_spaces ds …Run Code Online (Sandbox Code Playgroud)我在我的数据库中使用时态表,当我在 Management Studio 2017 (v17.4 14.0.17213.0) 中右键单击我的表时,我没有在上下文菜单中看到选择前 1000 行(非时态表没有问题)
任何想法如何让这个上下文菜单回来?我感觉这与我运行的 SQL Server 版本有关(SQL 13.1.4001.0 Express Edition)
我在 SQL Server 2017 执行计划中看到过这个警告:
警告:操作导致剩余 IO [原文如此]。实际读取的行数为 (3,321,318),但返回的行数为 40。
这是 SQLSentry PlanExplorer 的一个片段:
为了改进代码,我添加了一个非聚集索引,以便 SQL Server 可以访问相关行。它工作正常,但通常会有太多(大)列包含在索引中。它看起来像这样:
如果我只添加索引而不包含列,如果我强制使用索引,它看起来像这样:
显然,SQL Server 认为键查找比剩余 I/O 昂贵得多。我有一个没有太多测试数据的测试设置(还),但是当代码投入生产时,它需要处理更多的数据,所以我很确定需要某种非聚集索引。
当您在 SSD 上运行时,键查找真的那么昂贵,我必须创建全脂索引(有很多包含列)?
执行计划: https : //www.brentozar.com/pastetheplan/?id=SJtiRte2X它是长存储过程的一部分。寻找IX_BatchNo_DeviceNo_CreatedUTC.
sql-server optimization execution-plan nonclustered-index sql-server-2017
在 PostgreSQL 中,我可以创建一个包含一些测试数据的表,然后在事务中将其迁移到不同类型的新列,从而导致一个表重写COMMIT,
CREATE TABLE foo ( a int );
INSERT INTO foo VALUES (1),(2),(3);
Run Code Online (Sandbox Code Playgroud)
其次是,
BEGIN;
ALTER TABLE foo ADD COLUMN b varchar;
UPDATE foo SET b = CAST(a AS varchar);
ALTER TABLE foo DROP COLUMN a;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
但是,Microsoft 的 SQL Server 中的相同内容似乎会产生错误。比较这个工作db fiddle,其中ADD(列)命令在事务之外,
-- txn1
BEGIN TRANSACTION;
ALTER TABLE foo ADD b varchar;
COMMIT;
-- txn2
BEGIN TRANSACTION;
UPDATE foo SET b = CAST( a AS varchar );
ALTER TABLE …Run Code Online (Sandbox Code Playgroud) 所以我们有一个带有错字的子查询的查询。它缺少 FROM 子句。但是当你运行它时,它不会出错!为什么!?
SELECT
1
,r.id
,'0D4133BE-C1B5-4141-AFAD-B171A2CCCE56'
,GETDATE()
,1
,'Y'
,'N'
,oldItem.can_view
,oldItem.can_update
FROM Role r
JOIN RoleObject oldReport
ON r.customer_id = oldReport.customer_id
JOIN RoleItem oldItem
ON oldReport.id = oldItem.role_object_id
AND r.id = oldItem.role_id
WHERE r.id NOT IN (SELECT
role_id
WHERE role_object_id = '0D4133BE-C1B5-4141-AFAD-B171A2CCCE56')
AND oldReport.id = '169BA22F-1614-4EBA-AF45-18E333C54C6C'
Run Code Online (Sandbox Code Playgroud) 在for T-SQL的文档中CREATE SEQUENCE,可以看到该CREATE SEQUENCE命令没有ORDER参数。
为了进行比较,Oracle 文档CREATE SEQUENCE显示了ORDER/NOORDER选项:
ORDER指定
ORDER以保证按请求顺序生成序列号。如果您将序列号用作时间戳,则此子句很有用。对于用于生成主键的序列,保证顺序通常并不重要。
ORDER如果您将 Oracle 数据库与 Real Application Clusters 一起使用,则仅需要保证有序生成。如果使用独占模式,则始终按顺序生成序列号。
NOORDER指定
NOORDER是否不想保证按请求顺序生成序列号。这是默认设置。
Microsoft SQL Server 是否为SEQUENCEs提供了强排序约束?或者微软一般不认为它很重要?
我正在运行带有 SQL Server 实例的云 VPS。因为它是供个人使用的,所以我使用的是 express 版(我不能使用开发者版,因为我在技术上运行了生产应用程序,而且我买不起 Standard+)。
我正在尝试使用Brent Ozar 的教程使用sp_BlitzFirst. 我遇到的问题是,无论当时的实际 CPU 使用情况如何,ProcessUtilizationinsys.dm_os_ring_buffers总是100以 形式出现。
@@version: Microsoft SQL Server 2017 (RTM-CU15) (KB4498951) - 14.0.3162.1 (X64) May 15 2019 19:14:30 版权所有 (C) 2017 Microsoft Corporation Express Edition(64 位)Linux (Ubuntu 18.04) .2 LTS)
主机: 1 & 1 Ionos VPS
lscpu 输出
Run Code Online (Sandbox Code Playgroud)Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per …
sql-server ×10
sql-server-2017 ×10
ubuntu ×2
ddl ×1
dmv ×1
filegroups ×1
offset-fetch ×1
optimization ×1
powerbi ×1
sp-blitz ×1
ssms ×1
ssrs ×1
t-sql ×1
transaction ×1